web-dev-qa-db-ja.com

パーティション番号なしのmkfsで問題ありませんか?

ペンドライブと1つのパーティションがあります。

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
└─sda1   8:1    0 931.5G  0 part /
sdb      8:16   1   7.5G  0 disk 
└─sdb1   8:17   1   7.5G  0 part

そして、私はコマンドでフォーマットしました:

   # mkfs.fat -n A /dev/sdb

そしてそれはうまくいきます。

しかし、その後、mkfsのmanページを読み飛ばしました。

   mkfs is used to build a Linux filesystem on a device,  usually  a  hard
   disk  partition.   The  device argument is either the device name (e.g.
   /dev/hda1, /dev/sdb2),  or  a  regular  file  that  shall  contain  the
   filesystem.   The  size argument is the number of blocks to be used for
   the filesystem.

mkfsはパーティション番号で動作するはずです。そして私の問題は、私の操作がエラープロンプトなしで機能する理由です?

10
Alaneuler

パーティションではなくディスク全体にファイルシステムを作成することは可能ですが、珍しいことです。これは最も一般的なケースであるため、ドキュメントでは明示的にパーティションについてのみ言及しています(は通常と表示されています)。固定サイズのファイルのように十分に機能するファイルシステムを作成できます。つまり、特定の場所でデータを書き込み、同じ場所から読み戻すと、同じデータが返されます。これには、ディスク全体、ディスクパーティション、およびその他の種類の ブロックデバイス 、および通常のファイル(ディスクイメージ)が含まれます。

mkfs.fat -n A /dev/sdbを実行すると、そのディスクにはパーティションがなくなります。カーネルはパーティションテーブルがメモリにキャッシュされているため、ディスクにはパーティションがあるとまだ認識していることに注意してください。ただし、/dev/sdb1はもう存在しないため、使用しないでください。 /dev/sdb/dev/sdb1の一部であるため、これに書き込むと/dev/sdbで作成したファイルシステムが破損します(最初は数百バイトを除くすべて)。コマンドpartprobeをrootとして実行し、カーネルにパーティションテーブルを再度読み取るように指示します。

ディスク全体にファイルシステムを作成することは可能ですが、お勧めしません。一部のオペレーティングシステムでは問題が発生する可能性があり(Windowsでは対応できると思いますが、カメラなどの一部のデバイスでは対応できない場合があります)、他のパーティションを作成する可能性が失われます。参照 パーティションレスファイルシステムのメリット

デバイスに複数のファイルシステムを配置する予定がない場合は、パーティションを分割してフォーマットするのではなく、ファイルシステムをデバイス全体に配置するのが一般的には問題ありません。あなたは単に一貫している必要があります。 _sda1_ではなくsdaにファイルシステムを配置したため、_sda1_がまったく存在しないため、sdaもマウントする必要があります。

あなたの質問のデバイスは、FAT形式のリムーバブルドライブのようです:ファイルシステムをマウントする方法について多少詳細な概念がある可能性がある組み込みデバイスで使用する場合は、それらをテストする価値があるかもしれません実際には、パーティションテーブルのないデバイス全体のファイルシステムをサポートしています。 (たとえば、カメラは単一のパーティションを作成してそれをフォーマットする傾向があります。パーティションレスのメモリカードを使用できないと宣言することは完全に可能です。)

8
dhag