FrontPage 新規 編集 検索 一覧 ヘルプ

Diary/2016-3-3

Human68k と 8GB の壁

Human68k では、GOverHD.X をかけることで 1GB以上の HDD が使えるようになります(OS制限は 16GBのため、昨今の大容量HDDだと一部しか使えず勿体ないですけどね)。

さて、昨年 SATA-SCSI変換器を入手した際、あれこれパーティション分割を試していて、とある条件下で、別ドライブの内容を壊してしまうことに気づきました。

上記は、120GB の SATA-HDD を 5つのパーティションに分割したものですが、パーティション4へファイルを書き込むと、途中で白帯のエラー(読み込めません)が発生し、その際に パーティション1のファイル/ディレクトリを壊していたというものです。

ここで、各領域のサイズとSCSIのセクタ数は次のようになります。

   32KB は、       32KB/0.5KB=     64セクタ (    0x40セクタ)
 1024MB は、1024*1024KB/0.5KB=2097152セクタ (0x200000セクタ)
 2048MB は、2048*1024KB/0.5KB=4194304セクタ (0x400000セクタ)
 4096MB は、4096*1024KB/0.5KB=8388608セクタ (0x800000セクタ)

HDD先頭領域には、管理領域として 64セクタ分(32KB)が確保されてる事にご注意ください。1024MB, 2048MB, 4096MB, 4096MB, 4096MB と5つに切ると、各領域の SCSIセクタ範囲は次のようになります。

 パーティション1(C:):0x00000040〜0x0020003F
 パーティション2(D:):0x00200040〜0x0060003F
 パーティション3(E:):0x00600040〜0x00E0003F
 パーティション4(F:):0x00E00040〜0x0160003F
 パーティション5(G:):0x01600040〜0x01E0003F

パーティション4(F:)への書き込みで HDD の先頭付近が壊されたようですが、よく見るとパーティション4は SCSIアドレス(セクタ番号)の 24bit境界をまたいでいますね。

パーティション4(F:) に書き込むことで、パーティション1(C:) が壊れたという現象から推測すると、書き込みを行った際、SCSIアドレスの繰り上がり計算のどこかで 24bit の制限が出て、先頭に戻ってしまったのではないかと考えられます。

SCSIセクタの先頭アドレスについては、見たところ 24bit 境界を越えても問題は無さそうですが、オフセットを足して 24bit を超えたタイミングで問題が発生するようです。

厄介は厄介ですが、原因が分かれば対処のしようはあるわけで、かくしてうちの環境では次のようにパーティションを切ることにしました。

これなら、計算中に 24bit境界をまたぐ場所はなく、無駄になるのは 1MB の部分だけ。

さすがに 8GB (8191MB) のパーティションとなると容量表示とかおかしくなるのですが、大きな動画データなどを叩き込んで使うには問題ないことを確認しています。システムファイル等を入れるには 2047MB 以内に切った方が良いかと思いますが、8191MB が 2ドライブも使えるのは至極快適です(^-^)

なお、冗談半分で 10GB のパーティション等も作ってみましたが、そちらは惨敗で、3GB 少々書き込んだところでディスクフルと言われてしまいました。やっぱり限度は 8GB (8191MB) みたいですね。

[カテゴリ:X680x0]