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


10

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を4Kの倍数でディスクに送信し、これらのブロックが4K境界を超えないことを保証しますか(IOブロックは常に4Kに整列されます)?

次の出力に注意してください(sdb2は私のルートパーティションsdaは私の/homeディスクです)。

# 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

はい。役立つ情報が含まれています。しかし、私は質問に対する信頼できる回答を見つけていません:stat(4K)によって返される情報は、OSが常に IOを4Kの倍数でディスクに送信し、これらのブロックが4K境界を超えないことを保証します(IOブロックは常に4Kに合わせる)?
FedonKadifeli、

「stat(4K)」が何なのかわかりません。しかし、最近のほとんどのOSは、ネイティブ4K I / O転送の処理方法を知っています。いいえ、それは、パーティションが適切に配置されていない限り、ブロックがディスク上の4K境界を決して超えないという意味ではありません。fdisk -l配置の問題を確認するために使用します。SSDの動作は物理的な構造のため、明らかに少し異なりますが、私はその分野の専門家ではありません。
heynnema

回答:


7

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

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

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

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

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


+1ですが、4096/512 = 8なので、4096 bの1つの物理セクターに512 bの8(論理)セクターがあるはずです。parted論理セクターサイズと物理セクターサイズの両方を示すために使用します。
sudodus

@sudodus良いキャッチ。編集を実行しました。
heynnema

これが、パーティションを4kの境界に揃えることが重要な理由です。それ以外の場合、4kブロックのロード/ストアはすべて、実際には2つのハードウェアセクターに影響します。(パーティション内のファイルシステムは、パーティションの先頭に揃えられた4kブロックを使用することがよくあります)。一部のフォーマットツールは、最初のパーティションを1MiBに揃え、パーティションテーブルを除いてMiB全体を未使用のままにします。最近のドライブ、物理セクターサイズを4Kとして報告します、論理セクターサイズは512Bのままです。
Peter Cordes

@PeterCordes、最初のMibibyteには、ブートセクターとパーティションテーブル(最初の512バイト)だけが格納されているわけではありません。MSDOSパーティションテーブルで、grubBIOSモードで起動するための追加コードを最初のMibibyteに配置します。(GPTでは、そのコードがBIOSモードで起動するためgrubbios_grubフラグが設定された小さなパーティションが必要です)。
sudodus

4

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

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


@heynnemaウィキペディアからコピーされているため、「4096バイトセクター」については何もできません。そのため、ウィキペディアと同じままにしておく必要があります。
karel

2
@heynnema:物理的なサイズははるかに大きいです。。SSD年代は、 『消去ブロック「、物理的には、いわゆるに分割されている』 NAND型フラッシュメモリ、から構築されているものははるかに大きくすることができ、4メガバイトは間違いなく可能です。
MSalters

1

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

私のディスクはどちらもSSDであり、AFAIK SSDディスクには4Kのセクターサイズが必要です。これで大丈夫ですか、それとも何か不足していますか?

古いハードウェアとオペレーティングシステムは512バイトセクターを使用していました。2011年以降(ほとんど)すべてのストレージハードウェアは4096(またはそれ以上)バイトセクターを持っています。ただし、一部のハードウェアは、レガシーシステムの512バイトセクターのエミュレーションをサポートしています。例外があります。Samsung840 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)は、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物理セクターサイズの変更による最適なパフォーマンスの獲得 "。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.