2008/04/29

PC-DOSのセットアップディスクが!

そろそろPC-DOS 2000でも買おうかと思わないでもない今日この頃だが、とりあえず我が家には未だにPC-DOS J7.00/Vなる骨董品が存在している。さすがにFD版はそろそろ中身がやばいかもわからないが、CD-ROM版は相変わらず元気だ。

ちょっと思うところがあってPC-DOS J7.00/VのCD-ROMセットアップディスクが欲しくなったのだが、考えてみたらPC-DOSのセットアップディスクは「もう使わないから捨てた」か「SCSIアダプタ専用」の物しかない。えらいことだ。何がどうあってもCD-ROMドライブがアクセスできる日本語のDOS/Vを起動し、セットアップディスクを作成しなくては!などと一瞬慌てたのが、考えてみたらWindows 98の起動ディスクは手元に存在しているので、それを使えばなんと言うこともなくセットアップディスクを作成できたので一安心。

メインディッシュはその次「どのCD-ROMドライバを放り込むか」だ。たとえばWindows98/98SE/MEの起動ディスクにはOAKCDROM.SYSという汎用IDE CD-ROMのドライバが組み込まれているが、コレはOak TechnologyからMicrosoftにライセンスされた物だから、Windowsで使うときのみ利用可能だと思っておいた方が無難だろう。各種光学ドライブメーカーでもドライバを配布しているが、これはよその会社のドライブでうまく動くとは限らない。これはちょっと本気でまずいか?などと1分ほど頭を抱えたのだが、そのとき天の啓示が降りてきた。「FreeDOSのCD-ROMドライバはフリーソフトウェアだから組み込んでOKではあるまいか?」

早速物は試しとばかりにFreeDOSのCD-ROMから汎用IDE CD-ROMドライバxcdrom.sysをPC-DOS J7.00/Vのセットアップディスクにコピーし、CONFIG.SYSおよびAUTOEXEC.BATを書き換えて作業終了。試しに起動してみるとばっちりCD-ROMにアクセスできていた。これでVMware Serverで「同級生2」DOS/V版をプレイできる……(←アホ)。


Powered by ScribeFire.

2008/04/21

あれ?タダのVirtualPC 2004 SP1ってもう落とせない?

VirtualPC 2007は動作が非常に胡乱なので(ゲストPCにWindows 2000をセットアップしていたら「ネットワーク上に同名のコンピュータが存在します」とエラーメッセージが出て失敗する。ウチの環境じゃ再現率100%)、一つ前のバージョンであるところのVirtual PC 2004 SP1をダウンロードしようと思ったのだが、Microsoftのサイトにはもうブツが無いらしい。

幸い、手元にはVirtual PC 2004のCD-ROMがある(Connectix VirtualPCからのアップグレードキャンペーンで、Microsoftから4千円くらいで購入したんだな)。後はSP1のアップデートファイルさえあれば……と探してみたら、アップデートファイルを発見。早速ダウンロード中。

ところで、プロダクトキーってCD-ROMのケースに書いてあったんだっけ?

Linuxのカーネルコンパイルの練習。

LinuxのソフトウェアRAIDはオンライン領域拡張ができてハッピーなことは判明したが、いかんせんこのステキ機能を活かせるハードウェアがあまりに貧相というのが現状だ。なにせPCI-ExpressでSATAなアダプタは、困ったことにたいていポート数が2しかない。困ったもんだ。

ところが、LinuxのSATAコントローラのドライバについて調査していたところ、いわゆるfakeraid(なんちゃってRAID)アダプタ)をただのSATAアダプタとして使えるらしいことが判明した。機能があまりに貧相で塩漬けになっていたRocketRAID 2300も、最新カーネル(2.6.25)ではSATAアダプタとして使えるらしい。実に嬉しいニュースではあるのだが、kernel.orgから落っことしてきたカーネル(vanillaカーネル)はDebianで使うには何かと面倒くさい(というか使う方法ってあるんだっけ?)し、Debianのstableリリースに2.6.25以降が落ちてくる日なんて、いつになるやら知れたものではない。しょうがないのでVMware Server上で動いているCentOS5.1のカーネルだけ2.6.25に差し替えてみたところ、一応動いていることは確認できた。でも、RHEL系はパッケージ管理が面倒くさいからなぁ……。aptitude一発のDebianと比べるとどうしても見劣りが。

