web-dev-qa-db-ja.com

ハードドライブが物理セクターサイズを報告するポイントは何ですか?

2つの異なる方法でOSに物理セクターサイズを報告するように構成できるSSDがあります。

オプション1:論理= 512バイト、物理= 512バイト

オプション2:論理= 512バイト、物理= 4096バイト(4K)

4Kの物理セクターサイズを認識することで、OSはどのようなメリットを享受できますか。

  • OSは512バイトのセクターでドライブと通信する必要があります

  • 最新のすべてのOSは4Kに対応し、4Kまたは4K I/Oの倍数を利用します。

最近のOSはすでに4Kセクタードライブ用に最適化されているため、この設定は無意味に思われます。 OSはデフォルトですべてを4Kに適した方法で実行するため、最近のOSでは、セクターが512bでも4Kでもドライブに「問い合わせ」る必要はありません。

たとえば、Windows 7はパーティションを1MB(4Kの倍数)に揃え、NTFSクラスターサイズは4Kまたはその倍数であり、すべてのI/Oは4Kまたはその倍数で行われます。 Windowsはあなたが持っているハードドライブを気にしません、それは上記の振る舞いをすべての場合に適用します。

とにかく...私のSSDにはこの「物理セクターサイズ」設定があるので、何らかの理由でそこにある必要があります...これが私が探している理由です。

ところで、価値があるのは、ドライブが Intel SSD DC S351 であるということです。ドライブの datasheet はこれを示しています(27ページ):

State = 0、Option = 1でSCTコマンド0xD801を使用すると、IDワード106を0x6003から0x4000に変更できます(4KBの物理セクターサイズから512Bの物理セクターサイズサポートの変更)。

14
misha256

512バイトのエミュレーションは、古いシステムとの互換性を目的としています。ただし、物理4Kセクターの一部のみを含む書き込みは、実際に書き込む前にセクターを読み取り、変更する必要があるため、パフォーマンスが低下する可能性があります。

レガシーオペレーティングシステムがAdvanced Formatディスクに書き込もうとすると、書き込まれた論理セクターが物理セクターと一致しない場合があるため、パフォーマンスの問題が発生する可能性があります。

  • 4K物理セクターの一部のみが読み取られる場合、データは単に物理セクターから読み取られ、パフォーマンスの低下はありません。ただし、システムが物理セクターのpart(たとえば、物理セクター全体ではなくエミュレートされた512バイトセクター)に書き込もうとすると、ハードドライブは全体を読み取る必要があります。物理セクター、ハードドライブの内部メモリの変更された部分を変更し、プラッタに書き戻します。これは read-modify-write [〜#〜] rmw [〜#〜] )と呼ばれ、追加の操作が必要です。ディスクが回転するため、パフォーマンスが低下します。 Seagateはこれを次のように説明しています

[...]ハードドライブは、最初にホスト書き込み要求のターゲット位置を含む4Kセクター全体を読み取り、既存のデータを新しいデータとマージしてから、4Kセクター全体を再書き込みする必要があります。

Read-modify-write cycle

この場合、ハードドライブは4Kセクターを読み取り、内容を変更してからデータを書き込むという形で、追加の機械的手順を実行する必要があります。このプロセスは、読み取り-変更-書き込みサイクルと呼ばれ、ハードドライブのパフォーマンスに悪影響を与えるため、望ましくありません。

4K境界に揃えられていないディスクパーティションも、パフォーマンスの低下を引き起こす可能性があります。

  • 従来、ハードディスクの最初のパーティションはセクター63から始まります。WindowsXPおよび古いオペレーティングシステムはこの方法でディスクをパーティション分割しました。新しいバージョンのWindowsは1 MBの境界にパーティションを作成し、適切な物理セクターへの配置。これは Alignment 0 と呼ばれます。

    • この奇数は、cylinder-head-sector(CHS)addressingのアーティファクトです INT 13h で使用され、レガシー- BIOS API ディスクアクセスに使用されます。 INT 13h APIを使用したレガシーシステムとブートローダーでは、すべてのパーティションはシリンダー境界で開始および終了する必要があります。 論理ブロックアドレス指定(LBA) が導入された後でも、偽のCHS値(実際のディスクジオメトリに対応していません)がレガシーAPIとの互換性を維持するために使用されていました。 CHSアドレッシングは元々シリンダーあたり最大63セクターをサポートしていたため、最初のパーティションはセクター63から始まります。Windows XP(Service Pack 3より前)および以前のバージョンのWindows システムボリュームがシリンダ境界上にない場合はブートします
  • LBA 63は8の倍数ではないため(8つの512バイトのレガシーセクターが4Kセクターに収まる)、古い方法でフォーマットされたAdvanced Formatディスクにはクラスター(ファイルシステムデータ割り当ての最小単位、通常は4Kのサイズ)があります。 )4Kディスクの物理セクターに位置合わせされていない場合、 Alignment 1 と呼ばれる条件。その結果、4Kのデータを使用するI/O操作が2つのセクターにまたがるようになり、パフォーマンスが低下する読み取り-変更-書き込み操作が発生します。

