Skip to content

Plan 9をVMware ESXiで動かす

fs64カーネルは以下の仮想ハードウェアを認識する。

  • SCSI: buslogic
  • イーサネット: amd79c970(フレキシブル)

Plan 9カーネルはもっと幅広いハードウェアを認識する。フルシステムPlan 9を組むので、CPUサーバはディスクを使わず、イーサネットをE1000(e1000)にした。構成としては以下のように。

  • esxi
    • performanceディスク(SSD)
    • reliableディスク(SAS RAID1)
  • fs
    • cache: performanceディスクに置く
    • worm: reliableディスクに置く
  • cpu, auth
    • ether: e1000
    • fsから/を得る

あとはファイルサーバのインストール記事と同じ。

ESXiにログインして操作する。

設定をいちどディスクに書き出しておいて、それをコピーする。

Terminal window
firmwareConfig.sh --backup /vmfs/volumes/reliable

書き出したアーカイブを別のマシンから scp 等でコピーする。

Terminal window
scp root@esxi:/vmfs/volumes/reliable/configBundle-esxi.lufia.org.tgz disk

設定をリストアしたことはないが、次のようなコマンドで戻せるらしい。

Terminal window
firmwareConfig.sh --restore /vmfs/volumes/reliable/configBundle

仮想マシン構成ファイルのバックアップ

Section titled “仮想マシン構成ファイルのバックアップ”

それぞれのディスクを別のマシンからコピーすればいい。まずは構成ファイルとNVRAM。

Terminal window
scp root@esxi:/vmfs/volumes/performance/fs/fs.vmx fs/fs.vmx
scp root@esxi:/vmfs/volumes/performance/fs/fs.vmsd fs/fs.vmsd
scp root@esxi:/vmfs/volumes/performance/fs/fs.vmxf fs/fs.vmxf
scp root@esxi:/vmfs/volumes/performance/fs/fs.flp fs/fs.flp
Terminal window
scp root@esxi:/vmfs/volumes/performance/auth/auth.vmx auth/auth.vmx
scp root@esxi:/vmfs/volumes/performance/auth/auth.vmsd auth/auth.vmsd
scp root@esxi:/vmfs/volumes/performance/auth/auth.vmxf auth/auth.vmxf
scp root@esxi:/vmfs/volumes/performance/auth/auth.flp auth/auth.flp

cpuも同様に処理しておくといい。

まずはESXiコンソールでスナップショットを取得する。

Terminal window
# vim-cmd vmsvc/getallvms
15 auth
16 fs
17 cpu
# vim-cmd vmsvc/snapshot.create 16 forBackup
Create Snapshot:

これでディスクのロックが外れるので、バックアップをESXi内に作成しておく。

Terminal window
vmkfstools -i /vmfs/volumes/reliable/fs/worm.vmdk -d monosparse \
/vmfs/volumes/reliable/rolante/worm-backup.vmdk

スナップショットの取得が終わったらファイル名を確認して、別のマシンからコピーする。

Terminal window
ssh root@esxi "gzip -9c /vmfs/volumes/reliable/fs/worm-backup-s001.vmdk" >fs/worm-backup-s001.vmdk.gz
scp root@esxi:/vmfs/volumes/reliable/fs/worm-backup.vmdk fs/worm-backup.vmdk

不要になったスナップショットを削除する。

Terminal window
# vim-cmd vmsvc/snapshot.get 16
Vmid Name File Guest OS Version Annotation
...
# vim-cmd vmsvc/snapshot.remove 16 [snapshot id]
# rm /vmfs/volumes/reliable/fs/worm-backup.vmdk
# rm /vmfs/volumes/reliable/fs/worm-backup-s001.vmdk

試す機会は結局なかったが、バックアップで取得したファイルをESXiに戻して、たぶんこれで復旧できる。

Terminal window
vmkfstools -i /where/to/bkup.vmdk -d thin \
/vmfs/volumes/disk/guest/orig_not_flat.vmdk