Advanced Format

提供: ArchWiki
2022年11月15日 (火) 16:54時点におけるAshMyzk (トーク | 投稿記録)による版 (→‎WD Green HDD に関する特記事項: 削除)
ナビゲーションに移動 検索に移動

すべてのストレージデバイスには、使うことのできる最小の記憶単位が存在します。この利用可能な最小単位は一般にセクタと呼ばれており、従来のストレージデバイスの回転部品を最小に分割したものでした (ソリッドステートドライブはメモリセルを使用し、最小単位はページです)。[1] を参照してください。

異なるストレージデバイスは、異なるセクタサイズを使用します。2011 年以降、最近のハードディスクドライブは通常 (512 バイトではなく) 4 KiB セクタを使用します。ソリッドステートドライブは、複数のフォーマットをサポートしていることがあります。

異なる「レイヤー」(つまり、デバイス / スタックされたブロックデバイス / ファイルシステム) 間で同じセクタサイズを使用するべきです。同じセクタサイズを使わない場合、ファームウェアがファイルシステムのセクタと物理ドライブのセクタとの間でマッピングを行わなければなりません。これは通常、変換レイヤーによって透過的に行われますが、これは回避可能なオーバーヘッドであり、そうすることでパフォーマンスが向上します。

イントロダクション

Advanced Format は伝統的な512バイトのセクタの代わりに4キロバイトのセクタを使うことでオーバーヘッドを減らします。古いフォーマットでのフォーマットの使用効率は 87% でした。Advanced Format ではフォーマットの効率を 96% まで高まり、ディスクの容量が最大で 11% 増えることになります。2014年までに、4k セクタは次世代の HDD の標準になる予定です。

さらに詳しい説明

4096バイトセクタの背景には各トラックのビット密度を上げるという狙いがあります。データセクタの間には Sync/DAM と ECC (Error Correction Code) 情報が挟まっているので、その間隙の数を減らすのです。512バイトセクタが8つあれば、トラックには8つの隙間が存在することになります。

セクタのサイズを4096バイト (8 x 512バイト) にすることで、データセクタのギャップは一つだけになり、複数の Sync/DAM と ECC ブロックを用意するのに必要なオーバーヘッドを省くことができ、同時にビット密度が高まります。

Linux のパーティショニングツールはデフォルトでは各パーティションをセクタ 63 から開始するため、4K セクタサイズを使用する HDD でトラックの最初から 4K セクタを使うようにアライメントされず、思うような性能が出せません。

外部リンク

4k セクタを使用している HDD のモデル

2011年6月現在、"Advanced Format" または 4k セクタをサポートしている HDD の数は以下のように限られています。

以下のリストに記載されているドライブは全て物理セクタのサイズが4096バイトです。ただし全てのドライブがセクタサイズを正しく OS に報告するわけではありません。(ATA-8 規格の新しいフィールドで) 報告される実際の値を、表の中では報告される物理セクタサイズとして示しています。パーティショニングツールはこの値を使ってアライメントを行うため、間違ってアライメントされる問題が起こらないようにセクタサイズを 4096 にする必要があります。

論理セクタサイズはデータの転送に使われるセクタサイズです。この値はディスクの LBA セクタの数だけ倍加されてディスクの容量になります。そのため、論理セクタが4096バイトのディスクでは、論理セクタが512バイトの同じ容量のドライブと比べて最大 LBA が少なくなります。(2009年以前にリリースされた) 旧式のオペレーティングシステムとの互換性は論理セクタが512バイトのドライブの方が良好ですが、発揮できるパフォーマンスは論理セクタが4096バイトのドライブの方が少しだけ上になります (例: NCQ バッファにより多くの読み書きリクエストを収納できる)。