OSが常に4K境界にデータを書き込む場合、物理セクターサイズに関する情報は不要ですが、低レベルI/Oを実行するアプリケーションでは、この情報が引き続き必要になる場合があります。

  • ドライブがその物理セクターサイズが4Kであることを報告すると、OSまたはアプリケーションはそれがAdvanced Formatドライブであることを認識できるため、物理セクター全体に及ばないI/O操作の実行を回避する必要があります。 512バイトのネイティブセクターを報告するドライブは、この制限を課しません。新しいオペレーティングシステムは通常、可能な限り4K単位でデータの読み取りまたは書き込みを試みますが(この情報は無関係です)、低レベルのI/Oを実行するアプリケーションは、物理セクターサイズを把握して、それに応じて調整し、ミスアライメントを回避できるようにする必要があります。または、低速のRMWサイクルを引き起こす部分セクター書き込み。

SSDは、特定のストレージアレイとの互換性のために必要であるため、報告された物理セクターサイズを変更する機能を提供します。

  • 多くの場合、データセンターには、従来の512nドライブで構成されるストレージアレイがあります。 4Kドライブは、512バイトのセクターをエミュレートするものであっても、そのようなアレイと互換性がない場合があるため、この機能は互換性を確保するために必要です。 this forum thread を参照してください:

    512bディスクでフォーマットされたアレイに4Kドライブを固定することはできません。多くのアレイ(特にZFSベースのストレージは、ソフトウェア定義のストレージが普及するにつれてますます普及しています)は、異なる物理セクターフォーマットの交換用ドライブを受け入れません。

    ドライブが4Kセクターを使用するように構成されている場合、最新のシステムではパフォーマンスが向上することに注意してください。

16
bwDraco

OSが512バイトセクターでドライブと通信する必要がある場合に、物理セクターサイズを認識することにより、OSはどのようなメリットを得ることができますか。

論理サイズは転送データの最小サイズです。これはブロックデバイスであるため、ホストコンピュータとドライブ間のデータ転送は、この論理ブロックサイズの倍数になります。

物理サイズは転送データに最適なサイズであり、コントローラー/ドライブレベルでの実際の読み取りおよび書き込み操作のサイズを反映します。

ホストコンピューターが論理セクターの読み取りを要求すると、コントローラー/ドライブは、論理セクターを含む物理セクターの読み取り操作を実行します。
論理セクターサイズと物理セクターサイズが等しい場合、操作は簡単です。論理セクターサイズが物理セクターサイズより小さい場合、ホストコンピューターに転送するために、コントローラーによって論理セクターを物理セクターから抽出する必要があります。

ホストコンピューターが論理セクターの書き込みを要求すると、物理セクターのサイズが重要になります。
論理セクターサイズが物理セクターサイズと等しい場合、書き込み操作は単純で、直接続行できます。セクタの以前の内容の状態は、書き込み操作に影響しません。

論理セクターサイズが物理セクターサイズよりも小さい場合、コントローラーはまず、論理セクターを含む物理セクターの読み取り操作を実行する必要があります。
読み取りが成功した場合、論理セクターが物理セクターに挿入され、物理セクターが完全に書き込まれます。
読み取りが成功しない場合(再試行後も)、書き込み操作は完了できません。

OSが物理セクターサイズで読み取りおよび書き込み操作を実行する場合(ATAPIコマンドセットで利用可能なマルチセクター操作を利用することにより)、書き込み操作はより効率的に実行されます(不必要に完了しない可能性はありません)。

LOGICALセクターサイズは、OSがドライブと通信する方法を完全に定義します。例外なく。論理セクターサイズでのみ通信することが許可されている場合、物理セクターサイズがわかっていればどのような用途ですか

「例外なし」というあなたの主張は正しくありません。
IDE HDDで導入されたATAPIコマンドセットには、常にsector countパラメータを使用して読み取りおよび書き込み操作を実行する機能がありました。これは単に(セクターが同じトラック上にある限り)マルチセクターの読み取り/書き込み操作も可能な既存のディスクおよびフロッピーコントローラーインターフェイスの拡張。

5
sawdust

OSが基礎となる物理セクターサイズを知っている場合、OSはクエリを最適化して、物理操作をできるだけ少なくすることができます。特にSSDでは、物理的な動作制限(4KB IOPS制限)がデバイス速度の最終的な制限になることが多いため、この容量を最大限に活用できることが重要です。

3
David Schwartz

ドライブ内の場所にアクセスする方法は2つあります。1つはCHSスキームで、もう1つはLBAスキームです。

