物理セクタサイズ4096 HDDに合わせて論理セクタサイズを最適化

物理セクタサイズ4096 HDDに合わせて論理セクタサイズを最適化

多くの新しいハードドライブの物理セクタサイズは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開始アドレスをバイトに変換し、それを物理ブロックサイズに分割します。パーティションがソートされている場合、リマインダーはゼロでなければなりません。

答え2

いいえ、できません。下痢 それでも構いません。それにもかかわらず、IOは通常少なくとも4096バイト単位で実行され、それよりも多くの場合があります。

答え3

はい、可能です。ただし、これを行うと、ドライブは予想よりはるかに早くいっぱいになります。 512K未満のファイルの場合、各ファイルは4096K(4MB)全体を占め、セクタの残りの部分をゼロで埋めます。これは、ほとんどのファイルシステム(NTFSなど)では、ファイルがセクタを共有することを許可できないためです。ファイルシステムの最良の選択肢は可変セクタサイズを可能にすることですが、これはマスターファイルテーブル(MFT)のサイズを増やし、データ破損のリスクを高めるとともに、データを簡単に回復する機能を減らします。つまり、回復ソフトウェアは境界を完全に理解できません。したがって、4096K論理セクタサイズは大容量ファイルに適していますが、日常のPCでは0にすぎません。データが論理セクタサイズより小さい場合、MFT自体にデータを保存するオプションがあります。ただし、これはMFTが巨大になり、データが2回記録されることを意味します(HDDには2つのMFTコピーがあります)。また、MFTの最大サイズを指定する必要があります。これは、最大サイズに達した場合、またはドライブ使用量がMFTに使用可能なスペースを超えると問題を引き起こす可能性があります。これらはすべてNTFSファイルシステムの使用に基づいています。利点として、NTFSを使用すると、論理セクタサイズが4MB以下のファイルに対してブロックレベルでデフォルトの圧縮を使用できます。この制限は、NTFS圧縮がどのように機能するかによって発生します。論理セクタサイズにかかわらず、4MBブロックを読み込んで圧縮します。もちろん、セクタサイズが4MBを超えると、境界を超えてデータが失われるため、これは発生しません。

さて、これはあなたに少し明確ですか?

答え4

Sector:

1) Logical Sector: Called Native Sector.

Manufacture default setting. user cannot change.

Before 2010 year: 512b/sector

After 2010 year: 4k/sector.

Few manufacture provide HDD tool to change native sector.

2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)

User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.

(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)

(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)

3) File system deal with Physical sector(or block or Cluster) only.

関連情報