ハードドライブの構造を変更する方法を探しています。無効なシリンダー数

ハードドライブの構造を変更する方法を探しています。無効なシリンダー数

シリンダーの数がもはや正確ではなく、2つの損傷したハードドライブがあります。どうやってこれが起こったのかはわかりませんが、同じハードドライブモデルを使用して正確なシリンダー数を確認しました。以前のバージョンのsfdiskにはこのオプションがありました。 fdisk xには構造を変更するオプションがありますが、w(書き込み)コマンドは変更を保存しません。これを行うことはできますが、オープンソースオプションであることを望むプログラム(Disk Genius @ $ 99)をお探しですか?インターネット検索では、Gpartedはこれを行うことができると述べていますが、まだそのオプションが見つかりませんでした。 ddを使用してHDをゼロ化し、fdiskを使用して削除し、新しいパーティションテーブルを作成しました。すべてがまだ間違ったシリンダーデータを使用します。 Linux Mint、Ubuntu、MXでfdiskを試してみました。

答え1

ハードドライブが7.87GiB(または約8.4GB、または正確に16,450,560ブロック)を超える場合は、論理ブロックアドレス指定(LBA)を使用してアクセスされます。つまり、ブロック番号だけが意味を持ち、「ディスク構造」は重要ではありません。

1023/254/63または1023/255/63のC / H / S値が表示されている場合、これはMBRパーティション表に使用されるダミー充填値です。これは、単に「実際の値がMS-DOSまたはMBRパーティションテーブルでC / H / Sジオメトリを使用して表現できる値より大きい」という意味です。いいえシリンダ、ヘッド、またはセクタの実際の数を示します。

MBRパーティションテーブルとMS-DOSの両方がシリンダ値に10ビット幅のフィールドを使用するため、0..1023の値のみが適切です。ヘッド値は8ビットですが、Sector値は6ビットのみです。また、セクタ値はゼロではなく1から始まる慣例があり、古いMS-DOSのバグのためにヘッド#255を使用できません。

PATA / IDEハードウェアレベルでは、C / H / Sスタイルのアドレッシングは最大65536/16/255まで使用できます。これは、ディスクサイズが128GiB(または136.9GBまたは2 ^ 28ブロック)未満であることを意味します。ただし、これらの値は MS-DOS では使用できず、MBR パーティション テーブルに保存することもできません。ディスクサイズがそのレベルに達すると、ディスクの実際の内部構造はすでにこれより複雑です。外側シリンダは内側シリンダより大きいサイズを有する。物理セクターが多い。したがって、PATAの最後の日でも、C / H / Sアドレッシングはレガシーオペレーティングシステムを満たすために必要なフィクションに成長し、それ以上ではありません。

7.87GiBを超える最新のディスクの場合、MBRパーティションを使用している場合、パーティションの場所とサイズを決定するために使用される唯一の意味のあるフィールドは、パーティションの最初の絶対セクタのLBA#とパーティションのセクタの数です。どちらも4バイトのフィールドなので、最大2TiBのパーティションまたは最大0xffff ffffのLBAブロック番号を16進数で表すために使用できます。

だから20年以上前のディスクやオペレーティングシステムについて話さない限り、「ディスク構造」は何の目的にも使用されず、まったく実際ではない可能性があるため、無視する可能性が高くなります。

関連情報