LVMの論理ボリュームのオンライン拡張

2011/02/12PC::Linux/BSD

ファイルサーバーとして運用しているサーバーでは、LVMを利用し動的に容量拡張ができるようにしています。今回、ファイルサーバーの空き容量がなくなったため、論理ボリュームをオンライン*1で拡張してみました。その時のメモ。

*1 : ここでのオンラインはマウントした状態という意味です

環境

  • Debian GNU/Linux 5.0/amd64
  • LVM環境
    • PV: /dev/sdb
    • VG名: vg01
    • LV名: lv01
    • ファイルシステム: xfs
  • 新規追加ディスク: /dev/sdc

現状確認

df

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda3             9.2G  446M  8.3G   5% /
tmpfs                 250M     0  250M   0% /lib/init/rw
udev                   10M  620K  9.4M   7% /dev
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             122M   22M   94M  19% /boot
/dev/sda7              17G  173M   16G   2% /home
/dev/sda5             7.4G  559M  6.5G   8% /usr
/dev/sda6             1.9G   39M  1.8G   3% /var/log
/dev/mapper/vg01-lv01
                      1.0T 1018G  6.3G 100% /data

今回は/dev/mapper/vg01-lv01となっている論理ボリュームを拡張します。

PVの状況

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               vg01
  PV Size               1.00 TB / not usable 32.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              32767
  Free PE               0
  Allocated PE          32767
  PV UUID               (UUID値)

本サーバーでは、現在のところLVMのPVは/dev/sdbだけの状態です。

VGの状況

# vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1023.97 GB
  PE Size               32.00 MB
  Total PE              32767
  Alloc PE / Size       32767 / 1023.97 GB
  Free  PE / Size       0 / 0   
  VG UUID               (UUID値)

今回はこのボリュームグループvg01へ物理ボリュームを追加します。

LVの状況

# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg01/lv01
  VG Name                vg01
  LV UUID                (UUID値)
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1023.97 GB
  Current LE             32767
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

vg01へPVを追加後、この論理ボリュームlv01を拡張します。

実際に拡張する

1. /dev/sdcをPVに追加する

以下のコマンドを実行することで/dev/sdcがPVへ追加されます。

# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created

正しく追加されているか確認します。

# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sdb
  VG Name               vg01
  PV Size               1.00 TB / not usable 32.00 MB
  Allocatable           yes (but full)
  PE Size (KByte)       32768
  Total PE              32767
  Free PE               0
  Allocated PE          32767
  PV UUID               (UUID値)
   
  "/dev/sdc" is a new physical volume of "750.00 GB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               750.00 GB
  Allocatable           NO
  PE Size (KByte)       0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               (UUID値)

先ほどまではなかった/dev/sdcが表示されており、正しくPVへ追加されていることが確認できます。

2. PV /dev/sdcを既存VG vg01へ追加する

以下のコマンドでPV /dev/sdcを既存VG vg01へ追加します。

# vgextend vg01 /dev/sdc
  Volume group "vg01" successfully extended

確認してみます。

# vgdisplay 
  --- Volume group ---
  VG Name               vg01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.73 TB
  PE Size               32.00 MB
  Total PE              56766
  Alloc PE / Size       32767 / 1023.97 GB
  Free  PE / Size       23999 / 749.97 GB
  VG UUID               (UUID値)

VG sizeの容量が増え、また、未割り当てのPE数が増えていることが確認できます。

3. 既存LV lv01を拡張する

以下のコマンドで既存論理ボリュームlv01を拡張します。今回はすべてのPEをlv01へ割り当てるため、+100%FREEとしています。

# lvextend -l +100%FREE /dev/vg01/lv01 
  Extending logical volume lv01 to 1.73 TB
  Logical volume lv01 successfully resized

確認してみます。

# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/vg01/lv01
  VG Name                vg01
  LV UUID                (UUID値)
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1.73 TB
  Current LE             56766
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0

LVのサイズが正しく拡張されていることが確認できます。

4. ファイルシステムを拡張する

論理ボリュームは拡張されましたが、その中に格納されているファイルシステムは拡張前の容量として扱われていますので、拡張後の容量を扱えるようにする必要があります。
私の環境ではファイルシステムとしてxfsを利用していますのでxfs_growfsコマンドを実行します。ext3などのファイルシステムを利用している場合は、そのファイルシステム用のコマンドを実行してください。

# xfs_growfs /data(マウントポイントを指定します)
meta-data=/dev/mapper/vg01-lv01  isize=256    agcount=4, agsize=67106816 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=268427264, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096  
log      =internal               bsize=4096   blocks=32768, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 268427264 to 465027072

確認してみます。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/sda3             9.2G  446M  8.3G   5% /
tmpfs                 250M     0  250M   0% /lib/init/rw
udev                   10M  628K  9.4M   7% /dev
tmpfs                 250M     0  250M   0% /dev/shm
/dev/sda1             122M   22M   94M  19% /boot
/dev/sda7              17G  173M   16G   2% /home
/dev/sda5             7.4G  559M  6.5G   8% /usr
/dev/sda6             1.9G   39M  1.8G   3% /var/log
/dev/mapper/vg01-lv01
                      1.8T 1018G  757G  58% /data

正しく拡張されていることが確認できました。