[22315]  SC-UPU2での32GB越え
投稿者:mich さん   2004-02-20 15:37:38
250GBのハードディスクの中で、先頭の32GBまでの部分を起動ドライブとして、残りをデータドライブとして使うことができないか調べました。下記のスレッドの追試です。

http://www.griffonworks.homeip.net/dorlog/2nddorcom/windows/thread22825.html

また、下記のスレッドも参考にさせていただきました。

http://www.cham-reo.com/logsearch/Log.aspx?c=maniax&d=20021008T211845&id=20127

環境は以下の通りです。
・本体 PC-9821 Rv20/N20(Pentium II ODP×2基)
・SCSI I/F アイ・オー・データSC-UPU2(BIOS Ver.1.60)
・SCSI-IDEブリッジ ACARD AEC-7720U
・HDD Western Digital WD2500JB
・OS Windows NT 4.0 Workstation SP6a

Windows NTのディスクアドミニストレーターで32GB超の部分にかかるパーティションを作成した場合の挙動について、今のところの結論は以下の通りです。

(a) パーティションの開始位置は32GB以下でなければならない。

(b) パーティションの終了位置が32GBを越えると、パーティションテーブルには下位16bit(65536で割った端数)のみが書き込まれる。

(c) 上記(b)で書き込まれた端数がパーティション終了位置として可能な値の場合、すなわち上記(a)で書き込まれた開始位置を下回らない値の場合、その端数が終了位置とみなされ、32GB超の部分は使用することができない。

(d) 一方、上記(b)で書き込まれた端数がパーティション終了位置として不可能な値の場合、すなわち上記(a)で書き込まれた開始位置を下回る値の場合、(b)で指定した値がそのままパーティションの終了位置となり、32GB超の部分が使用できることがある(できないこともある)。

例を挙げましょう。

32GBぎりぎりまでを起動ドライブとして使い、残りをデータドライブとして使うためには、以下のようなパーティションテーブルを作成する必要があります。

・パーティション1 00 00 01 00 7F 07 FE FF
 セクター0(C/H/S = 1/0/0)〜セクター67108863(C/H/S = 127/7/65534)
・パーティション2 00 00 FF FF 7F 07 14 47 [07]
 セクター67108864(C/H/S = 0/0/65535)〜セクター488395775(C/H/S = 127/7/476948)

ここで、[ ]内はパーティションテーブルにフィールドが存在しないため書き込まれない部分です。

これには、ディスクアドミニストレーターで以下のようにパーティションを作成します。
・パーティション1 32767MB
・パーティション2 残りすべて(205707MB)

実際、こうして作成したパーティション1からはWindows NTを起動することができます。また、これとは別のハードディスクでは、先頭の30GBをWindows NTの起動ドライブ、次の2GBをWindows 95の起動ドライブ、残りをデータドライブとして使うことができるようになりました。

上記の例は条件(d)に該当するのでうまくゆきましたが、仮に条件(c)に該当すると、フォーマット直後は正常に使用できますが、システムを再起動するとパーティション2は端数分の小さなサイズに縮小してしまい、フォーマット情報も失われます。また、条件(d)に合うよう、フォーマット後にパーティションテーブルの中でパーティション2の終了シリンダー番号を手作業で書き替えた場合も、再起動すると使えなくなりました。パーティションテーブルに書かれた終了位置は実際の値と矛盾するのは仕方ないとしても、デタラメでは駄目なようです。

また、パーティション2については、作成後、ディスクアドミニストレーターを終了する前にフォーマットする必要があります。一旦終了してしまうと、せっかく作った大きなパーティションのサイズをディスクアドミニストレーターが「忘れて」しまい、条件(c)の場合と同じくパーティションが縮小してしまいます。

さらに、条件(d)に合うように先頭パーティションのサイズを32GBから変えていろいろ試してみたところ、ディスクアドミニストレーターを再起動するとパーティション2のサイズが0MBとなってしまう例がありました。したがって、上述の他にも何か条件があるようです。

