fdisk がシリンダーとセクター間の単位の変換に矛盾があるのはなぜですか?

fdisk がシリンダーとセクター間の単位の変換に矛盾があるのはなぜですか?

LVM の物理ボリュームのサイズを増やすために、仮想ディスクを再パーティション化していました。

当初は次のように実行しました。

$ fdisk /dev/sdb
# delete partition
fdisk> d
? 1
# create new partition
fdisk> n
? p
? 1
first cylinder? [ENTER]
last cylinder? [ENTER]
# set LVM type
fdisk> t
? 8e
fdisk> w

このため、LVM は Linux によって認識されませんでした。困惑した私はバックアップを調べました。パーティション テーブルは両方とも 1 から始まっていたので、それが問題であるようには思えませんでした。しかし、単位をuシリンダからセクターに変更すると (fdisk コマンド)、バックアップはセクター 13 から始まっているのに、新しいパーティションはセクター 128 から始まっていることに気付きました。

パーティションの先頭を修正すると、すべて正常に動作しました。

単位の変換の矛盾が理解できません。誰か理解するのを手伝ってくれませんか?

答え1

fdiskは古いツールであり、デフォルトで古いスタイルのシリンダスキーマを使用します。これは、偽物ハードディスクのファームウェアによって提供されるシリンダ/トラック/ヘッド データ。ほとんどのツール (LBA パーティションが存在するため) はこれとは何の関係もありません。

コマンドを使用してセクターベース モードに切り替えることができますu

パーティション テーブルは、おそらく別のツール (おそらくインストーラーの再パーティション機能) によって生成され、このセクター ベースのパーティションがデフォルトで使用されました。

Gpart、parted など、多くのツールがこれをより良く実行しますが、古い fdisk のような純粋でクリーンな精度を持つツールはありません。

関連情報