0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

オンラインでRedHatのLVMを拡張する

Posted at

はじめに

Azure上のRedHatに構成されてるLVMのディスクをオンライン状態で拡張しました。
Linuxを理解できてる人には簡単なんだろうけど、
UNIX系のVM触ると10回に1回ぐらいはVMを破壊して起動できなくしてしまう私にはまだまだ難しい...(笑)
ということで備忘録。

環境

  • Azure上のVM
  • RedHat8.6

※拡張はrootユーザで行う必要があります。作業前にsudo su -でrootにスイッチしてください。

目次

1.新規ディスクを追加する場合
2.既存ディスクを拡張する場合

1. 新規ディスクを追加する場合

既存ディスクのサイズは変更せず、新規にディスクを追加してLVMを拡張します。

  1. Azure上でディスクを追加
    Azure Portalにログインして、ディスクを拡張したいVMの「ディスク」画面から新規ディスクを追加します。
    001.jpg

  2. 対象VMにSSH接続(TeraTerm等で接続)

  3. 追加したディスクを確認

    [localadmin@test-rhel86vm2 ~]$ lsblk
    NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                     8:0    0   64G  0 disk 
     sda1                  8:1    0  500M  0 part /boot
     sda2                  8:2    0   63G  0 part 
       rootvg-tmplv      253:5    0    2G  0 lvm  /tmp
       rootvg-usrlv      253:6    0   10G  0 lvm  /usr
       rootvg-homelv     253:7    0    1G  0 lvm  /home
       rootvg-varlv      253:8    0    8G  0 lvm  /var
       rootvg-rootlv     253:9    0   42G  0 lvm  /
      sda14                 8:14   0    4M  0 part 
      sda15                 8:15   0  495M  0 part /boot/efi
    sdb                     8:16   0  300G  0 disk 
      sdb1                  8:17   0  300G  0 part /mnt
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sdm                     8:192  0  256G  0 disk   # ←今回の新規追加したディスク
    
  4. 追加したディスクをアクティブ化

    [root@test-rhel86vm2 ~]# parted -s -a optimal /dev/sdm -- mklabel gpt mkpart primary 1 -1 set 1 lvm on
    # 特にエラー等が表示されず、コマンドが返ってこれば成功
    
  5. 物理ボリュームを作成

    [root@test-rhel86vm2 ~]# pvcreate /dev/sdm1
      Physical volume "/dev/sdm1" successfully created.
    
  6. 既存のボリュームグループに作成した物理ボリュームを追加

    [root@test-rhel86vm2 ~]# vgextend <物理ボリュームを追加するvg名> /dev/sdm1
      Volume group "hanavg" successfully extended
    
    [root@test-rhel86vm2 ~]# vgs
      VG       #PV #LV #SN Attr   VSize    VFree
      hanavg     8   2   0 wz--n-   <2.00t 1.12t ← 追加したvgに空きスペースが作成されることを確認
      mediavg    1   1   0 wz--n- <512.00g    0 
      rootvg     1   5   0 wz--n-  <63.02g    0 
      sharedvg   1   1   0 wz--n- <512.00g    0 
      usrsapvg   1   1   0 wz--n-  <64.00g    0 
    
  7. LVMを拡張

    # 追加する容量をGB単位で指定
    [root@test-rhel86vm2 ~]# lvextend -i1 -L +768G <拡張するLVM>
      Size of logical volume hanavg/datalv changed from 511.98 GiB (131068 extents) to <1.25 TiB (327676 extents).
      Logical volume hanavg/datalv successfully resized.
    
    [root@test-rhel86vm2 ~]# lvs
      LV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      datalv   hanavg   -wi-ao----   <1.25t  ← 指定したLVMが拡張されていることを確認                                                    
      loglv    hanavg   -wi-ao---- <383.99g                                                    
      medialv  mediavg  -wi-ao---- <512.00g                                                    
      homelv   rootvg   -wi-ao----    1.00g                                                    
      rootlv   rootvg   -wi-ao----  <42.02g                                                    
      tmplv    rootvg   -wi-ao----    2.00g                                                    
      usrlv    rootvg   -wi-ao----   10.00g                                                    
      varlv    rootvg   -wi-ao----    8.00g                                                    
      sharedlv sharedvg -wi-ao---- <512.00g                                                    
      usrsaplv usrsapvg -wi-ao----  <64.00g                                                    
    
    
  8. ファイルシステムを拡張

    [root@test-rhel86vm2 ~]# xfs_growfs /dev/hanavg/datalv
    meta-data=/dev/mapper/hanavg-datalv isize=512    agcount=16, agsize=8388288 blks
             =                       sectsz=4096  attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1    bigtime=0 inobtcount=0
    data     =                       bsize=4096   blocks=134212608, imaxpct=25
             =                       sunit=64     swidth=256 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=65533, version=2
             =                       sectsz=4096  sunit=1 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 134212608 to 335540224
    

