Windows VirtualBox Vagrantの仮想環境で容量が足りなくなってきましたので増やしたいと思います。また、古いファイルは削除しても減らなく圧縮する必要があるようなので、合わせてやりたいと思います。
- Vagrantの容量の割当増加
- Vagrantの古いファイルの圧縮(消すだけでは減らない)
見出し
空き容量をzero詰めする
vagrant内で以下コマンド
1 |
[vagrant@localhost ~]$ dd if=/dev/zero of=zero bs=4k; \rm zero |
vagranを停止する
1 |
$ vagrant halt |
VirtualBoxの構成ファイル(.vmdk)をクローンして.vdi形式にする
コマンドプロンプトで以下フォルダに移動(windowsで以下フォルダを開き、shift右クリックで「コマンドウィンドウをここで開く」(Win8.1)でも可能)
1 |
C:\Program Files\Oracle\VirtualBox |
コマンドプロンプトで以下を実行
1 2 3 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe clonehd "C:\ユーザ\VirtualBox VMs\対象フォルダ\対象ファイル.vmdk" "C:\ユーザ\VirtualBox VMs\対象フォルダ\clone.vdi" --format vdi 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'vdi'. UUID: xxx-xxx-xxx-xxx-xxx |
上記のUUIDを控えておきます。.vdiのUUIDです。
.vdiファイルを圧縮する
先ほど控えた.vdiのUUIDを以下コマンドで指定して圧縮をかけます。
1 2 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe modifyhd xxx-xxx-xxx-xxx-xxx --compact 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% |
.vdiファイルの割当容量を増やす
以下コマンドで実行します。(ex. 100GBに増やす場合、1024MB*100=102400)
1 2 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe modifyhd "C:\ユーザ\VirtualBox VMs\対象フォルダ\clone.vdi" --resize 102400 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% |
.vdiを.vmdkに逆変換する
元のファイル名とは変えて(ex. ファイル名最後尾に100gbと付加)以下コマンドでクローンし直します。
1 2 3 4 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe clonehd "C:\ユーザ\VirtualBox VMs\対象フォルダ\clone.vdi" "C:\ユーザ\VirtualBox VMs\対象フォルダ\対象ファイル_100gb.vmdk" --format vmdk 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'vmdk'. UUID: yyy-yyy-yyy-yyy-yyy [/php] |
一時的に使用したcloneのUUIDを管理対象外にする
以下コマンドでclone.vdiのUUIDを確認します。
1 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list hdds |
物理ファイルは最後に削除します。
以下コマンドでclone.vdiのUUIDを管理対象外にします。
1 |
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe closemedium disk xxx-xxx-xxx-xxx-xxx |
切り替え作業
VirtualBoxの[設定]>[ストレージ]で変更前の.vmdkファイルから変更後の.vmdkに指定しなおします。-ボタンと+ボタン
パーテーション設定・ファイルシステム拡張
$ vagrant upしてrootユーザになって作業します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
[root@localhost ~]# fdisk -l ディスク /dev/sda: 107.4 GB, 107374182400 バイト ヘッド 255, セクタ 63, シリンダ 13054 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0004bcca デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 64 512000 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 64 5222 41430016 <span style="color: #ff0000;">8e</span> Linux LVM ディスク /dev/mapper/VolGroup-lv_root: 41.4 GB, 41448112128 バイト ヘッド 255, セクタ 63, シリンダ 5039 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/VolGroup-lv_swap: 973 MB, 973078528 バイト ヘッド 255, セクタ 63, シリンダ 118 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[root@localhost ~]# fdisk /dev/sda 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。 and change display units to sectors (command 'u'). コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 3 最初 シリンダ (5222-13054, 初期値 5222): 初期値 5222 を使います Last シリンダ, +シリンダ数 or +size{K,M,G} (5222-13054, 初期値 13054): 初期値 13054 を使います コマンド (m でヘルプ): t パーティション番号 (1-4): 3 16進数コード (L コマンドでコードリスト表示): <span style="color: #ff0000;">8e</span> 領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): wq パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。 カーネルはまだ古いテーブルを使っています。新しいテーブルは 次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に 使えるようになるでしょう ディスクを同期しています。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
[root@localhost ~]# fdisk -l ディスク /dev/sda: 107.4 GB, 107374182400 バイト ヘッド 255, セクタ 63, シリンダ 13054 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x0004bcca デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 1 64 512000 83 Linux パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 64 5222 41430016 8e Linux LVM /dev/sda3 5222 13054 62913215 8e Linux LVM ディスク /dev/mapper/VolGroup-lv_root: 41.4 GB, 41448112128 バイト ヘッド 255, セクタ 63, シリンダ 5039 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 ディスク /dev/mapper/<span style="color: #ff0000;">VolGroup</span>-lv_swap: 973 MB, 973078528 バイト ヘッド 255, セクタ 63, シリンダ 118 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00000000 |
1 2 3 4 5 6 |
[root@localhost ~]# reboot Broadcast message from vagrant@localhost.localdomain (/dev/pts/0) at 18:04 ... The system is going down for reboot NOW! |
1 2 |
[root@localhost ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created |
1 2 |
[root@localhost ~]# vgextend VolGroup /dev/sda3 Volume group "VolGroup" successfully extended |
1 2 3 4 |
[root@localhost ~]# lvdisplay -C LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 38.60g lv_swap VolGroup -wi-ao---- 928.00m |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@localhost ~]# vgdisplay --- Volume group --- VG Name VolGroup System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 99.50 GiB PE Size 4.00 MiB Total PE 25473 Alloc PE / Size 10114 / 39.51 GiB Free PE / Size 15359 / 60.00 GiB VG UUID zzz-zzz-zzz-zzz-zzz |
[PE Size]*[Free PE]=4MB*15359=61436MiB を拡張する。
1 2 3 |
[root@localhost ~]# lvextend -L +61436MiB /dev/VolGroup/lv_root Size of logical volume VolGroup/lv_root changed from 38.60 GiB (9882 extents) to 98.60 GiB (25241 extents). Logical volume lv_root successfully resized |
※ここで以下のエラーになる場合もありましたのでリンク貼っておきます。
1 2 3 4 5 6 |
[root@localhost ~]# resize2fs /dev/VolGroup/lv_root resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required old desc_blocks = 3, new_desc_blocks = 7 Performing an on-line resize of /dev/VolGroup/lv_root to 25846784 (4k) blocks. The filesystem on /dev/VolGroup/lv_root is now 25846784 blocks long. |
確認
以下コマンドで約100GBになった事を確認
1 2 3 4 5 6 |
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 97G 1.6G 91G 2% / tmpfs 230M 0 230M 0% /dev/shm /dev/sda1 477M 56M 396M 13% /boot |
色々動かしてみて移行が問題ないようでしたら物理ファイルの削除をします。
これで、拡張は出来たのですが、
圧縮については効果が見えませんでした。何故でしょう。また追記するかもです。
追記です。拡張は出来たけど圧縮されなかったのはMySQLのログファイルが原因でした。
以下記事に記録しました。
参考サイト様の通りにやったら出来ました。