CHSは、Cylinder、Head、Sectorの略で、ドライブからの読み取りまたは書き込みの場所を決定する最も低レベルの方法です。シリンダーx、ヘッドy、セクターzを使用し、その位置の内容をメモリー(バッファー)のアドレスとの間で読み書きするように指示します。これは、物理的なシリンダーと読み取りヘッドがある(従来の、回転するRust)ハードドライブの実際の物理的なコンポーネントから派生しています。セクターはアドレス指定可能な最小単位であり、伝統的に512バイトに固定されていました。

LBAは論理バイトアドレス指定であり、ドライブはそのオフセットによってセクターアドレスから読み書きします。たとえば、ディスク上の123837番目のセクターを読み取るか、これをディスク上の123734番目のセクターに書き込みます(ゼロから開始)。

問題?これらの値はそれぞれ範囲が制限されています。実際、CHSが非常に制限されていたため、LBAを導入する必要がありました。 CHSの場合、C(シリンダー)の可能な値は1023ですが、H(ヘッド)は最大255であり、S(セクター)は最大63までです。つまり、最大1024シリンダーx 255ヘッドx 64セクターx 512バイトが従来のCHS形式でマッピングされ、合計で8 GiB未満になります。 CHSを使用すると、8 GiBを超えるディスクにアクセスすることはできません。

したがって、LBAは32ビットの制限で導入され、ディスクサイズに2 ^ 32 x 512バイトまたは2 TiBの制限が与えられます。これは、MBRディスクが2TiBを超えることができない理由です。これは、CHSとLBAを使用してパーティションサイズを指定するためです。 2TiB以上のものをサポートします。

LBAを64ビットに拡張するGPTパーティションスキームのように、より新しく、より優れたオプションが導入されました。これにより、2 ^ 64 x 512バイトで必要になるよりもはるかに多くの機能を提供します-butキャッチ:多くのレガシーハードウェアとレガシーオペレーティングシステム、レガシーBIOS実装、レガシードライバーはUEFIまたはGPTをサポートしていません。多くの人々は、2TiBの制限を超えて簡単にアップグレードできるものを望んでいます。スタック全体を最初から書き直す必要はありません。そしてようやく、4096セクターサイズに達しました。

上記のすべての制限を通じて、1つのことは固定された仮定でした。セクターサイズです。初日から512バイトであり、それ以来ずっとそのままです。しかし、最近、ハードディスクメーカーは、従来のCHSまたは32ビットLBAを使用して、セクターサイズを512バイトではなく4096(4k)に置き換えるだけで、魔法をかける機会があることに気付きました。 OSがLBA 1を要求することにより「ディスクの2番目のセクターを提供してください」と言った場合(LBA 0が最初であるため)、512〜1023バイトではなく、4096〜8191バイトを指定します。

突然、2TiBの制限が2 ^ 32 x 4096バイト、つまり16 TiBにアップグレードされ、MBRを破棄したり、UEFIや​​GPTに切り替えたりする必要がなくなります。

唯一の問題は、これが512バイトセクターではなく4096セクターを使用するマジックディスクであることをOSが認識していない場合、不一致が発生することです。 OSが「ねえ、あなた、ディスク、これらの512バイトをオフセットxxxに書き込んでください」と言うたびに、ディスクはこれらの512バイトを格納するために4096バイトを使用します(残りはゼロまたはジャンクデータであり、バイトで通信しないため、セクターで通信するため、メモリアンダーフローが発生することはありません。

したがって、BIOSには(ときどき)新しいディスクが使用しているネイティブの4096バイトのセクターサイズの代わりに512バイトのセクターサイズを使用するように手動で指定できるオプションが含まれるようになりました。 「古き良き時代」と同じように、MBRシステム上のディスクの2TiB。しかし、4k対応の最新のOSは、このすべてを利用して、この魔法を使用して4096バイトのチャンクで読み書きすることができます。

(追加の利点は、一度に4096バイトを読み書きしている場合、たとえば4GiBのデータを読み書きするための操作が少ないため、処理がはるかに高速になることです。)

1

512/4096 =整列/最適化を担当するOS、

512/512 =これを担当するドライブ

参照: http://support.Microsoft.com/en-us/kb/2510009

1
Joe

最近のオペレーティングシステムで4Kセクターが問題になっている状況をお知らせください。

MicrosoftのVSSライター(シャドウコピー)は、4Kセクターではうまく機能しません。 DFSレプリケーション共有フォルダーをバックアップするには、バックアップソフトウェア「Backup Exec」でDFSのレプリケートフォルダーのシャドウコピーを作成する必要があります。 VSSが4Kセクターで正しく機能しないため、DFSレプリケーションフォルダーが4Kセクターのドライブにある場合、ジョブは失敗します。

ジム

0
Jim