vagrantのboxイメージ作成手順
既存のboxイメージのディスク容量を増やした時の手順メモです。
1. 元となるboxを使用してVM作成
- 適当なディレクトリでvagrant初期化
$ vagrant init
- vagrantファイルにboxのurl追記
$ vi Vagrantfile
今回は下記のものを使用した。
https://github.com/holms/vagrant-centos7-box/releases/download/7.1.1503.001/CentOS-7.1.1503-x86_64-netboot.box
- VM起動
$ vagrant up
- VM停止
$ vagrant halt
2. VMの修正
- Virtualbox GUIでディスク追加(vdi, 120GB)
ディスク名は適当に「NewVirtualDisk2.vdi」とか
- 既存のディスク(box-disk1.vmdk)内容を新規ディスクにコピー
command
$ VBoxManage clonehd {既存ディスク} {新規ディスク} --existing
実際のコマンド
$ VBoxManage clonehd box-disk1.vmdk NewVirtualDisk2.vdi --existing
-
Virtualbox GUIで古いディスク(box-disk1.vmdk)を削除
-
VM起動
$ vagrant up
3. VM内でディスク設定
$ vagrant ssh
ここからVM内でディスク操作
# sudo su -
# fdisk -l
# fdisk /dev/sda
(実行サンプル)
コマンド (m でヘルプ): n ← を入力
コマンドアクション
e 拡張
p 基本パーティション (1-4)
p ← を入力
パーティション番号 (1-4): 3 ← を入力
最初 シリンダ (1958-3916, 初期値 1958): エンター ← を入力
初期値 1958 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (1958-3916, 初期値 3916): エンター ← を入力
初期値 3916 を使います
コマンド (m でヘルプ): t ← を入力
パーティション番号 (1-4): 3 ← を入力
16進数コード (L コマンドでコードリスト表示): 8e ← を入力
領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました
コマンド (m でヘルプ): p ← を入力
ディスク /dev/sda: 32.2 GB, 32212238336 バイト
ヘッド 255, セクタ 63, シリンダ 3916
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x0001959a
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 64 512000 83 Linux
パーティション 1 は、シリンダ境界で終わっていません。
/dev/sda2 64 1958 15214592 8e Linux LVM
/dev/sda3 1958 3916 15727654 83 Linux LVM
コマンド (m でヘルプ): w ← を入力
# reboot
# sudo su -
# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created
# 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.41 GiB
PE Size 4.00 MiB
Total PE 2409
Alloc PE / Size 2399 / 9.37 GiB
Free PE / Size 10 / 40.00 MiB
VG UUID T3uSCD-GT7k-K08J-YwyH-yfWO-G3IL-IzJ653
# vgextend centos /dev/sda3
Volume group "centos" successfully extended
# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 8.38 GiB (2145 extents) to 118.51 GiB (30339 extents).
Logical volume root successfully resized
# resize2fs /dev/mapper/centos-root (※1)
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/centos-root
Couldn't find valid filesystem superblock.
# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=549120 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=2196480, 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 2196480 to 31067136
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 119G 1.1G 118G 1% /
devtmpfs 223M 0 223M 0% /dev
tmpfs 229M 0 229M 0% /dev/shm
tmpfs 229M 4.3M 225M 2% /run
tmpfs 229M 0 229M 0% /sys/fs/cgroup
/dev/sda1 497M 83M 414M 17% /boot
# exit
$ exit
※1. centos7ではresize2fsが使えない。代わりにxfs_growfsを使う
⇒ CentOS 7(XFS)でLVMディスク拡張でハマったこと
VM停止
$ vagrant halt
4. boxイメージ作成
$ vagrant package