以下は、元々 1 つの VMWare 仮想ゲストシステムを 2 つに 分離し、それらを同時に、別々に起動してお互い通信できる状態にする ための方法である。
ゲスト OS は両方とも Debian GNU/Linux であり、ホスト OS は Windows XP Service Pack 2 である。 ゲスト OS のネットワークは NAT を用いている。
コピー先 (またはコピー元でも良いが) Debian.vmx といった名前の ファイルを展開し以下の項目を、該当するディレクトリのものに変更する。 (絶対パスで記述されているずなので)
scsi0:0.fileName
もしも以下の項目が明記されていたらそれも変更する。 なぜなら、これが同じになっていると、複数のマシン同士で 通信ができないからである。
ethernet0.address
以下のファイル群を新しいものに変更
- /etc/hosts - /etc/hostname - /etc/motd - /etc/network/interfaces - /var/qmail/control/locals - /var/qmail/control/me - /var/qmail/control/rcpthosts - /etc/init.d/tcpserver
互いにアクセス可能かをチェックする。もしもお互いをホスト名で認識 したいのであれば、お互いの /etc/hosts にその設定を書き込んでおくと 良い。
nfs で相互アクセスを図る。本当は samba でも良かったが、samba は結構難しい ので、nfs でやってしまう。
以下のパッケージをインストールする
nfs-kernel-server
以下のメッセージを読んでおく。
statd uses tcpwrappers The statd daemon uses tcpwrappers to control access. To configure it, use program name "statd" in /etc/hosts.allow and /etc/hosts.deny.
メッセージの内容は、「statd というプログラムを使うので、それを hosts.allow と hosts.deny でアクセス制御してくれ」という意味である。
/etc/exports が設定ファイルである。ここに、
/home/morikawa woody.vir(rw,anonuid=40000,anongid=40000)
のように書き込む。これにより、
ことが設定される。
設定されたら、
/etc/init.d/nfs-kernel-server reload
によって設定を読み込むと良い。
もう一つのサーバ (ここでは woody.vir) からマウントを手動で行うには、
# mount -t nfs -o rsize=8192,wsize=8192 shadow:/home/morikawa /mnt
とすればよい。上記の -t nfs
はファイルシステムを表し、
shadow:/home/morikawa
はマウント先のホスト名、およびディレクトリ
を、 /mnt
はマウント先を表す。 rsize=8192,wsize=8192
は
nfs コネクションを高速にするため、バッファサイズを大きくする指定である
*1。
これでマウントと、NFS したディスクに書き込みが可能かどうかを
チェックする。もしもうまくいったら、今度は /etc/fstab に以下の記述を加える。
shadow:/home/morikawa /home/morikawa nfs defaults,user,noauto,rsize=8192,wsize=8192 0 0
これにより、ユーザが
mount /home/morikawa
または
mount shadow:/home/morikawa
とするだけで、マウントが可能になっているはずである。
上記ディスクを含むゲスト OS を起動する。
dmesg でディスクのデバイス名を探す。 今回は /dev/sdb であったとして話を進める。
# cfdisk /dev/sdb
とする。すると、
領域テーブルが無いか領域テーブルの署名が不正です ゼロテーブルで開始しましょうか [y/N] ?
と問われるので、y と返答する。
以下の手順でパーティションを作成する
アクセス速度はどうせあまり望めない上、昔の woody からもアクセス できることを考え、ext2 (デフォルト) にする。
最後に「書き込み」を忘れずに。
その後、一度リブートする。
mke2fs を実行して、ファイルシステムを作成する
# mke2fs /dev/sdb1
# mount /dev/sdb1 /mnt
マウントできているか、df コマンドなどで確認。
# rsync --delete -avn /home/ /mnt/
でまずチェックして、よさそうなら、以下の本番コマンドを実行する。
# rsync --delete -av /home/ /mnt/
まず、混乱が無いように、/dev/sda1 の方にある /home を /home.bk に変更する。なお、以降は全て root でログインして作業すること。
# mv /home /home.bk
/home を作成し、パーミッション、UID, GID を設定する。
# mkdir /home # chmod g+w /home # chmod g+s /home # chgrp staff /home
/etc/fstab に以下の記述を加え、/dev/sdb1 が起動時に読み込まれる ようにする。
/dev/sdb1 /home ext2 defaults 0 2
上記の空白は tab 文字で区切ること。
設定が終了したら再起動する。再起動後、/home 領域がちゃんとマウントされ、 一般ユーザなどもログイン可能かを調べること。
これで、/dev/sda に残っている /home.bk はいつでも削除可能である。 そのうち削除する。
もう一台も同じように利用できるよう、上記のように /home を /home.bk に移し、パーミッションを設定し、fstab を書き加える。
/home ごと読み込まれるよう、/etc/exports の先の行を以下のように書き換える。
/home woody.vir(rw,anonuid=40000,anongid=40000)
のように書き込む。これにより、
ことが設定される。
設定されたら、
/etc/init.d/nfs-kernel-server reload
によって設定を読み込むと良い。
今度は /etc/fstab を以下のように書き換える。
shadow:/home /home nfs defaults,user,noauto,rsize=8192,wsize=8192 0 0
user オプションがついているので原理的には一般ユーザでもマウントが可能 であるが、ユーザがログインしようとするとホームディレクトリが存在しない ため、いろいろ不便である。/dev/sdb1 がマウントできない場合には、root でログインし、
mount shadow:/home
とすること。
ここまでの設定で現状は以下のようになっているはずである。
Debian.vmdk をシステムディスクとする Debian.vmx から Debian_Home_Disk.vmdk を呼ぶようにしておく。つまり、Debian.vmx を起動 した際には、何も考えずとも、home ディレクトリデータを格納する ディスクをマウントして置くようにする。
一方 woody 版の Debian_woody.vmx はもちろん Debian_woody.vmdk は ハードウェアとして接続するが、Debian_Home_Disk.vmdk は接続して おかない。(こうすると、上記の通常使用システムが起動している際に 起動しようとするとハングしてしまう)。 もしも woody 版を使用する場合は、Debian_Home_Disk.vmdk を接続 せずにシステムを起動する。(この際、起動時に「マウントできないぞー」と 言われるが、Ctrl-D で抜けること) そして起動したら、root でログインし、 mount shadow:/home で nfs 越し に home 領域をマウントする。
何らかの理由で通常使用しているシステムが利用できない (またはしない) 場合には、Debian_Home_Disk.vmdk を Debian_woody.vmx の方に接続して 起動する。(起動さえしていないのならば、Debian.vmx 側からはずす必要 は無い)。そうすると、上記の /etc/fstab が /dev/sdb1 を読み込むため、 通常運用版と同じように利用できる。
システムとホームの両方が存在したディスクから、ホーム領域を専用ディスク に移動したことにより、システムディスクとして必要となっていたディスク容 量が小さくなったはずである。しかし、VMWare では、普通に利用している限 り、一度大きくなったディスクは小さくならない。
必要なディスクの「圧縮」の方法については <URL:vmware_ver4_shrink.htm> を参照のこと。
*1 詳しくは mount(8) を参照のこと。
Last Updated: 2005/03/20, Since: 2005/03/20 | mailto: |