web-dev-qa-db-ja.com

セクターサイズに依存しないパーティションテーブル

プロット

WD10JPVT 1Tbディスクが IcyBox IB-290StUS-B USB/esataEnclosure内にあります。

  • USB経由でディスクを接続すると、512論理/ 512物理セクターサイズになります。
  • コンピューターのネイティブesataポートを介してディスクを接続すると、512論理/ 4k物理セクターサイズが得られます。
  • AKE Hidden USB 3.0 + eSATA II ExpressCard 54mm のesataポートを介してディスクを接続すると、4k論理/ 4k物理セクターサイズが得られます。

問題

問題は、MBRパーティションテーブルでは、パーティションの開始と終了が(論理)セクターの数として表されることです。つまり、ExpressCardのesataポートを介して接続されたときにディスクをパーティション分割してから、USBポートまたはネイティブesataポートに接続すると、パーティションのオフセットとサイズが正しくなくなり、その逆も同様です。

fdisk出力

以下のfdiskコマンドはUbuntu11.04(natty)を使用して実行され、ExpressCardのUSBとesataに対してXUbuntu 12.04で同じ結果が得られますが、ネイティブesataをテストすることはできません。 。

USB経由で接続:

> Sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c2664

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       15201   122095104    7  HPFS/NTFS

コンピューターのネイティブesataポートを介して接続:

> Sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000c2664

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       15201   122095104    7  HPFS/NTFS

ExpressCardのesataポートを介して接続:

> Sudo fdisk -l /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 15200 cylinders
Units = cylinders of 16065 * 4096 = 65802240 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000c2664

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       15201   976760832    7  HPFS/NTFS

ソリューション?

  • 「実際の」セクターサイズ(4k)をMBRパーティションテーブル内に保存する方法はありますか?
  • GPTパーティションテーブルの使用は機能したかもしれませんが、GPTヘッダーはディスクのセクター1に格納され、セクターサイズは異なるため、バイト単位で測定される固定位置にGPTヘッダーを格納する方法がない限り、役に立ちません。
  • パーティションなしでrawドライブをフォーマットすることはできますが、ubuntu 11.04では、Halが存在しないパーティション(/ dev/sdb1、/ dev/sdb2、…)をマウントしようとするため、手動でディスク(/ dev/sdb)をマウントする必要があります。 、ファイルシステムラベルを正しく検出するという事実にもかかわらず。
  • 1つは4kセクターで動作し、もう1つは512セクターで動作する、2つのオーバーラップパーティションを手動で作成できます。ディスクを接続するたびに、一方のパーティションは無効になり、もう一方は使用されますが、これは醜くて壊れやすい感じがします。
5

MBRとGPTの両方のディスクフォーマットを非常に詳細に分析しましたが、これらの標準では考えられなかった、論理セクターサイズに依存しないフォーマットの問題に直面したようです。

問題は、USBディスクの内部セクターサイズが4Kであるが、接続されているポートに応じて異なるセクターサイズ(論理的および物理的の両方)のふりをすることです。実際には、このマッピングは少なくとも一貫性がありますが、異なるシリンダー/セクター構成のふりもします。

この動作を変更するには、次のいずれかが必要になります。

  1. ディスクファームウェアの変更
  2. ポートで使用されるプロトコルの変更、つまりUSBディスクに使用されるディスクドライバーの変更

これらのオプションは両方とも、自分で行うことは不可能のように思えます。 Western Digitalのサイトで、ディスクのファームウェアアップデートを見つけられませんでした。また、より適切なディスクドライバーを検索していません(正確に何を検索すればよいかわからないためですが、私もそうは思わないでしょう。楽観的)。

2012年6月からの次の投稿でも同じ質問がありました。
Debianにハードディスク上の物理セクターサイズを使用させるにはどうすればよいですか?

これは、勇気づけられない受け入れられた答えです(2011年7月の記事を引用しています):

http://www.techarp.com/showarticle.aspx?artno=734 に公開されたWestern Digitalの担当者へのインタビューによると、現在のAdvancedFormatドライブで512eエミュレーションを無効にするオプションはありません。

[...] Western Digitalは、エミュレーションモードで実行されている現在のAdvanced Formatドライブをネイティブフォーマットに変換するファームウェアアップグレードを提供しますか?

残念だけど違う。現在のAdvancedFormatドライブは、ファームウェアのアップグレードによってネイティブ形式で実行するように変換できません。

他の誰かがもっと良い答えを思いつくことを願っていますが、私自身の答えは否定的な傾向があります。データを安全に保ちたい場合ではなく、非標準のGPT/MBRフォーマットを作成することはお勧めしません。

3
harrymc