Windows VirtualBox Vagrantの仮想環境で容量が足りなくなってきましたので増やしたいと思います。また、古いファイルは削除しても減らなく圧縮する必要があるようなので、合わせてやりたいと思います。
- Vagrantの容量の割当増加
- Vagrantの古いファイルの圧縮(消すだけでは減らない)
空き容量をzero詰めする
vagrant内で以下コマンド
[vagrant@localhost ~]$ dd if=/dev/zero of=zero bs=4k; \rm zero
vagranを停止する
$ vagrant halt
VirtualBoxの構成ファイル(.vmdk)をクローンして.vdi形式にする
コマンドプロンプトで以下フォルダに移動(windowsで以下フォルダを開き、shift右クリックで「コマンドウィンドウをここで開く」(Win8.1)でも可能)
C:\Program Files\Oracle\VirtualBox
コマンドプロンプトで以下を実行
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を以下コマンドで指定して圧縮をかけます。
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)
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と付加)以下コマンドでクローンし直します。
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を確認します。
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe list hdds
物理ファイルは最後に削除します。
以下コマンドでclone.vdiのUUIDを管理対象外にします。
C:\Program Files\Oracle\VirtualBox> VBoxManage.exe closemedium disk xxx-xxx-xxx-xxx-xxx
切り替え作業
VirtualBoxの[設定]>[ストレージ]で変更前の.vmdkファイルから変更後の.vmdkに指定しなおします。-ボタンと+ボタン
パーテーション設定・ファイルシステム拡張
$ vagrant upしてrootユーザになって作業します。
[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/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
[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 コマンドでコードリスト表示): 8e
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): wq
パーティションテーブルは変更されました!
ioctl() を呼び出してパーティションテーブルを再読込みします。
警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。新しいテーブルは
次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に
使えるようになるでしょう
ディスクを同期しています。
[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/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
[root@localhost ~]# reboot Broadcast message from vagrant@localhost.localdomain (/dev/pts/0) at 18:04 ... The system is going down for reboot NOW!
[root@localhost ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created
[root@localhost ~]# vgextend VolGroup /dev/sda3
Volume group "VolGroup" successfully extended
[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
[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 を拡張する。
[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
※ここで以下のエラーになる場合もありましたのでリンク貼っておきます。
https://normalblog.net/system/vagrantlogical-volume-lv_root-not-found-in-volume-group-volgroup/
[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になった事を確認
[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のログファイルが原因でした。
以下記事に記録しました。
https://normalblog.net/system/binarylog/
参考サイト様の通りにやったら出来ました。