で、作り直すとして、どうやってやるか?
やり方は何種類か考えられるけど、どのやり方を実施しようか。
- 一旦バックアップを取り、vg自体を作り直す。
- 新しいLUNをvgに組み込んで、pvmoveで新しいLUNに移動させる
- 新しいLUNからlvを作り、一つずつ中身をコピー(移動)する
LVMシンプロビジョニング領域の場合、おそらくthin pool自体をpvmoveさせることになると思うけど、この場合は移動してもthin poolのままだ。
また、thin poolから作ったlvを移動させることが出来るか不明だ。
3番は、今まで作ったlv名vg名と異なる名前の領域を作り、そちらに(OSコマンドで)移動させることになる。
この場合、名前を後から変更する(vgchange / lvchange)ことになるが、その後の運用にどう影響が出るか分からない。
そのため、今回は1番を利用することにする。
流れは以下の想定だ。
- 3つのlv領域(/etc/libvirt、/var/lib/libvirt、/var/log/libvirt)をそれぞれNASのCIFS領域にバックアップ(tarを使用する想定)
- 念のため、/etc/fstab上の3つのマウント情報をコメント化
- 3つの領域をアンマウント
- 3つのlv削除→thin pool削除→vg削除→pv削除→パーティション削除→ディスク削除
- NASから、当該LUNをiSCSIターゲットから外し、領域を削除
- NAS側で新しいLUNを作成(この時、シンプロビジョニング&スナップショット不可で作成)、iSCSIターゲットに接続
- 新しく見えてきたディスクでパーティション作成→pv作成→vg作成→lv作成→ファイルシステム作成
- /etc/fstabのコメントを元に戻す
- 3つの領域をマウント
- 3つの領域を書き戻す
- 最後に、tarで取っておいたバックアップを削除
また、事前準備として、NASのCIFS領域のマウントと、3つのマウントポイントのパーミッションや所有オーナー、グループも確認しておこう。
(aquarius) $ sudo mount /media/backup
(aquarius) $ df /media/backup
(aquarius) $ ls -ld /etc/libvirt /var/lib/libvirt /var/log/libvirt
では、それぞれの手順に従って進めていこう。
- 3つのlv領域(/etc/libvirt、/var/lib/libvirt、/var/log/libvirt)をそれぞれNASのCIFS領域にバックアップ(tarを使用する想定)
(aquarius) $ cd /etc
(aquarius) $ sudo tar cvSf /media/backup/etc_libvirt.tar libvirt
(aquarius) $ cd /var/lib
(aquarius) $ sudo tar cvSf /media/backup/lib_libvirt.tar libvirt
(aquarius) $ cd /var/log
(aquarius) $ sudo tar cvSf /media/backup/log_libvirt.tar libvirt
(aquarius) $ ls -l /media/backup/*.tar
- 念のため、/etc/fstab上の3つのマウント情報をコメント化
(aquarius) $ sudo vi /etc/fstab
- 3つの領域をアンマウント
(aquarius) $ sudo umount /etc/libvirt
(aquarius) $ sudo umount /var/lib/libvirt
(aquarius) $ sudo umount /var/log/libvirt
(aquarius) $ df
- 3つのlv削除→thin pool削除→vg削除→pv削除→パーティション削除→ディスク削除
(aquarius) $ sudo lvchange -a n vg-kvm/lv-etc-libvirt
(aquarius) $ sudo lvchange -a n vg-kvm/lv-var-lib-libvirt
(aquarius) $ sudo lvchange -a n vg-kvm/lv-var-log-libvirt
(aquarius) $ sudo lvremove -f vg-kvm/lv-etc-libvirt
(aquarius) $ sudo lvremove -f vg-kvm/lv-var-lib-libvirt
(aquarius) $ sudo lvremove -f vg-kvm/lv-var-log-libvirt
(aquarius) $ sudo vgdisplay -v vg-kvm
(aquarius) $ sudo lvchange -a n vg-kvm/lv-kvmthin
(aquarius) $ sudo lvremove -f vg-kvm/lv-kvmthin
(aquarius) $ sudo vgdisplay -v vg-kvm
(aquarius) $ sudo vgremove vg-kvm
(aquarius) $ sudo pvremove /dev/sdc1
(aquarius) $ sudo parted /dev/sdc rm 1
(aquarius) $ sudo parted /dev/sdc print
(aquarius) $ sudo bash -c "echo 1 > /sys/block/sdc/device/delete"
(aquarius) $ ls -l /dev/sd*
- NASから、当該LUNをiSCSIターゲットから外し、領域を削除
各NASのマニュアルに従ってくれい。
- NAS側で新しいLUNを作成(この時、シンプロビジョニング&スナップショット不可で作成)、iSCSIターゲットに接続
こちらも、各NASのマニュアルに従ってくれい。
- 新しく見えてきたディスクでパーティション作成→pv作成→vg作成→lv作成→ファイルシステム作成
(aquarius) $ sudo parted /dev/sdc print
(aquarius) $ sudo parted /dev/sdc mklabel gpt
(aquarius) $ sudo parted /dev/sdc mkpart primary ext4 0% 100%
(aquarius) $ sudo parted /dev/sdc toggle 1 lvm
(aquarius) $ sudo parted /dev/sdc print
(aquarius) $ sudo pvcreate /dev/sdc1
(aquarius) $ sudo vgcreate vg-kvm /dev/sdc1
(aquarius) $ sudo vgdisplay -v vg-kvm
(aquarius) $ sudo lvcreate -L 32M -n lv-etc-libvirt vg-kvm
(aquarius) $ sudo lvcreate -L 50G -n lv-var-lib-libvirt vg-kvm
(aquarius) $ sudo lvcreate -L 2G -n lv-var-log-libvirt vg-kvm
(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
- /etc/fstabのコメントを元に戻す
(aquarius) $ sudo vi /etc/fstab
- 3つの領域をマウント
(aquarius) $ sudo mount -a
(aquarius) $ df
- 3つの領域を書き戻す
(aquarius) $ cd /etc
(aquarius) $ sudo tar xvSf /media/backup/etc_libvirt.tar
(aquarius) $ cd /var/lib
(aquarius) $ sudo tar xvSf /media/backup/lib_libvirt.tar
(aquarius) $ cd /var/log
(aquarius) $ sudo tar xvSf /media/backup/log_libvirt.tar
(aquarius) $ ls /etc/libvirt
(aquarius) $ ls /var/lib/libvirt
(aquarius) $ ls /var/log/libvirt
(aquarius) $ ls -ld /etc/libvirt /var/lib/libvirt /var/log/libvirt
- 最後に、tarで取っておいたバックアップを削除
の前に、仮想マシンが動くかどうかは確認しておこう。
(aquarius) $ virsh list --all
(aquarius) $ virsh dominfo aries
(aquarius) $ virsh start aries
(aquarius) $ virsh list --all
(aquarius) $ virsh dominfo aries
(aquarius) $ virsh domdisplay aries
仮想マシンにログインして、syslog等確認したらシャットダウンをしておくこと。
(aries) $ sudo shutdown -h now
(aquarius) $ virsh list --all
では、バックアップしたものは削除しておく。
(aquarius) $ sudo rm /media/backup/etc_libvirt.tar
(aquarius) $ sudo rm /media/backup/lib_libvirt.tar
(aquarius) $ sudo rm /media/backup/log_libvirt.tar
(aqaurius) $ sudo umount /media/backup
もし余裕があれば、aquariusを再起動して、再度マウントされるか確認しておくのもいいだろう。
(aquairus) $ sudo shutdown -r now
(aquarius) $ df
ちなみに、使っているNASキット、内部は組み込み用にカスタマイズされたLinuxのようで、iSCSIのLUNは、1つずつ大きなファイルになっている。
これを見てみると、今回用意したファイルは確かに見た目上100GBあるのだが、duで確認してみると、1.6GB程度しかない。
これは、ariesの仮想ディスクとしても実際に確保されているサイズが1.4GB程度で、その他細かいファイルが幾つか存在することと、管理上ある程度使用されている領域の合計だと考えられる。
やっと、NAS側でちゃんとシンプロビジョニングが使えるようになったよ…。
今回はここまで。
0 件のコメント:
コメントを投稿