とりあえずは、システム専用に古い小容量のディスクをつなぐ必要がなくなり、250GBのハードディスクから起動することができるようになりました。心なしか起動にかかる時間が短くなったような気がします。
  1. mich さん   2004-02-20 17:40:38
    訂正と補足です。

    (1) C/H/Sの値を間違えてS/H/Cの順に書いてしまいました。

    (2) 32GB超の部分にかかるパーティションがうまく作成できたときは、ディスクアドミニストレーターを再起動するとパーティションサイズとして約2TBの値が表示されます。エクスプローラーなどでのサイズ表示は正常です。

    (3) 32GB超の部分にかかるパーティションを含むドライブは、Windows 95のFDISKでは「システム管理域が不正です」と警告され、領域情報を表示させることができません。
  2. mich さん   2004-02-21 09:34:14
    今度は100GBのWD1000JBを使ってもう少し調べてみました。

    ディスクアドミニストレーターを再起動するとサイズが0MBになってしまうのは、どうやら領域サイズが32GBの倍数の場合のようです。

    たとえば次の例が該当します。

    00 00 01 00 7F 07 00 00 [01] (65536MB)
    セクター1024(C/H/S = 1/0/0)〜セクター67109887(C/H/S = 65536/7/127)

    一方、下の例の領域は問題なく使用できます。

    00 00 03 00 7F 07 00 00 [01] (65535MB)
    セクター3072(C/H/S = 3/0/0)〜セクター67109887(C/H/S = 65536/7/127)

    試しにこの領域に対してWindows NTのインストールをしてみたところ、テキスト画面での操作が終わって再起動した時点で「NTDETECTが失敗しました」と表示され、グラフィック画面に進めませんでした。

    一方、上記の規則にしたがうと、WD1000JBで確保できる最大の領域は65535MBということになります。

    管理領域を除いた全容量は95395MBなので、データ領域を最大化するには29860MBの起動領域を作成することになります。このとき、パーティションテーブルは下のようになります。

    ・パーティション1 00 00 01 00 7F 07 48 E9
    セクター1024(C/H/S = 1/0/0)〜セクター61154303(C/H/S = 59720/7/127)
    ・パーティション2 00 00 49 E9 7F 07 46 E9 [02]
    セクター61154304(C/H/S = 59721/0/0)〜セクター195369983(C/H/S = 190790/7/127)

    容量238474MBのWD2500JBだと、215039MBまでのデータ領域が作成可能ということになります。

    追記
    はじめの書き込みの中で、セクター番号などの一部に誤記がありました。もしかしたら今回も書き間違えているかもしれません。計算が苦手なのでご容赦ください。
  3. ぷよよん さん   2004-02-21 12:49:06
    michさん追試ご苦労様です。
    私の120GB仕様のRa20は21ヶ月目ですが、問題なく稼動中です。
    さてNT4は起動パーティションが4GB以内という制限があったと思いますが、
    それに引っかかっているということはないですか?
    といっても、私のほうでW2Kのインストールにも失敗しているので、OSなのか
    ジオメトリの不正なのか切り分けが難しいとは思いますが。
    壁またぎ起動がW2Kでできるかどうかがまだはっきりしてないんですよね。
    実は別HDDから起動しておいて、そこからパーティション作成/フォーマットする
    ほうが作業的には確実っぽい気がしてるんですが、未だ確認できてません。
  4. mich さん   2004-02-23 23:01:29
    4GBの壁はインストール時にパーティションを作成する場合だけだと思います。

    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q119/4/97.ASP&NoWebContent=1

    インストール時にNTFSでのフォーマットを指定すると、一旦FATでフォーマットされ、テキストセットアップが終わって再起動したときに自動的にNTFSファイルに変換されます。NTFSドライバーを読み込む前にフォーマットが行われるようになっているせいではないでしょうか?

    既存の領域にインストールする場合は7.8GBが上限とされています。

    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q224/5/26.ASP&NoWebContent=1

    ただ、これはPC/ATでのパーティションテーブルとINT13の仕様によるとのことなので、98には当てはまらないのかもしれません。パーティションテーブルの方は32GBまでいけるとして、INT13はどうなんでしょうか?

    ウチでは差し当たって32GBの領域からも起動できていますが、ひょっとしたら先頭から物理的に7.8GBの範囲内に起動ファイルが収まっていなければいけないのかも知れないと思い、簡便な方法で試してみました。

    まず32GBの領域にNTを導入します。次にその全ファイルを他の場所に退避させた後で再起動します。空になった領域に10GB程度のごみファイルを移します。その後、退避させたファイルを書き戻します。

    この方法でとりあえずシステムファイルが先頭から物理的に7.8GBを越える位置に移動したとみなして起動してみたところ、何の不具合もありませんでした。

    ただ、32GB超の大容量ディスクの一部を使った起動はSC-UPCIでないとできないようなのが残念です。読み書き性能が低いということもありますが、当方の環境では、ACARDのSCSI-IDEブリッジと相性が悪いらしく、特にLVD対応のものは(転送速度を落としても)しょっちゅうタイムアウトエラーになり、ひどい場合はフリーズやリセットが起きます。Ultra2のAEC-7720Uは何とか使えていますが、LVDで安定して使えるA100U2Wと比べると2倍近い性能差になります。
  5. ぷよよん さん   2004-02-28 22:29:26
    >>既存の領域にインストールする場合は7.8GBが上限とされています。

    4GBっていうのは確かに新規導入時の話だったようですね。
    しかし32GB領域のどこにシステムがあっても起動できてるんですか、それは
    知らなかったです。もしかするとBIOSに8GBの壁があったころの表現から
    変更されていないだけかもしれませんね。(未検証ということで)

    さて、ADAPTEC系のSCSIボード/オンボードSCSIは32GB以上のディスクは
    BIOSから無視される仕様ですが、まりもさん作成のツールで、A2940PAT.LZH
    という、BIOSから32GB以上のディスクを認識させることができるものがあります。
    さらに、SC-UPCI互換で認識させるモジュールもあり、これが32GB越え領域の
    振る舞いも完全に再現できるかどうか一度やってみようと思っておりますが、
    まだ確認できていません(^^: (個人的には優先的にやってみたいことです)
    これが可能ならば、michさんがお手持ちのボード用のモジュールをご自身で
    開発しなくてはなりませんが、SC-UPCI互換で高速SCSIボードを使いこなす
    ことができるでしょう。ただそのモジュール開発が大変でしょうね。
  6. まりも さん   2004-02-29 00:32:37
    32GB壁またぎは、お勧めではないのでコメントを控えておりました(^^;)。私自身これを実験中にエライ目にあっていますので。とりあえずわかっている危険なことは、
    ・FDISK、FORMAT /Hなどがいっさい使えなくなる
    ・32GB壁またぎ領域(FAT32)の大きさが32GBを超えると(つまり64GBを超えると)、32GB以内にある別のWin9xやDOS領域の起動もできなくなる
    などです。WindowsNTか2000以外のOSではそのハードディスクに絶対にさわらないようにする必要があります。NTや2000では、OSの持つディスクアドミニストレータ以外のディスクユーティリティがほとんど存在しないのが幸いしています。

    >32GB領域のどこにシステムがあっても起動できてる
    この可能性はあると思います。というのは、SC-UPCI(あるいはそれ互換動作)では、BIOS経由のディスクアクセスの際に、LBAによるアドレス指定をするならば、32GB以降の場所もちゃんと読み書きできるからです。
  7. ぷよよん さん   2004-02-29 11:08:29
    >>32GB壁またぎは、お勧めではないのでコメントを控えておりました(^^;)。
    >>私自身これを実験中にエライ目にあっていますので。

    そうなんですよね、やっている最中はまだいいんですが、日にちが経った
    あと、どんなことやったか忘れているんで、再設定しようとして、
    そこでうっかり!っていうのがありそうで怖いです。

    NT系はいろいろと裏技があって(まりもさんご紹介のBIOSなしSCSIカード起動とか、
    AT用GAが使えたりとか)便利ですが、9821の場合、やはり純DOS系が必須(笑)
    ですから、なかなか活用が難しいですね。

    そういえばWindows掲示板で、IFC-USP-M2(BIOS V1.10)はSC-UPCI的な挙動?
    という話が出てますね。持ってますがまだまだ確認できません(汗)