多くの新しいハードドライブの物理セクタサイズは4096です。システムにデフォルトの論理セクタサイズ512の代わりに同じサイズの論理セクタサイズを使用させることはできますか?
一括読み書き速度が速くなりますか?どこで設定できますか?
ベストアンサー1
512バイトは実際にはデフォルトのセクタサイズではありません。これはハードウェアによって異なります。
擬似ファイルシステムを使用すると、ディスクによって報告された物理/論理セクタサイズを表示できます/sys
。たとえば、次のようになります。
# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512
これら2つの値の違いは何ですか?
- これは
physical_block_size
、ドライブがアトミック操作として書き込むことができる最小のブロックサイズです。 - これは
logical_block_size
ドライブが書き込むことができる最小サイズです(Linuxカーネルのマニュアルを参照)。
したがって、4Kドライブがある場合は、ストレージスタック(ファイルシステムなど)が物理セクタサイズと同じかそれより大きいものを使用するのが合理的です。
この値は最新バージョンにも表示されますfdisk
。例:
# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes
現在のLinuxディストリビューションでは、最適なセクタサイズを考慮する必要があるプログラムは、デフォルトでmkfs.xfs
最適なセクタサイズ(4096バイトなど)を選択します。
ただし、オプションで明示的に指定することもできます。たとえば、次のようになります。
# mkfs.xfs -f -s size=4096 /dev/sda
または:
# mkfs.ext4 -F -b 4096 /dev/sda
それにもかかわらず、ほとんどのmkfs
バリアントは実行中に使用されたブロックサイズも表示します。
既存のファイルシステムでは、次のコマンドを使用してブロックサイズを確認できます。
# xfs_info /mnt
[..]
meta-data= sectsz=4096
data = bsize=4096
naming =version 2 bsize=4096
log =internal bsize=4096
= sectsz=4096
realtime =none extsz=4096
または:
# tune2fs -l /dev/sda
Block size: 4096
Fragment size: 4096
または:
# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size 4
sys_array_size 97
sectorsize 4096
nodesize 16384
leafsize 16384
stripesize 4096
dev_item.sector_size 4096
パーティションにファイルシステムを作成するときに確認する必要があるもう1つは、パーティションの開始アドレスが実際に物理ブロックサイズと一致するかどうかです。たとえば、出力を見ると、fdisk -l
開始アドレスをバイトに変換し、それを物理ブロックサイズに分割します。パーティションがソートされている場合、リマインダーはゼロでなければなりません。