web-dev-qa-db-ja.com

LinuxのSSDディスクにデフォルトの512バイトの物理セクターサイズは適切ですか?

GSmartControlおよびその他のコマンドラインツール(fdisksmartctlcat /sys/block/sd*/queue/hw_sector_sizecat /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
10
FedonKadifeli

昔は、512バイトのセクターがディスクの標準でした。システムは一度に1つのセクターしかセクターを読み書きしませんでした、そしてそれは古いハードドライブができる最高でした。

現在、最新のドライブは非常に高密度で高速でスマートなので、一度に1つのセクターのみを読み書きすると、全体のスループットが実際に遅くなります。

秘訣は...総スループットをどのように高速化しながら、古い/標準のディスクサブシステムとの互換性を維持するかです。 8つの512バイトの物理セクターで構成される4096のブロックサイズを作成します。 4096は現在、ディスクとの間の最小の読み取り/書き込み転送ですが、互換性のある512バイトのチャックでOSに渡されます。

これは、システムが512バイトセクターの情報を1つしか必要としない場合でも、ドライブはそれを得るために8つの512バイトセクターを読み取ることを意味します。ただし、システムが次の7つのセクターを必要とする場合は、すでにセクターが読み込まれているため、ディスクI/Oを実行する必要はありません。そのため、総スループットが向上します。

最新のオペレーティングシステムは、最新のドライブのネイティブ4Kブロックサイズを十分に活用できます。

7
heynnema

ウィキペディアによれば、「アドバンスドフォーマット(AF)は、アドバンスドフォーマットドライブ(AFD)の4096バイトセクターなど、セクターあたり512、520、または528バイトを超えるディスクドライブにデータを格納するために使用されるディスクセクターフォーマットです。」 Advanced Format(AF)は、512バイトではなく4,096バイトのセクターサイズをネイティブに使用するディスクフォーマットです。レガシーシステムとの互換性を維持するために、AFディスクは512バイトのセクターサイズをエミュレートします。

2つのSSDでstat -fsmartctlを実行した場合と同じ結果が得られました。両方のSSDは、インストール時にOSによって自動的に認識され、ゼロ構成が必要なため、取得したデータは、ブロックサイズとセクターサイズのデフォルト設定であるように見えます。

4
karel

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物理セクターサイズの変更により最適なパフォーマンスを得る "。

1
Rob