ブツとしては
- 構成情報
- 仮想HDDイメージ
(仮想HDDイメージは、これまでの調査で/var/lib/libvirt/imagesにあることが分かっているが)
ソレとは別に、
- ストレージプール定義
- 仮想ネットワーク定義
こういう場合、それっぽいファイルを探してみればだいたいの予想が出来る。
というわけで探してみよう。
(aquarius) $ sudo updatedb
(aquarius) $ sudo locate aries
検索に引っかかったファイルのウチ、関係ありそうなのは以下だ。
- /etc/libvirt/qemu/aries.xml
- /var/lib/libvirt/images/aries.qcow2
- /var/log/libvirt/qemu/aries.log
一つ目は、仮想マシンの定義だろう。
二つ目は、ariesが使っている仮想HDDイメージファイルで、これまでも確認済みだ。
三つ目は、.logになっていることから、稼働ログか何かだろう。
この辺りのファイル・ディレクトリを漁ってみると、他にも何かあるかもしれない。
ネットワークの定義は/etc/libvirt/qemu/networksにあった。
ストレージプールの定義は/etc/libvirt/storageにあった。
それ以外にも、/etc/libvirtや/var/lib/libvirt以下には色々ファイルがあるし、/var/log/libvirtには幾つかディレクトリがある。
ということは、以下の3つをiSCSI領域に移すようにすればいいのかな?
- /etc/libvirt
- /var/lib/libvirt
- /var/log/libvirt
当然、全部で100GBもあるわけじゃない。
iSCSIストレージ側で100GBのLUNを作って、ホストマシン(aquarius)に見せよう。
(piscesを作った時に使ったiSCSIターゲットに100GBのLUNを追加するだけでいいはずだ。)
LUNを追加したら、ホストOS側(aquarius)でディスクデバイスを確認してみよう。
(aquarius) $ dmesg
自分の環境では、sdcとして認識された。
このディスクを使って領域を作成する。ざっくり以下のように。
pv名 | pvサイズ | vg名 | プール名 | lv名 | lvサイズ | FS type | マウントポイント |
---|---|---|---|---|---|---|---|
/dev/sdc1 | 100GB(あるだけ) | vg-kvm | lv-kvmthin | lv-etc-libvirt | 32MB | ext4 | /etc/libvirt |
lv-var-lib-libvirt | 50GB | ext4 | /var/lib/libvirt | ||||
lv-var-log-libvirt | 2GB | ext4 | /var/log/libvirt |
まずはディスクパーティションの作成
(aquarius) $ sudo parted /dev/sdc print
(aquarius) $ sudo parted /dev/sdc mklabel gpt
(aquarius) $ sudo parted /dev/sdc mkpart primary 0% 100%
(aquarius) $ sudo parted /dev/sdc toggle 1 lvm
(aquarius) $ sudo parted /dev/sdc print
続いて、phisical volume(pv)の作成
(aquarius) $ sudo pvs
(aquarius) $ sudo pvcreate /dev/sdc1
(aquarius) $ sudo pvs
(aquarius) $ sudo pvdisplay /dev/sdc1
そしたら、volume group(vg)の作成
(aquarius) $ sudo vgs
(aquarius) $ sudo vgcreate vg-kvm /dev/sdc1
(aquarius) $ sudo vgs
(aquarius) $ sudo vgdisplay -v vg-kvm
続いて、LVM Thin Provisioning用にThinPoolを作成。
(aquarius) $ sudo lvcreate -l 100%FREE -T vg-kvm/lv-kvmthin
(aquarius) $ sudo lvs vg-kvm/lv-kvmthin
(aquarius) $ sudo lvdisplay -v vg-kvm/lv-kvmthin
1つずつlvを作ろう
(aquarius) $ sudo lvcreate -T vg-kvm/lv-kvmthin -n lv-etc-libvirt -V 32M
(aquarius) $ sudo lvcreate -T vg-kvm/lv-kvmthin -n lv-var-lib-libvirt -V 50G
(aquarius) $ sudo lvcreate -T vg-kvm/lv-kvmthin -n lv-var-log-libvirt -V 2G
(aquarius) $ sudo lvs vg-kvm
(aquarius) $ sudo lvdisplay vg-kvm/lv-etc-libvirt
(aquarius) $ sudo lvdisplay vg-kvm/lv-var-lib-libvirt
(aquarius) $ sudo lvdisplay vg-kvm/lv-var-log-libvirt
ファイルシステム作成
(aquarius) $ lsblk
(aquarius) $ sudo mkfs.ext4 /dev/vg-kvm/lv-etc-libvirt
(aquarius) $ sudo mkfs.ext4 /dev/vg-kvm/lv-var-lib-libvirt
(aquarius) $ sudo mkfs.ext4 /dev/vg-kvm/lv-var-log-libvirt
そしたら、1つずつデータをコピーしよう。(仮想マシンは止まっていること!)
(aquarius) $ sudo mkdir /mnt/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-etc-libvirt /mnt/libvirt
(aquarius) $ ls /mnt/libvirt
(aquarius) $ sudo bash -c "cd /etc ; tar cSf - libvirt | (cd /mnt ; tar xSf - )"
(aquarius) $ ls -al /etc/libvirt /mnt/libvirt
(aquarius) $ sudo umount /mnt/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-var-lib-libvirt /mnt/libvirt
(aquarius) $ ls /mnt/libvirt
(aquarius) $ sudo bash -c "cd /var/lib ; tar cSf - libvirt | (cd /mnt ; tar xSf - )"
(aquarius) $ ls -al /var/lib/libvirt /mnt/libvirt
(aquarius) $ sudo umount /mnt/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-var-log-libvirt /mnt/libvirt
(aquarius) $ ls /mnt/libvirt
(aquarius) $ sudo bash -c "cd /var/log ; tar cSf - libvirt | (cd /mnt ; tar xSf - )"
(aquarius) $ ls -al /var/log/libvirt /mnt/libvirt
(aquarius) $ sudo umount /mnt/libvirt
(aquarius) $ sudo rmdir /mnt/libvirt
これでデータ類はコピー出来た。後はマウントするだけだ。
念の為に、前のディレクトリはリネームしておく。
(aquarius) $ sudo mv /etc/libvirt /etc/libvirt.orig
(aquairus) $ sudo mkdir /etc/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-etc-libvirt /etc/libvirt
(aquarius) $ df /etc/libvirt
(aquairus) $ sudo chown root:root /etc/libvirt
(aquarius) $ sudo chmod 755 /etc/libvirt
(aquarius) $ ls -ld /etc/libvirt.orig /etc/libvirt
(aquarius) $ sudo mv /var/lib/libvirt /var/lib/libvirt.orig
(aquairus) $ sudo mkdir /var/lib/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-var-lib-libvirt /var/lib/libvirt
(aquarius) $ df /var/lib/libvirt
(aquairus) $ sudo chown root:root /var/lib/libvirt
(aquarius) $ sudo chmod 755 /var/lib/libvirt
(aquarius) $ ls -ld /var/lib/libvirt.orig /var/lib/libvirt
(aquarius) $ sudo mv /var/log/libvirt /var/log/libvirt.orig
(aquairus) $ sudo mkdir /var/log/libvirt
(aquarius) $ sudo mount /dev/vg-kvm/lv-var-log-libvirt /var/log/libvirt
(aquarius) $ df /var/log/libvirt
(aquairus) $ sudo chown root:root /var/log/libvirt
(aquarius) $ sudo chmod 755 /var/log/libvirt
(aquarius) $ ls -ld /var/log/libvirt.orig /var/log/libvirt
この状態で一度、kvmの状態確認してみよう。
(aquarius) $ virsh list --all
(aquarius) $ virsh pool-list --all
(aquarius) $ virsh vol-list --pool default
(aquarius) $ virsh net-list --all
前回と同じように、起動停止もしてみよう。
(aquarius) $ virsh start aries
virt-viewer(Remote Viewer)で接続確認もしておく。
(aries) $ sudo shutdown -h now
更新先を確認
(aquarius) $ sudo ls -l /var/lib/libvirt/images /var/lib/libvirt.orig/images
自動マウントするように、fstabにも書いておこう。
(aquarius) $ sudo vi /etc/fstab
以下の行を追記する
--ココから
/dev/mapper/vg--kvm-lv--etc--libvirt /etc/libvirt ext4 _netdev 0 0
/dev/mapper/vg--kvm-lv--var--lib--libvirt /var/lib/libvirt ext4 _netdev 0 0
/dev/mapper/vg--kvm-lv--var--log--libvirt /var/log/libvirt ext4 _netdev 0 0
--ココまで
マウントが正しく出来るか確認を。
(aquarius) $ sudo umount /var/log/libvirt
(aquarius) $ sudo umount /var/lib/libvirt
(aquarius) $ sudo umount /etc/libvirt
(aquarius) $ df
(aquarius) $ sudo mount -a
(aquarius) $ df
最後に再起動して、正しくマウントされるかを確認。
(aquarius) $ sudo shutdown -r now
(aquarius) 再ログインして
(aquarius) $ df
どうやら動いているっぽい。
まぁ、今のゲストOS(aries)は、また作り直せるから、仮に何か問題があったら作りなおそう。
というわけで、リネームしておいた3ディレクトリを削除する。
(aquarius) $ sudo rm -rf /etc/libvirt.orig
(aquarius) $ sudo rm -rf /var/lib/libvirt.orig
(aquarius) $ sudo rm -rf /var/log/libvirt.orig
今回はこれでおしまい。
0 件のコメント:
コメントを投稿