問題タブ [block-device]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - パーティションなしでブロック デバイスに直接ファイル システムを作成しますか?
私は、ブロックデバイスが の下/dev
にリストされているという印象を受けました。たとえば/dev/xvdf
、ファイルシステムは、パーティションが存在するブロックデバイスの後ろに番号が付けられてリストされているパーティションに存在し、/dev/xvdf1
すべてのファイルシステムはパーティションに存在する必要があります。 .
CentOS を実行しており、コースの一環として、ファイル システム、パーティションを作成し、ファイル システムをマウントする必要があります。このコースでは、デバイス ファイルにファイル システムを作成し、/dev/xvdf
このファイル システムをマウントしました。それに加えて/dev/xvdf
、 のファイル名でパーティション/dev/xvdf1
を作成し、このパーティションにもファイル システムを作成して、このファイル システムをマウントしました。これは私を混乱させ、いくつか質問があります:
- ブロック デバイス上にパーティションを作成する必要はなく、ブロック デバイス上にパーティションなしでファイル システムを直接作成できるというのは正しいですか?
- もしそうなら、なぜ誰もこれをやりたいのですか?
- 上にファイル システムを作成した後、 fdisk を使用し
/dev/xvdf
てパーティションを作成し、/dev/xvdf1
この新しいパーティションに最大ブロック数を割り当てました。ただし、ファイル システム/dev/xvdf
は削除されておらず、まだファイルが残っていました。すべてのブロックがパーティション/dev/xvdf
に割り当てられている場合、これはどのように可能ですか?/dev/xvdf1
kernel - Linux ブロック デバイス - 簡単な例を探す
私はLinux仮想ブロックデバイスを試していました。私の要件は、 cat /dev/mydevice を実行しているときに、カーネルプログラムで作成した文字列を返す必要があることです(ドライブにデータを書き込む必要はありません。基本的にブロックデバイスを作成するのに役立ちますブロックデバイスの仕組みを理解するために)。
このブログで提供されている例を試してみました。しかし、 cat /dev/sbd0 を実行すると、無限ループになります。また、ブロック ドライバーでフローがどのように発生するかを理解するために、ブロック ドライバーのどのメソッドからもログを取得していません。
Linuxカーネルのブロックデバイスでフローがどのように発生するかを説明できますか?.
また、Link+ エディタを試しましたが、Link+ の例にサンプル ブロック デバイスが見つかりませんでした。多くの sbd.c プログラムをオンラインで見ることができましたが、ライブラリが最新のカーネルと互換性があるため、ほとんどがコンパイルされませんでした (私は Linux 初心者です)。
私が使用しているカーネルは、Ubuntu 16.04 の 4.4 です。
c++ - ブロックデバイス (/dev/sda) & fopen/fstream
ブロックデバイス (HDD など) を直接開くときに、何か特別なことをしたり、考慮したりする必要がありますか?
通常のfopen
and/or std::fstream
(およびそれらに関連するtell
/ seek
/ read
/write
関数) または特別な関数/クラスを使用する必要がありますか?
それらは真にランダムなシークを許可していますか、それとも一度にブロック全体を読み取ることに厳密な制限がありますか? 前者の場合、(「通常の」ファイルシステムでのファイルの同じ種類の読み取りと比較して) ブロック単位の読み取りを行わないと、パフォーマンスが大幅に低下しますか?
これは OS-X で、近い将来には他の POSIX ベースの OS (BSD カーネルではなく Linux カーネルを使用) で、stl
利用可能な場合は主にクラスを使用します。