フラッシュストレージのパーティションテーブルに基づいてディスク構造(C / H / S)を決定するには?

フラッシュストレージのパーティションテーブルに基づいてディスク構造(C / H / S)を決定するには?

私は主にSCSIベースのI / Oによって制御され、LBAアドレスを介してアクセスされるフラッシュリムーバブルデバイス用のディスクパーティションジェネレータを作成します。

参考までに、Ubuntuディスクユーティリティを使用してSDカードにパーティションテーブルを分割してフォーマットする方法を見ています。

私は、Linuxで「parted」ソフトウェアの「unit」コマンドを使用して、CHS単位とバイト単位でカードのパラメータを表示しました。

以下は、LBA 15122432セクタを持つ8 GB SDカードです。

pi@raspberrypi:~ $ sudo parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1020,130,11
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1020,239,62.  Each cylinder is 7587kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1019,238,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 7742685184B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  7738552319B  7738520576B  primary  ext3

以下は、LBAセクター7585792を備えた4GB SDカードです。

(parted) unit chs print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 1019,71,29
Sector size (logical/physical): 512B/512B
BIOS cylinder,head,sector geometry: 1019,120,62.  Each cylinder is 3809kB.
Partition Table: msdos
Disk Flags:

Number  Start  End          Type     File system  Flags
 1      0,1,0  1018,119,61  primary  ext3

(parted) unit b print
Model: Generic CRM01 SD Reader (scsi)
Disk /dev/sda: 3883925504B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End          Size         Type     File system  Flags
 1      31744B  3881656319B  3881624576B  primary  ext3

私の観察によると、ディスク構造(C / H / S)は容量の異なるSDカードとは異なり、構造はパーティションの終わりにあるシャットダウンCHSアドレスに関連しているようです。そうだ…

パーティション・カードの終わり CHS タプルは (c, h, s) であり、ディスク構造は (c+1/h+1/s+1) です。関係ありますか?

しかし、これらの値はどのように決定されますか?これらのオペレーティングシステムまたはファイルシステムは依存関係ですか?

答え1

1980年代には、パーソナルコンピュータのBIOSが正しく機能するためにハードドライブの構造を知る必要がありました。ユーザーは正確なシリンダー、ヘッド、セクターの数を入力する必要があります。

ある時点で(とIDEインターフェース?このトピックの記憶は偽物です。)ディスクが自分の幾何学的構造をコンピュータに報告できるようになりました。

1990年代初頭から半ばまで、ディスクファームウェアは独自のディスク構造を管理しました。 BIOSはC / H / S値を使用してディスクサイズを計算するため、まだC / H / S値が必要です。ただし、C/H/S 値のセグメンテーションは任意の場合があります。したがって、ディスクから報告されたC / H / S値はディスクの実際のジオメトリとは無関係ですが、許容範囲内に収まり、正しいフルサイズを提供します。

シリンダとヘッドの概念を適用しない記憶媒体も、いくつかの値を補償して正しいフルサイズを得る。

答え2

私の問題は解決されたかもしれません。混乱は、パーティションテーブルを作成するときにパーティショナがデバイス構造を決定する方法です。しかし、いくつかの実験は、フラッシュデバイスに固定された幾何学的構造がなく(実際に物理ディスクがない)、パーティショナーがトラックあたりのヘッドとセクタの数を独自に決定し、カスタマイズされた幾何学的構造を使用できることを発見しました。幾何学。パーティション表からパーティションの開始CHSと終了CHSを計算します。構造に関係なく、オペレーティングシステムはCHS情報が与えられたらパーティションの境界を見つけることができます。

関連情報