Vagrant (VirtualBox) のストレージ容量を拡張する (SCSI)

前提

  • Windows 7
  • SCSI

Vagrantfile が何らかの理由で編集できない場合の対処方法。
編集できる場合は vagrant-disksize を使った方が圧倒的に楽。

手順

1. VirtualBox の VM があるディレクトリに移動

cd C:\Users\Administrator\VirtualBox VMs\vagrantd_default_1502348908788_78497\

2. vdi 形式でクローン

VBoxManage clonehd "box-disk002.vmdk" "clone-disk002.vdi" --format vdi

3. クローンした vdi のストレージサイズを確認

VBoxManage showhdinfo clone-disk002.vdi
	Capacity:       8192 MBytes

4. サイズを MB 単位で指定して変更

VBoxManage modifyhd clone-disk002.vdi --resize 20480

5. 再度ストレージサイズを確認

VBoxManage showhdinfo clone-disk002.vdi
	Capacity:       20480 MBytes

6. vmdk 形式に戻す

VBoxManage clonehd "clone-disk002.vdi" "box-disk003.vmdk" --format vmdk

7. 設定されている仮想ディスクの情報を確認

VBoxManage showvminfo vagrantd_default_1502348908788_78497
	SCSI (0, 0): C:\Users\Administrator\VirtualBox VMs\vagrantd_default_1502348908788_78497\box-disk002.vmdk (UUID: f3a1ee32-bcfe-4987-aec4-cd73d9f72261)

8. 仮想ディスク差し替え

VBoxManage storageattach vagrantd_default_1502348908788_78497 --storagectl "SCSI" --port 0 --device 0 --type hdd --medium box-disk003.vmdk

9. 仮想ディスクが差し変わっている事を確認

VBoxManage showvminfo vagrantd_default_1502348908788_78497
	SCSI (0, 0): C:\Users\Administrator\VirtualBox VMs\vagrantd_default_1502348908788_78497\box-disk003.vmdk (UUID: 47040d0c-1235-41ba-9b49-23217b539059)

10. Vagrant を起動してディスクサイズが変更されていることを確認する

vagrant up
# df -h

11. 生成した vdi と変更前の vmdk を管理下から外して削除

VBoxManage closemedium clone-disk002.vdi
VBoxManage closemedium box-disk002.vmdk
del clone-disk002.vdi
del box-disk002.vmdk

12. ログインして root に切り替えて fdisk -l で現在の状態を確認

# fdisk -l
	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sda1   *        2048     2099199     1048576   83  Linux
	/dev/sda2         2099200    16777215     7339008   8e  Linux LVM

13. /dev/sda3 (基本パーティション 3) を作成

# fdisk /dev/sda
	コマンド (m でヘルプ): n
	Partition type:
	   p   primary (2 primary, 0 extended, 2 free)
	   e   extended
	Select (default p): p
	パーティション番号 (3,4, default 3): 3
	最初 sector (16777216-41943039, 初期値 16777216):
	初期値 16777216 を使います
	Last sector, +sectors or +size{K,M,G} (16777216-41943039, 初期値 41943039):
	初期値 41943039 を使います
	Partition 3 of type Linux and of size 12 GiB is set

14. /dev/sda3 を Linux LVM に変更

	コマンド (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 でヘルプ): p
	
	Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
	Units = sectors of 1 * 512 = 512 bytes
	Sector size (logical/physical): 512 bytes / 512 bytes
	I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
	Disk label type: dos
	ディスク識別子: 0x000d6b77
	
	デバイス ブート      始点        終点     ブロック   Id  システム
	/dev/sda1   *        2048     2099199     1048576   83  Linux
	/dev/sda2         2099200    16777215     7339008   8e  Linux LVM
	/dev/sda3        16777216    41943039    12582912   8e  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)
	ディスクを同期しています。

15. シャットダウンして再度 vagrant up

# shutdown -h now
vagrant up

16. /dev/sda3 を VolumeGroup (cl) に加える

# pvcreate /dev/sda3
# pvdisplay
	--- Physical volume ---
	PV Name               /dev/sda2
	VG Name               cl
	PV Size               7.00 GiB / not usable 3.00 MiB
	Allocatable           yes (but full)
	PE Size               4.00 MiB
	Total PE              1791
	Free PE               0
	Allocated PE          1791
	PV UUID               9bdX0L-5Pu0-8pZF-DRPq-WqTV-fswm-75Jed5
>
	"/dev/sda3" is a new physical volume of "12.00 GiB"
	--- NEW Physical volume ---
	PV Name               /dev/sda3
	VG Name
	PV Size               12.00 GiB
	Allocatable           NO
	PE Size               0
	Total PE              0
	Free PE               0
	Allocated PE          0
	PV UUID               Ql8OI1-9lf6-Feze-8AJU-RjK3-popX-sdWxSz

# vgextend cl /dev/sda3
	Volume group "cl" successfully extended

17. ルートファイルシステムを提供している論理ボリュームのデバイス名を確認

# df
	ファイルシス        1K-ブロック    使用  使用可 使用% マウント位置
	/dev/mapper/cl-root     6486016 5325048 1160968   83% /

18. /dev/mapper/cl-root のサイズを拡張

# lvextend -l +100%FREE /dev/mapper/cl-root

↓ pvcreate 分のメッセージ

	New size (1586 extents) matches existing size (1586 extents).

↓ vgextend 分のメッセージ

	Size of logical volume cl/root changed from 6.20 GiB (1586 extents) to 18.19 GiB (4657 extents).
	Logical volume cl/root successfully resized.

19. xfs ファイルシステムとしては拡張されていないことを確認

# df -h

20. xfs ファイルシステムを拡張

# xfs_growfs /
	meta-data=/dev/mapper/cl-root    isize=512    agcount=4, agsize=406016 blks
	         =                       sectsz=512   attr=2, projid32bit=1
	         =                       crc=1        finobt=0 spinodes=0
	data     =                       bsize=4096   blocks=1624064, imaxpct=25
	         =                       sunit=0      swidth=0 blks
	naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
	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 1624064 to 4768768