Macで確認。
サイズ変更できるようにvmdkファイルをvdi形式でcloneを作成する
以下コマンド
対象の仮想マシンxxxx.vmdkがあるディレクトリへ移動。
パスはVirtualBoxマネージャなどから確認できる。
cd "/Users/[username]/VirtualBox VMs/centos7"
vdi形式でclone.
仮想マシンは終了しておくこと。
VBoxManage clonehd centos-vm-disk2.vmdk cloned.vdi --format vdi
Windowsの場合VBoxManageの使い方は恐らく以下になる。
"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonehd centos-vm-disk2.vmdk cloned.vdi --format vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...
Progress state: NS_ERROR_INVALID_ARG
VBoxManage: error: Failed to clone medium
VBoxManage: error: Cannot register the hard disk '/Users/xxxx/VirtualBox VMs/xxxxx/cloned.vdi' {8e416fb0-7260-4573-b264-xxxxxx} because a hard disk '/Users/xxxx/VirtualBox VMs/xxxxx/cloned.vdi' with UUID {7fb368fe-1c1f-44e8-b4ba-xxxxx} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox
VBoxManage: error: Context: "RTEXITCODE handleCloneMedium(HandlerArg *)" at line 1023 of file VBoxManageDisk.cpp
Progress state: NS_ERROR_INVALID_ARG
VBoxManage: error: Failed to clone medium
VBoxManage: error: Cannot register the hard disk '/Users/xxxx/VirtualBox VMs/xxxxx/cloned.vdi' {8e416fb0-7260-4573-b264-xxxxxx} because a hard disk '/Users/xxxx/VirtualBox VMs/xxxxx/cloned.vdi' with UUID {7fb368fe-1c1f-44e8-b4ba-xxxxx} already exists
VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component VirtualBoxWrap, interface IVirtualBox
VBoxManage: error: Context: "RTEXITCODE handleCloneMedium(HandlerArg *)" at line 1023 of file VBoxManageDisk.cpp
複数回実行するとエラーになる場合がある。クローン先のファイル名を変えると改善する。
他にもフルパスで指定したりすると行った対処法がある。
VDIをリサイズする
vdiの容量を拡張。MB単位で指定する(10G=10240, 30G=30960)
VBoxManage modifyhd cloned.vdi --resize 30960
vmdk形式に戻す。
ここまででかなり容量を取るので注意。
VBoxManage clonehd cloned2.vdi centos-vm-disk3.vmdk --format vmdk
VirtualBox マネージャ → 設定 → ストレージから拡張後のvmdkファイルを指定する(右クリック→割り当てを除去→ハードディスクを追加)
起動してみて動作するか確認する。
ここまでで容量は増えているがLinux上から確認すると拡張した部分が割り当てられていない。
拡張した部分を割り当てる
VM上で作業が必要
> su - [root@localhost ~]# fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. コマンド (m でヘルプ): m コマンドの動作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) コマンド (m でヘルプ): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p パーティション番号 (3,4, default 3): 3 最初 sector (20480000-41943039, 初期値 20480000): エンターキー 初期値 20480000 を使います Last sector, +sectors or +size{K,M,G} (20480000-41943039, 初期値 41943039): エンターキー 初期値 41943039 を使います Partition 3 of type Linux and of size 10.2 GiB is set コマンド (m でヘルプ): t パーティション番号 (1-3, default 3): 3 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' コマンド (m でヘルプ): w パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 WARNING: Re-reading the partition table failed with error 16: デバイスもしくはリソースがビジー状態です. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) ディスクを同期しています。
再起動
[root@localhost ~]# reboot
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Connection to 127.0.0.1 closed by remote host.
Connection to 127.0.0.1 closed.
(base) MacBook-Pro:php7 shinichiyamada$ vagrant ssh
ssh_exchange_identification: read: Connection reset by peer
(base) MacBook-Pro:php7 shinichiyamada$ vagrant ssh
Last login: Mon Oct 7 05:05:27 2019 from 10.0.2.2
PolicyKit daemon disconnected from the bus.
We are no longer a registered authentication agent.
Connection to 127.0.0.1 closed by remote host.
Connection to 127.0.0.1 closed.
(base) MacBook-Pro:php7 shinichiyamada$ vagrant ssh
ssh_exchange_identification: read: Connection reset by peer
(base) MacBook-Pro:php7 shinichiyamada$ vagrant ssh
Last login: Mon Oct 7 05:05:27 2019 from 10.0.2.2
作業前に容量チェック
[vagrant@localhost ~]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 19G 8.0G 305M 97% /
devtmpfs 299M 0 299M 0% /dev
tmpfs 308M 8.0K 308M 1% /dev/shm
tmpfs 308M 4.4M 304M 2% /run
tmpfs 308M 0 308M 0% /sys/fs/cgroup
/dev/sda1 497M 164M 334M 33% /boot
tmpfs 62M 0 62M 0% /run/user/1000
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 19G 8.0G 305M 97% /
devtmpfs 299M 0 299M 0% /dev
tmpfs 308M 8.0K 308M 1% /dev/shm
tmpfs 308M 4.4M 304M 2% /run
tmpfs 308M 0 308M 0% /sys/fs/cgroup
/dev/sda1 497M 164M 334M 33% /boot
tmpfs 62M 0 62M 0% /run/user/1000
[root@localhost ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 9.27 GiB PE Size 4.00 MiB Total PE 2374 Alloc PE / Size 2364 / 9.23 GiB Free PE / Size 10 / 40.00 MiB VG UUID cpEmYK-XFew-6ZWT-GEeY-yEou-0vLq-OJiD08
ボリュームグループに登録。
作業したパーティション番号が3の場合sda3を指定する。
centos7からボリュームグループ名がVolGroupからcentosに変わっているようだ。
[root@localhost ~]# vgextend centos /dev/sda3
Physical volume "/dev/sda3" successfully created
Volume group "centos" successfully extended
successfullyと表示されたらOK.Physical volume "/dev/sda3" successfully created
Volume group "centos" successfully extended
[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-root
centos7ではresize2fs の代わりにxfs_growfs を使用する
[root@localhost ~]# xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=541184 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=2164736, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 2164736 to 4856832
[root@localhost ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 29G 3.9G 25G 14% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 8.0K 1.4G 1% /dev/shm
tmpfs 1.4G 8.4M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sda1 497M 164M 334M 33% /boot
tmpfs 285M 0 285M 0% /run/user/1000
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 29G 3.9G 25G 14% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 8.0K 1.4G 1% /dev/shm
tmpfs 1.4G 8.4M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sda1 497M 164M 334M 33% /boot
tmpfs 285M 0 285M 0% /run/user/1000
動作が確認できたら元のvmdkとvdiは不要なので削除する
参考
https://knooto.info/virtualbox-centos69-modifyhd/
https://qiita.com/fetaro/items/d7dc74262633ba474bc8
https://forums.virtualbox.org/viewtopic.php?p=271759