ファイルサーバーとして運用しているサーバーでは、LVMを利用し動的に容量拡張ができるようにしています。今回、ファイルサーバーの空き容量がなくなったため、論理ボリュームをオンラインで拡張してみました。その時のメモ。
- Debian GNU/Linux 5.0/amd64
- LVM環境
- PV: /dev/sdb
- VG名: vg01
- LV名: lv01
- ファイルシステム: xfs
- 新規追加ディスク: /dev/sdc
# 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となっている論理ボリュームを拡張します。
# 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だけの状態です。
# 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へ物理ボリュームを追加します。
# 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を拡張します。
以下のコマンドを実行することで/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へ追加されていることが確認できます。
以下のコマンドで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数が増えていることが確認できます。
以下のコマンドで既存論理ボリューム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のサイズが正しく拡張されていることが確認できます。
論理ボリュームは拡張されましたが、その中に格納されているファイルシステムは拡張前の容量として扱われていますので、拡張後の容量を扱えるようにする必要があります。
私の環境ではファイルシステムとして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
正しく拡張されていることが確認できました。