GSmartControlおよびその他のコマンドラインツール(fdisk
、smartctl
、cat /sys/block/sd*/queue/hw_sector_size
、cat /sys/block/sd*/queue/physical_block_size
など)私の両方のディスクで同じ:
Sector Size: 512 bytes logical/physical
これは、デフォルトのUbuntu 18.10(後で19.04にアップグレード)インストールです。ただし、両方のディスクのstat -f
コマンドは次のように報告します。
Block size: 4096 Fundamental block size: 4096
私のディスクはどちらもSSDとAFAIKですSSDディスクには4Kのセクターサイズが必要です。これで大丈夫ですか、それとも何か不足していますか? stat
(= 4K)によって返される情報は、OSが常にIOをディスクにmultiple 4Kのそしてこれらのブロックはnever4K境界を越えます(IOブロックは常に4Kに整列されます)?
次の出力に注意してください(sdb2
はmyrootパーティション、sda
はmy /home
disk):
# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....
Device Start End Sectors Size Type
/dev/sdb1 2048 1050623 1048576 512M EFI System
/dev/sdb2 1050624 500117503 499066880 238G Linux filesystem
# df / /home
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb2 244568380 17799136 214276188 8% /
/dev/sda 479670976 129685112 325550152 29% /home
昔は、512バイトのセクターがディスクの標準でした。システムは一度に1つのセクターしかセクターを読み書きしませんでした、そしてそれは古いハードドライブができる最高でした。
現在、最新のドライブは非常に高密度で高速でスマートなので、一度に1つのセクターのみを読み書きすると、全体のスループットが実際に遅くなります。
秘訣は...総スループットをどのように高速化しながら、古い/標準のディスクサブシステムとの互換性を維持するかです。 8つの512バイトの物理セクターで構成される4096のブロックサイズを作成します。 4096は現在、ディスクとの間の最小の読み取り/書き込み転送ですが、互換性のある512バイトのチャックでOSに渡されます。
これは、システムが512バイトセクターの情報を1つしか必要としない場合でも、ドライブはそれを得るために8つの512バイトセクターを読み取ることを意味します。ただし、システムが次の7つのセクターを必要とする場合は、すでにセクターが読み込まれているため、ディスクI/Oを実行する必要はありません。そのため、総スループットが向上します。
最新のオペレーティングシステムは、最新のドライブのネイティブ4Kブロックサイズを十分に活用できます。
ウィキペディアによれば、「アドバンスドフォーマット(AF)は、アドバンスドフォーマットドライブ(AFD)の4096バイトセクターなど、セクターあたり512、520、または528バイトを超えるディスクドライブにデータを格納するために使用されるディスクセクターフォーマットです。」 Advanced Format(AF)は、512バイトではなく4,096バイトのセクターサイズをネイティブに使用するディスクフォーマットです。レガシーシステムとの互換性を維持するために、AFディスクは512バイトのセクターサイズをエミュレートします。
2つのSSDでstat -f
とsmartctl
を実行した場合と同じ結果が得られました。両方のSSDは、インストール時にOSによって自動的に認識され、ゼロ構成が必要なため、取得したデータは、ブロックサイズとセクターサイズのデフォルト設定であるように見えます。
LinuxのSSDディスクにデフォルトの512バイトの物理セクターサイズは適切ですか?
私のディスクはどちらもSSDであり、AFAIK SSDディスクには4Kのセクターサイズが必要です。これで大丈夫ですか、それとも何か不足していますか?
古いハードウェアとオペレーティングシステムは512バイトセクターを使用しました、 2011年以降 (ほぼ)すべてのストレージハードウェアは4096(または 大きい) )バイトセクター;ただし、一部のハードウェアは、レガシーシステムの512バイトセクターのエミュレーションをサポートしています。例外はありますが、Samsung 840 EVO SSDには サイズ2048 KB のブロックがあります。
エラー修正コード (ECC)は512バイトのチャンクごとに計算され、ご想像のとおり、ECCデータにはストレージスペースも必要です。言うまでもなく、ECCアルゴリズムが変更されない場合、1つの4096バイトセクターで必要なECC情報は8つの512バイトチャンクよりも少なくなります。最終的には、ECCデータのオーバーヘッドが少なくなるため、ハードドライブの総ストレージ容量が増加します。
他のキー数値(x86メモリページや多くのファイルシステムクラスターなど)も4 KBサイズを採用しているため、4Kセクターを使用することはアーキテクチャの観点から理にかなっています。 Advanced Formatでは、より堅牢なECCアルゴリズムを使用できます。これは、容量の増加に照らして重要です。コントローラは、NANDフラッシュメモリのエラー特性とワークロードの動作を理解することで、エラー修正を超える 追加のテクニック を採用しています。
Advanced Format(AF)は、ハードディスクドライブ(HDD)の磁気ディスクにデータを保存するために使用されるディスクセクターフォーマットで、セクターごとに512、520、または528バイト(4096、4112、4160、4224バイト( Advanced Format Drive(AFD)の4 KBのセクター。セクターが大きいほど、強力なエラー修正アルゴリズムを統合して、より高いストレージ密度でデータの整合性を維持できます。
SCSI(SAS)ディスクの場合、SCSI T10が標準化された データ整合性フィールド と論理的な不良ブロックチェックにより、RAIDブロックサイズはJBODブロックサイズよりも大きくなります。データとともに各ブロックに格納されます。 SAS RAIDアダプターは、512バイトのデータまたは4Kバイトのデータに基づくディスクブロックをサポートします。512ディスクのRAIDブロックサイズは、セクターあたり528バイトで、4KディスクのRAIDブロックサイズです。セクターあたり4224バイトです。
回転ディスクではなくメモリに書き込んでいるので、物理セクターサイズは パーティションの消去ブロックサイズ に合わせて確保するよりも効果が小さくなります。それでも、最新のソフトウェアとハードウェアを用意し、4Kセクターサイズを使用するのが最善です。
より大きなセクターサイズはIntelによって推奨されています-" SSD物理セクターサイズの変更により最適なパフォーマンスを得る "。