ここまでやって、dfコマンドを実行したらディスクが拡張されてることが確認できました。

[root@test-rhel86vm2 ~]# df -Th
Filesystem                    Type      Size  Used Avail Use% Mounted on
devtmpfs                      devtmpfs  252G     0  252G   0% /dev
tmpfs                         tmpfs     252G     0  252G   0% /dev/shm
tmpfs                         tmpfs     252G  9.0M  252G   1% /run
tmpfs                         tmpfs     252G     0  252G   0% /sys/fs/cgroup
/dev/mapper/rootvg-rootlv     xfs        43G  368M   42G   1% /
/dev/mapper/rootvg-usrlv      xfs        10G  1.9G  8.2G  19% /usr
/dev/mapper/rootvg-homelv     xfs      1014M   40M  975M   4% /home
/dev/mapper/rootvg-tmplv      xfs       2.0G   47M  2.0G   3% /tmp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/dev/mapper/hanavg-datalv     xfs       1.3T  518G  763G  41% /hana/data ← 拡張したディスク(Sizeが増えます)
/dev/sdb1                     ext4      2.0T  2.1G  1.9T   1% /mnt

2. 既存ディスクを拡張する場合

今度は新規ディスクの追加ではなく、既存ディスクを拡張してLVMを拡張します。
※Azureの仕様上、OSディスクはオフライン状態でないと拡張できないので、
本手順はOSディスク以外を拡張する場合です。

  1. Azure上でディスクを拡張
    Azure Portalにログインして、ディスクを拡張したいVMの「ディスク」画面から既存ディスクを拡張します。
    002.jpg

  2. 対象VMにSSH接続

  3. 拡張したディスクをOS上のディスク情報に反映

    [root@test-rhel86vm2]# echo 1 > /sys/block/sdX/device/rescan
    # sdXの"X"は拡張したディスクデバイスを指定
    
  4. 拡張したディスクを確認

    [root@test-rhel86vm2 ~]# lsblk
    NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                     8:0    0   64G  0 disk 
     sda1                  8:1    0  500M  0 part /boot
     sda2                  8:2    0   63G  0 part 
       rootvg-tmplv      253:5    0    2G  0 lvm  /tmp
       rootvg-usrlv      253:6    0   10G  0 lvm  /usr
       rootvg-homelv     253:7    0    1G  0 lvm  /home
       rootvg-varlv      253:8    0    8G  0 lvm  /var
       rootvg-rootlv     253:9    0   42G  0 lvm  /
     sda14                 8:14   0    4M  0 part 
     sda15                 8:15   0  495M  0 part /boot/efi
    sdb                     8:16   0    2T  0 disk 
     sdb1                  8:17   0    2T  0 part /mnt
    sdc                     8:32   0  256G  0 disk             ← rescan実行後に拡張したdiskのSIZEが増える
     sdc1                  8:33   0  128G  0 part 
       hanavg-datalv     253:3    0  512G  0 lvm  /hana/data
    
  5. パーティション再作成
    gdiskで対象ディスクに接続後は、dで削除→nで再作成→wで上書き保存です。
    pでパーティションが確認できます。

    [root@test-rhel86vm2 ~]# gdisk /dev/sdc
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    
    Command (? for help): p   # 現状のパーティションの確認
    Disk /dev/sdc: 536870912 sectors, 256.0 GiB
    Model: Virtual Disk    
    Sector size (logical/physical): 512/4096 bytes
    Disk identifier (GUID): XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX
    Partition table holds up to 128 entries
    Main partition table begins at sector 2 and ends at sector 33
    First usable sector is 34, last usable sector is 536870878
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 268439485 sectors (128.0 GiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048       268433407   128.0 GiB   8E00  primary
    
    Command (? for help): d   # パーティションを削除(作成前に上書き保存しない限りはOS上では削除されません)
    Using 1
    
    Command (? for help): n   # パーティションを再作成
    Partition number (1-128, default 1): 
    First sector (34-536870878, default = 2048) or {+-}size{KMGTP}: 
    Last sector (2048-536870878, default = 536870878) or {+-}size{KMGTP}: 
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): 8e00 # LVMを指定
    Changed type of partition to 'Linux LVM'
    
    Command (? for help): p   # パーティションを確認
    Disk /dev/sdc: 536870912 sectors, 256.0 GiB
    Model: Virtual Disk    
    Sector size (logical/physical): 512/4096 bytes
    Disk identifier (GUID): 508E4F5E-D05B-479C-AF20-8A655EA6D22C
    Partition table holds up to 128 entries
    Main partition table begins at sector 2 and ends at sector 33
    First usable sector is 34, last usable sector is 536870878
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048       536870878   256.0 GiB   8E00  Linux LVM  ← Sizeが拡張されていることを確認
    
    Command (? for help): w   # 上書き保存
    
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    
    Do you want to proceed? (Y/N): y # yを入力して確定
    OK; writing new GUID partition table (GPT) to /dev/sdc.
    Warning: The kernel is still using the old partition table.
    The new table will be used at the next reboot or after you
    run partprobe(8) or kpartx(8)
    The operation has completed successfully.
    
  6. 再作成したパーティション情報を反映

    [root@test-rhel86vm2 ~]# sudo partprobe
    
    [root@test-rhel86vm2 ~]# lsblk
    NAME                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda                     8:0    0   64G  0 disk 
      sda1                  8:1    0  500M  0 part /boot
      sda2                  8:2    0   63G  0 part 
        rootvg-tmplv      253:5    0    2G  0 lvm  /tmp
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sdc                     8:32   0  256G  0 disk             
      sdc1                  8:33   0  128G  0 part             ← partprobe実行後に拡張したpartのSIZEが増える
        hanavg-datalv     253:3    0  512G  0 lvm  /hana/data
    
  7. 物理ボリュームを拡張(同時にボリュームグループも拡張される)

    [root@test-rhel86vm2 ~]# pvresize /dev/sdc1
      Physical volume "/dev/sdc1" changed
      1 physical volume(s) resized or updated / 0 physical volume(s) not resized
    
    [root@test-rhel86vm2 ~]# pvs
      PV         VG       Fmt  Attr PSize    PFree  
      /dev/sda2  rootvg   lvm2 a--   <63.02g      0 
      /dev/sdc1  hanavg   lvm2 a--  <256.00g 128.00g   ← 拡張した物理ボリュームに空き容量ができる
    
    [root@test-rhel86vm2 ~]# vgs
      VG       #PV #LV #SN Attr   VSize    VFree  
      hanavg     7   2   0 wz--n-   <1.75t 128.00g   ← 物理ボリュームが追加されているvgも同時に拡張される
      mediavg    1   1   0 wz--n- <512.00g      0 
    
  8. LVMを拡張

    # 追加する容量をGB単位で指定
    [root@test-rhel86vm2 ~]# lvextend -i1 -L +768G <拡張するLVM>
      Size of logical volume hanavg/datalv changed from 511.98 GiB (131068 extents) to <1.25 TiB (327676 extents).
      Logical volume hanavg/datalv successfully resized.
    
    [root@test-rhel86vm2 ~]# lvs
      LV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      datalv   hanavg   -wi-ao----   <1.25t  ← 指定したLVMが拡張されていることを確認                             
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
  9. ファイルシステムを拡張

    [root@test-rhel86vm2 ~]# xfs_growfs /dev/hanavg/datalv
    meta-data=/dev/mapper/hanavg-datalv isize=512    agcount=16, agsize=8388288 blks
             =                       sectsz=4096  attr=2, projid32bit=1
             =                       crc=1        finobt=1, sparse=1, rmapbt=0
             =                       reflink=1    bigtime=0 inobtcount=0
    data     =                       bsize=4096   blocks=134212608, imaxpct=25
             =                       sunit=64     swidth=256 blks
    naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
    log      =internal log           bsize=4096   blocks=65533, version=2
             =                       sectsz=4096  sunit=1 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 134212608 to 335540224
    

