外部SSDのすべてのファイルは、どんなに小さくても少なくとも1MBを占めます。これをどのように変更できますか?

外部SSDのすべてのファイルは、どんなに小さくても少なくとも1MBを占めます。これをどのように変更できますか?

Sandisk USB SSDがサーバーに接続されています(正確なモデルがわからず、そこには見つかりませんlsusb -v)。によると、ゼロ以外のサイズのファイルを作成するたびにdu

$ echo "foobar" > test
$ du -h test
1.0M    test
$ du --apparent-size -h test
7   test

私はこれがデバイスのブロックサイズに関連していて、ブロックサイズは通常1 MBではなく4096バイト程度であることを読んでいます。ディスクにはるかに小さなファイルがたくさんあるため、スペースの90%が無駄になります。

の出力はfdisk次のとおりです。

sudo fdisk -l /dev/sda
Disk /dev/sda: 931.5 GiB, 1000204140544 bytes, 1953523712 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: dos
Disk identifier: 0x007fa07a

Device     Boot Start        End    Sectors   Size Id Type
/dev/sda1        2048 1953523711 1953521664 931.5G  7 HPFS/NTFS/exFAT

これを解析する方法がわかりません。 NTFS形式という意味ですか?df -Tとして報告してくださいfuseblk

これは単にドライブをフォーマットする問題ですか?ブロックサイズを選択できますか?それとも、常にハードウェアによって決まりますか?

答え1

あなたは見ています割り当て単位サイズファイルシステムとも呼ばれるブロックサイズファイルシステムレベルで。ただし、これはハードウェアデバイスレベルで使用されるブロックサイズと必ずしも同じではなく、割り当て単位のサイズは確かにハードウェアブロックサイズの正確な倍数でなければなりません。それ以外の場合は非効率的です。

Linux の場合、パーティションテーブルに表示されるファイルシステムの種類は意味がありません。タイプは、パーティション内の実際のデータを調べることによって自動的に検出されます。ただし、他のオペレーティングシステムでは、パーティションテーブルにファイルシステムの種類を正しく表示することが役に立ちます。

fuseblkファイルシステムがFUSEユーザースペースファイルシステムドライバによって処理されることを示します。残念ながら、ntfs-3gFUSEドライバはNTFS()とexFATの両方に存在するため、ここではあまり役に立ちません。少なくともDebian / Ubuntuでは、次のことを実行できますpgrep -a mount。出力が次の場合

<process ID> /sbin/mount.ntfs-3g /dev/sda1 <mountpoint of the filesystem> -o <some options>

まあ、それはntfs-3gドライバによって処理されており、明らかにNTFSです。出力行にはexFAT/sbin/mount.exfat-fuseまたは同様のものを含める必要があります(テスト用の実際のexFATファイルシステムはありません)。

ただし、exFATもファイルシステムの作成時に指定しない限り、1 MBの割り当て単位サイズを使用しないでください。マイクロソフトによると、32GBを超えるディスクのデフォルトのexFAT割り当て単位のサイズは128KBでなければなりません。

関連情報