メーカー モデル 容量 報告されるセクタサイズ (バイト)
論理 物理
3.5"
Samsung HD204UI 2.0 TB 512 512
Seagate ST3500413AS 500.0 GB 512 512
Seagate ST500DM002 500.0 GB 512 4096
Seagate ST1000DL002 1.0 TB 512 4096
Seagate ST1000DM003 1.0 TB 512 4096
Seagate ST1000DM010 1.0 TB 512 4096
Seagate ST2000DL003 2.0 TB 512 512
Seagate ST2000DM001 2.0 TB 512 4096
Seagate ST3000DM001 3.0 TB 512 4096
Seagate ST4000DM000 4.0 TB 512 4096
Seagate ST4000DM005 4.0 TB 512 4096
Seagate ST4000VN000 4.0 TB 512 4096
Western Digital WD3000F9YZ 2.0 TB 512 4096
Western Digital WD30EZRX 3.0 TB 512 4096
Western Digital WD20EZRX 2.0 TB 512 4096
Western Digital WD30EZRSDTL 3.0 TB
Western Digital WD25EZRSDTL 2.5 TB
Western Digital WD20EARX 2.0 TB 512 4096
Western Digital WD20EFRX 2.0 TB 512 4096
Western Digital WD30EFRX 3.0 TB 512 4096
Western Digital WD40EFRX 4.0 TB 512 4096
Western Digital WD60EFRX 6.0 TB 512 4096
Western Digital WD10EARS 1.0 TB
Western Digital WD15EARS 1.5 TB 512 4096
Western Digital WD20EARS 2.0 TB 512 4096 または 512
Western Digital WD10EURS 1.0 TB
Western Digital WD8000AARS 800.0 GB
Western Digital WD6400AARS 640.0 GB
2.5"
Samsung ST1000LM024 1.0 TB 512 4096
Samsung ST2000LM003 2.0 TB 512 4096
Seagate ST320LT007 320 GB 512 4096
Seagate ST9750420AS 750 GB 512 4096
Seagate ST1000LM014 1.0 TB 512 4096
Seagate ST4000LM016 4.0 TB 512 4096
Western Digital WD10JPVT 1.0 TB 512 4096
Western Digital WD10TPVT 1.0 TB
Western Digital WD7500BPVT 750.0 GB
Western Digital WD7500KPVT 750.0 GB
Western Digital WD6400BPVT 640.0 GB
Western Digital WD5000BPVT 500.0 GB
Western Digital WD3200BPVT 320.0 GB
Western Digital WD2500BPVT 250.0 GB 512 4096
Western Digital WD1600BPVT 160.0 GB
Western Digital WD7500BPKX 750.0 GB 512 4096
TOSHIBA MQ01ABD100 1.0 TB 512 4096
TOSHIBA MQ01ABC150 1.5 TB 512 4096
ノート: これを読んだらぜひ表に HDD を追加してください。

HDD が 4k セクタを使用しているかどうか判断する方法

ハードディスク (例: /dev/sdX) の物理・論理セクタサイズは以下の sysfs エントリで確認することができます:

$ cat /sys/class/block/sdX/queue/physical_block_size
$ cat /sys/class/block/sdX/queue/logical_block_size

以下のツールは (ドライブが正しい値を報告しているのを前提として) ドライブの物理セクタを報告します:

  • smartmontools (5.41 から; smartmontools -a, 情報セクション)
  • hdparm (9.12 から; hdparm -I, 設定セクション)

USB 接続のディスクでも上記のツールは使えます (USB ブリッジが SAT、別名 SCSI/ATA Translation または ANSI INCITS 431-2007 に対応している場合)。

パーティションのアライメント

ノート: 現在アライメントを手動で設定する必要はありません。最新バージョンの libblkid を利用するツールなら Advanced Format を自動的に扱うことができます。

アライメントをサポートするツールのバージョンは以下の通りです:

  • fdisk (util-linux >= 2.15)。‘-c -u’ を使って起動することで DOS との互換性を無効化してシリンダーの代わりにセクタを使うことができます。
  • parted (parted >= 2.1)。
  • mdadm (util-linux >= 2.15)。
  • lvm2 (util-linux >= 2.15)。
  • mkfs.{ext,xfs,gfs2,ocfs2} は全て直接 libblkid に対応しています。

詳しくは このページ を参照してください。

パーティションのアライメントを確認

ノート: 以下のコマンドは MBR でのみ使えます。GPT では出来ません。
# fdisk -lu /dev/sda
...
# Device     Boot      Start   End         Blocks      Id System
# /dev/sda1            2048    46876671    23437312    7  HPFS/NTFS

2048 (fdisk 2.17.2 からのデフォルト) が正しく HDD がアライメントされている証拠です。8 で割れる値なら問題ありません。

GPT (推奨)

GPT パーティションテーブルを使用する場合、gdisk を使ってパーティションを作成するだけでデフォルトでアライメントされます。SSD#パーティションアライメント を見てください。