Virtualbox6上のCentOS7のディスク拡張したい(VMDKとPVとVGの拡張)

Virtualbox6上のCentOS7のディスク拡張したい

OMCC(Oracle Enterprise Manager Cloud Control)をインストールしているときに、
以下の二つのディレクトリの容量が足りんとエラーが出たので拡張する

$ df -h /u01/app/oracle/middleware/
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   38G   31G  7.3G  81% /
$ df -h /u01/app/oracle/agent/
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   38G   31G  7.3G  81% /

全体図

【1】vmdkを拡張して(赤)、【2】PV(物理ボリューム)を拡張して(青)、【3】VG(ボリュームグループ)を拡張する(緑)と、「middleware/」「agent/」ディレクトリで使える容量が増える


目次

  • 【1】vmdk(物理ディスク)の拡張
  • 【2】PV(物理ボリューム)の拡張
  • 【3】VG(ボリュームグループ)の拡張

    【1】vmdk(物理ディスク)の拡張

    まずは、物理ディスク容量を増やす
    「物理」という表現を使っているが、今回はVirtualboxの仮想ディスク(vmdk)の容量を拡張する
    (うまい表現が思いつかない、、、)

    ※全てMacから操作

    Vittualboxで認識している、ディスク(VM)たちは「VBoxManage list hdds」で確認できる

    ディスクと言っても、Virtualboxでは実態はvmdk(VMwareの形式)やvdi(Virtualboxの形式)のファイルとなる

    % VBoxManage list hdds
    ...
    (略)
    ...
    UUID:           AAA-AAA-AAA
    Parent UUID:    base
    State:          locked write
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vmdk
    Storage format: VMDK
    Capacity:       40960 MBytes
    Encryption:     disabled
    

    作業する前に、お好きな方法でVMを停止しておく

    Location部分に書いてある、作業するディレクトリに移動

    % cd /Users/hogehoge/VirtualBox\ VMs/
    

    vmdk形式のままだと拡張できないので、一度vdi形式にcloneする
    ※cloneは時間がかかる

    % vboxmanage clonehd "mgmt_vm/centos-7-1-1.x86_64.vmdk" "mgmt_vm/centos-7-1-1.x86_64.vdi" --format vdi
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Clone medium created in format 'vdi'. UUID: BBB-BBB-BBB
    

    vdi形式のファイルができていることを確認

    % VBoxManage list hdds
    ...
    (略)
    ...
    UUID:           AAA-AAA-AAA
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vmdk
    Storage format: VMDK
    Capacity:       40960 MBytes
    Encryption:     disabled
    
    UUID:           BBB-BBB-BBB
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vdi
    Storage format: vdi
    Capacity:       40960 MBytes
    Encryption:     disabled
    

    作成したvdiを拡張する
    ※modifyはすぐ終わる

    % vboxmanage modifyhd "mgmt_vm/centos-7-1-1.x86_64.vdi" --resize 61440
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    

    vdiファイルの容量が増えていることを確認

    % VBoxManage list hdds
    ...
    (略)
    ...
    UUID:           AAA-AAA-AAA
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vmdk
    Storage format: VMDK
    Capacity:       40960 MBytes
    Encryption:     disabled
    
    UUID:           BBB-BBB-BBB
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vdi
    Storage format: vdi
    Capacity:       61440 MBytes
    Encryption:     disabled
    

    拡張が終わったので、vdi形式からvmdkにcloneする
    (名前変更ができなさそうだったので、新しい名前でvmdkを作成)

    % VBoxManage clonehd "mgmt_vm/centos-7-1-1.x86_64.vdi" "mgmt_vm/centos-7-1-1.x86_64_60.vmdk" --format vmdk
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Clone medium created in format 'vmdk'. UUID: CCC-CCC-CCC
    

    「元のvmdkファイル」「cloneして拡張したvdiファイル」「拡張したvdiファイルをvmdkにしたファイル」の三つができていることを確認

    % VBoxManage list hdds
    ...
    (略)
    ...
    UUID:           AAA-AAA-AAA
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vmdk
    Storage format: VMDK
    Capacity:       40960 MBytes
    Encryption:     disabled
    
    UUID:           BBB-BBB-BBB
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64.vdi
    Storage format: vdi
    Capacity:       61440 MBytes
    Encryption:     disabled
    
    UUID:           CCC-CCC-CCC
    Parent UUID:    base
    State:          created
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64_60.vmdk
    Storage format: vmdk
    Capacity:       61440 MBytes
    Encryption:     disabled
    

    今は「元のvmdkファイル」が使われているが、「拡張したvdiファイルをvmdkにしたファイル」を使うように設定
    ※VMは停止した状態でないと設定できません

    VMを選択して「Settings」>「Storage」をクリック

    今使っているvmdkを削除

    コントローラを選択して、「Add Hard Disk」

    先ほどコマンドで作成済みなので「Coose existing disk」

    新しく作成したvmdkを選択(vdiの方ではなく)

    新しく作成したvmdkをつけることができたら「OK」

    無事に設定できたら、不要になった「元のvmdkファイル」「cloneして拡張したvdiファイル」を消しておく
    「VBoxManage closemedium disk 【UUID】」

    % VBoxManage closemedium disk AAA-AAA-AAA
    % VBoxManage closemedium disk BBB-BBB-BBB
    

    消えていることを確認

    % VBoxManage list hdds
    ...
    (略)
    ...
    UUID:           CCC-CCC-CCC
    Parent UUID:    base
    State:          locked write
    Type:           normal (base)
    Location:       /Users/hogehoge/VirtualBox VMs/mgmt_vm/centos-7-1-1.x86_64_60.vmdk
    Storage format: vmdk
    Capacity:       61440 MBytes
    Encryption:     disabled
    

    参考:VirtualBox の仮想ディスクのサイズを変更する


    【2】PV(物理ボリューム)の拡張

    ※ここからはVMから操作する

    ここまでで、物理的にディスク容量が増えた状態なので、ここからはCentOS7で増やしたディスクを認識させる
    ※この時点でdfコマンドで確認すると、作成した容量は、/vagrantにマウントされていた

    最終的に増やしたいのは、「/dev/mapper/VolGroup00-LogVol00」のファイル容量だが、VolGroup00はVG(ボリュームグループ)なので、
    まずは、PV(物理ボリューム)には「/dev/sda3」を増やす

    $ sudo pvdisplay
      --- Physical volume ---
      PV Name               /dev/sda3
      VG Name               VolGroup00
      PV Size               <39.00 GiB / not usable 30.00 MiB
      Allocatable           yes (but full)
      PE Size               32.00 MiB
      Total PE              1247
      Free PE               0
      Allocated PE          1247
      PV UUID               vrrtbx-g480-HcJI-5wLn-4aOf-Olld-rC03AY
    

    fdiskコマンドで「/dev/sda3」の容量を増やす

    $ sudo 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.
    
    
    Command (m for help): p    # /dev/sda3がLVMとなっていることを確認
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000b47f7
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048        4095        1024   83  Linux
    /dev/sda2   *        4096     2101247     1048576   83  Linux
    /dev/sda3         2101248    83886079    40892416   8e  Linux LVM
    
    Command (m for help): d    # 既存の/dev/sda3を一旦削除
    Partition number (1-3, default 3): 3    # 既存の/dev/sda3を一旦削除
    Partition 3 is deleted
    
    Command (m for help): p    # 既存の/dev/sda3が削除されたことを確認
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000b47f7
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048        4095        1024   83  Linux
    /dev/sda2   *        4096     2101247     1048576   83  Linux
    
    Command (m for help): n    # 新しく大きな/dev/sda3を作成
    Partition type:
       p   primary (2 primary, 0 extended, 2 free)
       e   extended
    Select (default p): p
    Partition number (3,4, default 3): 3
    First sector (2101248-125829119, default 2101248):
    Using default value 2101248
    Last sector, +sectors or +size{K,M,G} (2101248-125829119, default 125829119):
    Using default value 125829119
    Partition 3 of type Linux and of size 59 GiB is set
    
    Command (m for help): p    # 新しく大きな/dev/sda3が作成されたことを確認
    
    Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk label type: dos
    Disk identifier: 0x000b47f7
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1            2048        4095        1024   83  Linux
    /dev/sda2   *        4096     2101247     1048576   83  Linux
    /dev/sda3         2101248   125829119    61863936   83  Linux
    
    Command (m for help): w    # 設定を保存して終了
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
    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)
    Syncing disks.
    $
    

    設定反映のために再起動する

    $ sudo shutdown -r now
    

    再起動した後、多分このコマンドも必要

    $ sudo pvresize /dev/sda3
      Physical volume "/dev/sda3" changed
      1 physical volume(s) resized or updated / 0 physical volume(s) not resized
    

    【3】VG(ボリュームグループ)の拡張

    物理ボリュームが拡張されたので、VG(ボリュームグループ)を拡張する

    まずは、「vgdisplay」で状況確認
    「Free PE / Size」部分をみると、20GB余裕があることがわかる
    ※余談:「PE(物理エクステント)」は扱える最小単位のこと。今回の例だと「PE Size 32Mib × Free PE 640 = 20.00 GiB」

    $ sudo vgdisplay
      --- Volume group ---
      VG Name               VolGroup00
      System ID
      Format                lvm2
      Metadata Areas        1
      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                1
      Act PV                1
      VG Size               <58.97 GiB
      PE Size               32.00 MiB
      Total PE              1887
      Alloc PE / Size       1247 / <38.97 GiB
      Free  PE / Size       640 / 20.00 GiB
      VG UUID               SA8LTU-F2yz-FEV1-RdgT-hw0Z-iRxh-yHFKuU
    

    空き容量いっぱいまでVGを拡張する

    $ sudo lvextend -l +100%FREE /dev/VolGroup00/LogVol00
      Size of logical volume VolGroup00/LogVol00 changed from <37.47 GiB (1199 extents) to <57.47 GiB (1839 extents).
      Logical volume VolGroup00/LogVol00 successfully resized.
    

    空き容量がゼロになっていればOK

    $ sudo vgdisplay
      --- Volume group ---
      VG Name               VolGroup00
      System ID
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  5
      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               <58.97 GiB
      PE Size               32.00 MiB
      Total PE              1887
      Alloc PE / Size       1887 / <58.97 GiB
      Free  PE / Size       0 / 0
      VG UUID               SA8LTU-F2yz-FEV1-RdgT-hw0Z-iRxh-yHFKuU
    

    ファイルシステムの拡張
    ここまできて、dfコマンドで出てきた、お目当のファイルをやっと拡張できる
    ※CentOS6の場合は、resize2fsコマンド

    $ sudo xfs_growfs /dev/mapper/VolGroup00-LogVol00
    meta-data=/dev/mapper/VolGroup00-LogVol00 isize=512    agcount=4, agsize=2455552 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=9822208, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=4796, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 9822208 to 15065088
    

    うまく拡張できた

    $ df -h /u01/app/oracle/middleware/
    Filesystem                       Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-LogVol00   58G   31G   28G  53% /
    
    $ df -h /u01/app/oracle/agent/
    Filesystem                       Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-LogVol00   58G   31G   28G  53% /
    

    参考:論理ボリュームサイズ拡大

    以上。