こんにちは、mi2yo4です。
いよいよGW目前となりました。
今年もどこかに旅に出たいと思っていますが、どうなることやら…
さて今回は、少し前に行った作業のメモを書いておこうかと思います。
Linux上で構築した仮想マシンに割り当てるHDD容量を増やす、というものでちょっとニッチな感じもします。が、少なくとも未来のLinuxのHDDをふっ飛ばし、涙目になって再セットアップしている自分には役に立ちそうな感じです^^;
2月以降の私たち
「Vagrantを使ってFuelPHP開発環境を構築」というエントリを書いて以来、私たちはVagrantを使用した開発者個々のマシン上の仮想環境でソフト動作確認・デバッグを行うようになっています。
また、先日(2017/2)に行ったあぐりログサーバの増強に伴い、サーバ上の蓄積されたデータが定期的にバックアップされるようになっています。
最近ではこのバックアップされたデータを加工し、開発者各自で色々な解析を始めています。
解析する目的はもちろん、より良い栽培環境のアドバイス、的なものをあぐりログで作りたい!と思っているからです。
仮想サーバ(vagrant)のHDD容量が足りない!
私も解析を始める一人でして、まずは手元のLinuxマシンで仮想サーバ環境と解析環境を構築しています。
今回は、この構築で困った事がありました。と言うのも、
「通常の仮想サーバ環境だとHDD容量が足りなくてデータを展開できない!」
と言うものです。
ので、その解決方法も併せて書いてみるつもりです。
仮想Linuxサーバ環境を構築
前述したVagrantはサーバの仮想化ソフトウェアとしてVirtualBoxを使っています。
開発者のマシンでよく使われるWindowsやMacOS(OSX)上ではとても便利に使えます。
一方、LinuxではKVMやXenといった仮想化ソフトウェアが標準です。ここで困った事にVagrantはそのままの状態ではKVMなどに対応していません。
それらを使う際にはVirtualBoxをLinuxにインストールするか、VagrantにlibvirtをインストールしてKVM形式にも対応させるか、となります。
で、私が今手持ちのLinuxサーバで使っているのは上で言うと後者の方式です。
諸般の事情により、(と言っても対象のLinuxサーバにモニタが繋がっていないので、CUIで使いやすそうな)後者の方法を用いました。
HDD容量を増やすための手順
ここからは実際にやった手順を書いていきます。
1. 最初にbox.imgの中身を確認します
$ virt-filesystems -lh --parts --pvs --vgs --lvs --extra -a box.img Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 500M - /dev/VolGroup/lv_root filesystem ext4 - - 38G - /dev/VolGroup/lv_swap filesystem swap - - 2.0G - /dev/VolGroup/lv_root lv - - - 38G /dev/VolGroup /dev/VolGroup/lv_swap lv - - - 2.0G /dev/VolGroup /dev/VolGroup vg - - - 40G /dev/sda2 /dev/sda2 pv - - - 40G - (←ここの値を下の3.で指定する) /dev/sda1 partition - - 83 500M /dev/sda /dev/sda2 partition - - 8e 40G /dev/sda
今回の最終目的は/dev/VolGroup/lv_rootを38Gから増やすこと。
2. 新しいディスクイメージの作成
今回は40Gの2.5倍の100Gで作成しましょう。
$ qemu-img create -f qcow2 box.img.new 100G
3. パーティションの割当
上記で確認した結果LVMパーティション(/dev/sda2)を増やし、同時に増加分を全て/dev/VolGroup/lv_rootに割り当てます。
$ virt-resize --expand /dev/sda2 --LV-expand /dev/VolGroup/lv_root box.img box.img.new
4. 結果を確認
結果を確認してみます。
# virt-filesystems -lh --parts --pvs --vgs --lvs --extra -a box.img.new Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 500M - /dev/VolGroup/lv_root filesystem ext4 - - 98G - /dev/VolGroup/lv_swap filesystem swap - - 2.0G - /dev/VolGroup/lv_root lv - - - 98G /dev/VolGroup /dev/VolGroup/lv_swap lv - - - 2.0G /dev/VolGroup /dev/VolGroup vg - - - 100G /dev/sda2 /dev/sda2 pv - - - 100G - /dev/sda1 partition - - 83 500M /dev/sda /dev/sda2 partition - - 8e 100G /dev/sda
無事に/dev/VolGroup/lv_rootには98Gが割り当てられました。
5. box.imgの置き換え
今までのbox.imgを退避させて、新しいbox.imgを使うようにします。
$ mv box.img.new box.img
6. vagrant起動
root@debug-server:~/.vagrant.d/boxes/bento-VAGRANTSLASH-centos-6.8/2.3.1/libvirt# virt-resize --expand /dev/sda2 box.img box.img.new root@debug-server:~/.vagrant.d/boxes/bento-VAGRANTSLASH-centos-6.8/2.3.1/libvirt# virt-filesystems -lh --parts --pvs --vgs --lvs --extra -a box.img Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 500M - /dev/VolGroup/lv_root filesystem ext4 - - 38G - /dev/VolGroup/lv_swap filesystem swap - - 2.0G - /dev/VolGroup/lv_root lv - - - 38G /dev/VolGroup /dev/VolGroup/lv_swap lv - - - 2.0G /dev/VolGroup /dev/VolGroup vg - - - 40G /dev/sda2 /dev/sda2 pv - - - 40G - /dev/sda1 partition - - 83 500M /dev/sda /dev/sda2 partition - - 8e 40G /dev/sda root@debug-server:~/.vagrant.d/boxes/bento-VAGRANTSLASH-centos-6.8/2.3.1/libvirt# virt-filesystems -lh --parts --pvs --vgs --lvs --extra -a box.img.new Name Type VFS Label MBR Size Parent /dev/sda1 filesystem ext4 - - 500M - /dev/VolGroup/lv_root filesystem ext4 - - 38G - /dev/VolGroup/lv_swap filesystem swap - - 2.0G - /dev/VolGroup/lv_root lv - - - 38G /dev/VolGroup /dev/VolGroup/lv_swap lv - - - 2.0G /dev/VolGroup /dev/VolGroup vg - - - 100G /dev/sda2 /dev/sda2 pv - - - 100G - /dev/sda1 partition - - 83 500M /dev/sda /dev/sda2 partition - - 8e 100G /dev/sda virt-resize --expand /dev/sda2 --LV-expand /dev/VolGroup/lv_root box.img box.img.new
$ vagrant up $ vagrant ssh
ここでfdiskを用いてパーティション設定を行いました。
その後、以下のコマンドを投入
[root@localhost ~]# pvcreate /dev/sda3 [root@localhost ~]# vgextend VolGroup /dev/sda3 [root@localhost ~]# lvextend -l +100%FREE /dev/mapper/VolGroup-lv_root [root@localhost ~]# resize2fs /dev/mapper/VolGroup-lv_root [root@localhost ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root 100538860 800444 94630040 1% / tmpfs 251000 0 251000 0% /dev/shm /dev/sda1 487652 29986 432066 7% /boot
ふぅ~、お疲れ様でした。
これで何とかLinux上に仮想マシンを立ち上げることが出来ました。
未来の私、分かりましたか?
それではまた!
参考情報
LVMで新たにディスクを追加して既存のLVを拡張する
http://qiita.com/g_maeda/items/3602dc2f7af3f711f9c4