dfコマンドを実行すれば、ディスクが拡張されているはず。
※途中のrescanpartproveで更新したディスクやパーティションの情報が反映されなければ、
OSを再起動する必要があります。

[root@test-rhel86vm2 ~]# df -Th
Filesystem                    Type      Size  Used Avail Use% Mounted on
devtmpfs                      devtmpfs  252G     0  252G   0% /dev
tmpfs                         tmpfs     252G     0  252G   0% /dev/shm
tmpfs                         tmpfs     252G  9.0M  252G   1% /run
tmpfs                         tmpfs     252G     0  252G   0% /sys/fs/cgroup
/dev/mapper/rootvg-rootlv     xfs        43G  368M   42G   1% /
/dev/mapper/rootvg-usrlv      xfs        10G  1.9G  8.2G  19% /usr
/dev/mapper/rootvg-homelv     xfs      1014M   40M  975M   4% /home
/dev/mapper/rootvg-tmplv      xfs       2.0G   47M  2.0G   3% /tmp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/dev/mapper/hanavg-datalv     xfs       1.3T  518G  763G  41% /hana/data ← 拡張したLVM(Sizeが増えます)
/dev/sdb1                     ext4      2.0T  2.1G  1.9T   1% /mnt

おわりに

本当はこれくらいさくっとできるようになりたい...けどいろいろ知らなさすぎてやたらと時間かかりました(´・ω・`)
検証してるときにRedHatのWebコンソールの存在を教えてもらったので、今度はそっちでできるか検証したいです。


0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?