多くの新しいハードドライブディスクでは、物理セクターサイズは4096です。システムにデフォルトの論理セクターサイズ512ではなく、同じサイズの論理セクターサイズを使用させることは可能でしょうか?
一括読み取りと書き込みが高速化されますか?
どこで構成できますか?
承認された回答:
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
を見てください。 出力し、開始アドレスをバイトに変換し、それらを物理ブロックサイズで除算します。パーティションが整列している場合、リマインダーはゼロである必要があります。