逆引きマニュアル: Vagrant + CentOS 7でディスクをリサイズする方法

投稿日: 更新日:

やりたいこと

以下の組み合わせで、ディスクおよびパーティションのリサイズをする方法です。

  • Vagrant
  • VirtualBox or libvirt
  • CentOS 7(XFS)

前提条件

以下のバージョンで確認しています。

  • Vagrant 2.0.2
  • VirtualBox 5.2.8(macOS)
  • Vagrant Box: centos/7 (virtualbox, 1802.01)

概要

  1. 仮想ディスクのサイズを増加
  2. 非インタラクティブにfdiskを使って、パーティションの作成
  3. partprobeコマンドを使って、パーティションの変更を認識
    • rebootする手順が多いが、partprobeで問題なく反映できた。
  4. PVを作成する。
  5. 作成したPVをVGに追加する。
  6. LVを拡張する。
  7. ファイルシステムを拡張する。

fdiskで既存のパーティションを変更すると、partprobeが使えない

以下のようなエラーが出る。リブートすれば可能だが、なるだけrebootしたくないため却下した。

Error: Partition(s) 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.

手順(1809.01以前)

起動時に以下のスクリプトを流してください。 デバイス名は環境によって異なる可能性があります。KVM(libivrt)では/dev/vdaでした。

## resize disk
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk /dev/sda || true
n  # add a new partition
p  # primary
   # default
   # default
t  # change a partition's system id
4  # new partition
8e # Linux LVM
w  # write table to disk and exit
EOF

partprobe

## resize partition(CentOS 7, XFS)
pvcreate /dev/sda4

vgextend VolGroup00 /dev/sda4
lvextend -l +100%FREE /dev/VolGroup00/LogVol00
xfs_growfs /

手順(1809.01以降)

1809.01から、パーティション構成が変わっています。

具体的に変わったのは以下の点です。

  • パーティションが1つになった
  • ファイルシステムがext4になった
  • スワップファイルが2GB作成された

よって、以下のようにする必要があります。

yum install -y e2fsprogs

## resize disk
sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk /dev/vda || true
d  # delete partition
n  # add a new partition
p  # primary
1  # Partition number: 1
   # First sector(default)
   # Last sector(default)
w  # write table to disk and exit
EOF

partprobe

## resize partition(CentOS 7, ext4)
resize2fs /dev/vda1

制限事項

  • vagrant-disksizeはVirtualBoxのみサポートされています。
  • プライマリパーティションを使用しているため、これ以上拡張できません。
    • 既存のパーティションの拡張は可能ですが、再起動が必要です。

マニュアル