web-dev-qa-db-ja.com

ハードディスクドライブは、ホストコントローラーに応じて、必要に応じて512e(4kセクターの512バイトエミュレーション)をオンにしますか?

私は4 TB物理セクターサイズが4kのハードディスク(Advanced Format)を持っており、2つのSATAホストコントローラー(1つは内部でもう1つはUSBエンクロージャー内)に接続しました。 、約2010)512Bの論理セクターサイズとして表示されますが、その物理セクターは4096バイトであると報告されています。最近のUSBエンクロージャーでは、4096Bの論理および物理サイズであると報告されています。

# internal Host controller
sd 4:0:0:0: [sdd] 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
sd 4:0:0:0: [sdd] 4096-byte physical blocks

# USB Enclosure
sd 18:0:0:0: [sdd] 976754646 4096-byte logical blocks: (4.00 TB/3.63 TiB)

「内部」コントローラーは、以前に見た動作を示します。これは通常「512e」と呼ばれ、ドライブのファームウェアは、物理的にセクターをそのように書き込まない場合でも、512セクターのLBAアドレス指定をエミュレートします。オペレーティングシステム(および管理者)は、(小さな)書き込みコマンドをグループ化できるようにパーティションを調整して、ディスクが物理セクターの一部への書き込みにフォールバックするのではなく、セクター全体を上書きできるようにすることができます。最初にコンテンツの。

ただし、ドライブ(USBエンクロージャー)で「4kネイティブ」の動作を確認するのは初めてで、エンクロージャーはドライブのエミュレートされた512Bエミュレーションの上に4096Bアドレス指定をエミュレートしていると最初に考えました。

これは、4k論理セクターに登録されたUSBストレージ機能を備えたWeb検索で見つけた唯一の出来事です。それらは512eを介して4kをエミュレートするので、MBRパーティションテーブルを許可して、MBR + FAT32 usbマスストレージのみをサポートするレガシー/組み込みデバイス(スマートTVなど)で大きなドライブを使用できるようにします。

製造元に連絡 の後、彼らはドライブが実際にはエミュレートされていない(ネイティブ)4kモードで動作していると主張し、USBSATAコントローラーもまったくエミュレーションを行っていません。これには、ホストコントローラーが4KBのセクターサイズのアドレス指定をサポートしているかどうか(必要ですか?)を検出するために、ドライブのファームウェアが必要になります。 SATA規格の公開ドキュメントではこれについて何も見つかりませんでした。だから私は尋ねます:

  • SATAコントローラーで「4096バイトの論理ブロック」を見た人はいますか?
  • ドライブは実際にオンデマンドでエミュレーションの有効化/無効化をサポートしていますか?もしそうなら、
    • この決定はどのように機能しますか?
    • フラグを介してドライブでオーバーライドできますか?
    • ドライバー/フラグを介してホストコントローラーでオーバーライドできますか?
13
Nathan Summers

ハードドライブ検証業界で動作している4KnSATAドライブをいくつか見ましたが、ハードウェアとソフトウェアのサポートが限られており、顧客の需要が不足しているため、顧客に出荷されていることに気づいていませんでした。

物理セクターサイズと論理セクターサイズには、2つの競合するマッピングがあります。長い論理セクター機能により、デバイスは512Bより長い論理セクター(例:4Kn)を持つことができ、長い物理セクター機能により、デバイスは物理セクターごとに複数の論理セクター(例:512e)を持つことができますが、必ずしも相互に排他的ではありません。製造元がドライブが4Knであると主張している場合、古いシステムは4Kn形式をサポートしていないため、古いコントローラーは、読み取り-変更-書き込みなどのエミュレーションレイヤーを古いアプリケーションやハードウェアに提供する場合があります。

Sg3_utilsパッケージのsg_sat_identifyコマンドは、おそらく必要な情報を提供します(物理セクターサイズ/論理セクターサイズの情報については、ワード106〜108を確認してください)。

SATAドライブ自体がオンデマンドのエミュレーションをサポートできるようには見えませんが、ドライブが実際に4Knではなく512eを使用している場合、パフォーマンスの最適化は、読み取り/書き込みを制限するドライバー(またはUSB SATAコントローラー)によって最大化されます。 4K境界、例:転送は、下位3ビットが0のLBAで開始し、下位3ビットが1のLBAで終了します。

start_lba & 0x3 == 0
end_lba & 0x3 == 1

したがって、基本的に、エミュレーションを開始または停止するようにドライブに指示できる「スイッチ」はありません。エンドユーザーの観点から、最善の策は、ドライブが使用するマッピングに最適なファイルシステムを使用していることを確認し、ドライブが正しく配置されていることを確認することです。次のサイトでは、一般的なファイルシステムと、さまざまなファイルシステムでのパフォーマンスとブロックアラインメントに関する統計のかなり良い内訳を示しています。 http://www.ibm.com/developerworks/library/l-linux-on -4kb-sector-disks/index.html

2
Adam Naber