どうせだったらPCI-Express x4/8ポートのRocketRAID 2320も動くようになるとなお嬉しいんだが。

2008/04/12

Linux Software RAIDのオンライン容量拡張の検証

LinuxのソフトウェアRAIDにおけるオンライン容量拡張(Online Capacity Expansion)機能を検証した結果、ちゃんとディスクをアレイに追加してアレイの容量を拡張できるという結果が得られた。なお、RAID6のオンライン領域拡張もドキュメント(mdadmのmanページ)によるとできるとのこと。ホントにきちんと動いてるのかはまじめに確認してないけど、ディスク買いそろえて本番機で動かしてみようという気にさせられる結果だ。以前、面白半分に128MBのディスクでRAID5だ!とかアホをやったときに「ディスクが小さすぎ」なんて叱られた記憶があったので不安を抱いていたのだが、今回試した512MBではきちんと動いたので、どうも128MBから512MBまでの間に下限が存在するのではなかろうか(結局mdadmのソースコードを読んでたら眠くなったので挫折orz)。

下準備とかアレイの作成とか。

まずは準備。Debian etchのインストール時には特に準備は不要。ただしetchのmdadm 2.5.6ではオンライン領域拡張はできないので、etch-backportsリポジトリのmdadm 2.6以降を使う点に注意する(今回の検証で使ったのははmdadm 2.6.2)。

次にディスクを用意して"linux raid autodetect"パーティションを用意する。この辺の手順は煩雑なので省略して、できあがったパーティションがこんな感じ。実機でアレイを作る場合はbadblocksを使ってディスクの検査をしてからパーティションを作るとよいだろうと思う。

raid-test:~# fdisk -l /dev/sd[bcd]

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          63      506016   fd  Linux raid autodetect

Disk /dev/sdc: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1          63      506016   fd  Linux raid autodetect

Disk /dev/sdd: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1          63      506016   fd  Linux raid autodetect
ここまで終わったらおもむろにドライブ3台でRAID5のアレイを作成する。
raid-test:~# mdadm -C /dev/md0 -n 3 -l 5 /dev/sd[bcd]1
mdadm: array /dev/md0 started.

作成が終わると同時にアレイの初期化が始まる。初期化中でもアレイを読んだり書いたりは可能だが、初期化が終わるまで待ってみたところ、512MB×3のアレイの初期化にかかる時間は俺の実験用PCだと1分くらいだった。実際のディスクを数本まとめてに数百GB~数TBのアレイを作るとなると初期化に何時間もかかることがザラなのだが、処理の進捗を知りたい場合は/proc/mdstatをcatとかで見ると、下記のような進捗状況レポートを取り出せる。なお、初期化なのにrecoveryとか言っているのは気にしなくてもOK。

raid-test:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[3] sdc1[1] sdb1[0]
      1011840 blocks level 5, 64k chunk, algorithm 2 [3/2] [UU_]
      [===>.................]  recovery = 16.9% (86528/505920) finish=0.7min speed=9614K/sec
      
unused devices: <none>

で、初期化が終わると/proc/mdstatの内容からは進捗状況の表示が消えてこんな風になる。

raid-test:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdd1[2] sdc1[1] sdb1[0]
      1011840 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

アレイを作成できたらファイルシステムを作ってマウントする。実機だとファイルシステムにはXFSを使うのだが、今回は趣向を変えてext3にしてみた。

