さくらのVPS上に、mfsbsdのイメージを使ってvirtio ベースの環境をスクラッチで作りました。 作った後に、移設元の環境からzfs sendで流し込んで丸ごと環境を移設しました。

virtioでブートするように設定するだけなら、以下の作業で可能です:

  1. mfsbsdイメージを作り、アップロードしてブートする。もちろん、virtio はON。

  2. ログインし、適当なディレクトリに、ここから、パッケージをもってきて展開する。

  3. インストール先のシステムの /boot/modules に パッケージ内の boot/modules 以下にあるファイル をコピーする(*.koのみ)

  4. /boot/loader.conf に以下を入れる

    virtio_load="YES"
    virtio_pci_load="YES"
    virtio_blk_load="YES"
    if_vtnet_load="YES"
    virtio_balloon_load="YES"
    
  5. /etc/rc.conf に以下を入れる

    ifconfig_vtnet0_name="em0"
    

つまり、ブートローダにvirtio関係ドライバを入れ、vtnet ドライバに指示して 現状とネットワークインターフェースの名前を同じにさせてしまえば、終わりです。 暫く前は、vtnet は使えなかったようですが、今や、vtnetもバッチリです。

既存のnon-virtioでzfsをルートとしたシステムも、上記の設定だけで置き換えできます。 zpool の中のdevice参照がどうなっているのか心配だったのですが、杞憂でした。 bootに失敗したら、慌てず騒がず ISO ブートのところで、virtio を off してブートすれば良いかと。

今回も、 前の記事(「さくらのVPSの乗り換えしました (FreeBSD 9 - ZFS root)」) に書いたように、root file system を、zfs の pool 直下でなく、一段下に置いておいたおかげで、 作業が大変スムースにできました。実際移設の時は、以下の手順でしました:

  1. mfsbsdからブートし、zpool を設定する。仮にrpoolとする。
  2. zfs create rpool/temp する
  3. 上記作業領域に、zfs sendで送ったイメージを一旦置く
  4. zfs recv する。
  5. zpoolbootfs/boot/loader.conf /etc/fstabを必要に応じて調整する。
  6. IPアドレスが変わってる場合は、無論、/etc/rc.confの設定変更

ホント、zfs のおかげで移設が楽になりました。


blog comments powered by Disqus