raid-test:~# mkfs -t ext3 /dev/md0
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
126720 inodes, 252960 blocks
12648 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=260046848
8 block groups
32768 blocks per group, 32768 fragments per group
15840 inodes per group
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376

Writing inode tables: 0/81/82/83/84/85/86/87/8done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
raid-test:~# mount -t ext3 /dev/md0 /mnt

dfでファイルシステムの状況を確認。512MB×3のRAID5なので、サイズが1GBあればOK。

raid-test:~# df /mnt
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0                995896     17652    927652   2% /mnt

ディスクを追加してみる。

ひとまずアレイはできたので、マウントしたままディスクを追加する。アレイに追加するディスク/dev/sdeには例によって"linux raid autodetect"パーティション/dev/sde1を作成してあるので、これを「スペアドライブ」としてまずは追加する。

raid-test:~# mdadm --manage /dev/md0 --add /dev/sde1
mdadm: added /dev/sde1

とりあえずこの段階でアレイの状態を確認して、スペアドライブが追加されていることを確認する。

raid-test:~# mdadm -D /dev/md0
/dev/md0:
        Version : 00.90.03
  Creation Time : Fri Apr 11 03:59:55 2008
     Raid Level : raid5
     Array Size : 1011840 (988.29 MiB 1036.12 MB)
  Used Dev Size : 505920 (494.15 MiB 518.06 MB)
   Raid Devices : 3
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Fri Apr 11 04:01:51 2008
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 8ba153b2:84ff80b7:58459788:93258e8a (local to host raid-test)
         Events : 0.2

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1

       3       8       65        -      spare   /dev/sde1

いよいよ今回のクライマックス。現時点でアレイは使用中3台+スペア1台という構成になっているので4台すべて使うように構成を変える。

raid-test:~# mdadm --grow /dev/md0 -n 4
mdadm: Need to backup 384K of critical section..
mdadm: ... critical section passed.

アレイの同期処理がバックグラウンドで走るので(待たなくてもいいけど)しばらく待ってみる。進捗状況は上述した初期化の際とまったく同じ方法で確認できる。

同期が終わったら、アレイの情報を確認してホントに容量が拡張されているか確認する。

raid-test:~# mdadm -D /dev/md0
/dev/md0:
        Version : 00.91.03
  Creation Time : Fri Apr 11 03:59:55 2008
     Raid Level : raid5
     Array Size : 1011840 (988.29 MiB 1036.12 MB)
  Used Dev Size : 505920 (494.15 MiB 518.06 MB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Fri Apr 11 04:06:22 2008
          State : clean, recovering
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

 Reshape Status : 18% complete
  Delta Devices : 1, (3->4)

           UUID : 8ba153b2:84ff80b7:58459788:93258e8a (local to host raid-test)
         Events : 0.94

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1
       2       8       49        2      active sync   /dev/sdd1
       3       8       65        3      active sync   /dev/sde1

ファイルシステムの拡張

これでめでたくアレイにディスクが1台追加されたわけだが、アレイの上に乗っているファイルシステムには何の変化も無いので、使える容量は実際には1ビットも増えていない。それじゃ何の意味もないので、引き続きファイルシステムも(これまたオンラインで)拡張しておく。ext2/3ファイルシステムの場合はresize2fsというコマンドを使えば良い(xfsだとxfs_growfs)。ただしこれらはベースシステムには含まれないので、別途e2fsprogsとかxfsprogsというパッケージをインストールしておく必要がある。

raid-test:~# resize2fs /dev/md0
resize2fs 1.40-WIP (14-Nov-2006)
Filesystem at /dev/md0 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/md0 to 379440 (4k) blocks.
The filesystem on /dev/md0 is now 379440 blocks long.
そのまま再びdfで/mntの空き容量を確認。
raid-test:~# df /mnt/mnt
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0               1493856     17896   1401916   2% /mnt

これでめでたくオンラインで容量拡張が完了。検証も済んだしディスク買おう。技術的な問題はだいたい片付いたけど、最大の問題である「予算」が……。

参考文献

本エントリを作成するにあたって、下記のブログエントリを参照した。

2008/04/06

Debian GNU/LinuxにVMware Server 2.0 beta2をインストール

実験用マシン「HP Proliant ML115改」にCentOS5.1(amd64)をインストールしてVMware Server 2.0 beta2で遊んでいたのだが、yumは嫌いだし不便も多いのでDebian GNU/Linux 4.0r1(amd64)に乗り換えた。で、VMware Serverをインストールし直しているのだが、手こずったのでちょっとメモ。

必要なパッケージ

以下のパッケージは入れておかないと間違いなくインストールに支障が出る。

  • psmisc(vmware-config.plの起動直後にいきなり「killallが無い!」と文句を言われるので)
  • build-essential(Cコンパイラ他一式)
  • linux-headers-2.6.18-5-amd64
  • linux-kbuild-2.6.18(linux-headers-2.6.18-5-amd64を入れると勝手に入る)
  • linux-headers-2.6.18-5(これもlinux-headers-2.6.18-5-amd64を入れると勝手に入るんだっけ?)

セットアップ時に注意すること

vmware-config.plを実行している途中で「出来合いのVMware Serverのカーネルモジュールを使えんのだが、コンパイルするけ?」みたいなことを聞かれたりするので、具体的にはだいたい以下のような問答をすればOK。

None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel.  Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? [yes]yes

Using compiler "/usr/bin/gcc". Use environment variable CC to override.

What is the location of the directory of C header files that match your running
kernel? [/usr/src/linux/include] /usr/src/linux-headers-2.6.18-5-amd64/include

2008/04/04

これが「最大の敵は無能な味方」ってヤツか。

実はわたくし、この格言?が大嫌いです。したり顔でこれを書く人間からは、往々にして自分が「無能な味方」で無いことを根拠無く確信している鼻持ちならない高慢さが漂ってくるから。

しかし今日この言葉を使わずにはいられない新聞記事に遭遇したので、OCRソフトの調教も兼ねて収録してみた。/.J日記にも書いたけど、愉快な記事なのでこちらにも記録。

ヤギ繁殖で危機 草木食われ斜面崩落 尖閣諸島・魚釣島(朝日新聞4月3日朝刊29面)

(略)本社機で島(つねお註:魚釣島のことね)の上空を飛んだ。周囲にアホウドリが舞う小島や岩場が点在し、すぐ沖に海上保安庁の巡視船が停泊している。北側はなだらかな緑の斜面だが、険しい南側のあちこちにがけ崩れの跡があった。100メートル以上も崩れた場所に、しま状の地層があらわになっていた。

北側の岩場に、ヤギが数頭いた。親子らしい2頭の姿も。78年に日本の政治団体のメンバーが船で上陸した際、非常時の食料として連れて行った2頭が繁殖。横畑さんによると、91年には300頭はいた。(略)

なんで「非常食」を島にほったらかして帰るかね?最後に焼き肉パーティでもすりゃ良いだろうに。持ち込んだものの後始末ができない連中は屋外活動を行う資格無し。

なお、ヤギが増加して島中の植物を食い荒らした結果、魚釣島に固有の動植物の政体に悪影響が及んでいる可能性も高いそうで、今上陛下のお耳に入った暁には陛下がいたく嘆かれるであろうこと請け合いの大愚行だ。

この愚行をしでかした「政治団体」は例によって右翼で名を「日本青年社」という。現在も立派に存続しており、この件についても自前のWebサイトに記載があるのだが、自分たちが置き去りにしたヤギのせいで本邦の国土が損なわれているというのに反省の弁が一言半句も存在しないのだから呆れるを通り越して恐れ入る。「武士道」だの「日本精神」の復活を目指して活動している団体すらこの体たらくとは情けない限りぢやあありませんか。おまへたちの所業を知つたら、あの世の新渡戸稲造が泣くぞ。