LVMでボリューム操作の手順書を殴り書きします。
なお、今回の手順では新規追加HDDのパーティションをいじっておりません(/dev/sdb → /dev/sdb1,/dev/sdb2等)。
1つのHDD領域を全てLVMで操作するとしても、気になる方はパーティション操作した方が良いかもしれません。
上記画像の元となったVisioファイル
========用語========
LVM・・・logical volume manager
PV・・・Physical Volume(物理ボリューム)
VG・・・Volume Group(ボリュームグループ)
LV・・・Logical Volume(論理ボリューム)
====================
========概略========
1.新規追加したHDDの確認
2.現在の状態確認
・ディスクの使用状況
・物理ボリューム
・ボリュームグループ
・論理ボリューム
3.領域への追加と拡張
・物理ボリュームへの追加
・ボリュームグループへの追加
・論理ボリュームの拡張
4.ファイルシステムのサイズを変更
====================
1.新規追加したHDDの確認
・dmesgコマンドで、新規追加したHDDのデバイスファイル名を確認します。
新規追加なのでパーティションテーブルが構成されていないHDDが/dev/sdbにあることを確認できます。
# dmesg |grep unknown sdb: unknown partition table |
・念のため、パーティション構成でも確認します。
新規追加した8GB(8388608KB)のHDDが/dev/sdbにあることが確認できます。
# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 102400 sda1 8 2 20868096 sda2 8 16 8388608 sdb 253 0 2097152 dm-0 253 1 18767872 dm-1 |
2.現在の状態確認
・ディスクの使用状況を確認します。
“/dev/mapper/vg_hoge-LogVol00″が”/”に、“/dev/sda1(LVMではない)”が”/boot”に
それぞれがマウントされていることがわかります。
# df -m Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg_hoge-LogVol00 18040 1480 15644 9% / tmpfs 1004 0 1004 0% /dev/shm /dev/sda1 97 57 36 62% /boot |
・物理ボリュームの状態確認をします。”/dev/sda1″はLVMではないので表示されません。
物理ボリューム”/dev/sda2″が”vg_hoge”に属していることがわかります。
# pvdisplay -C PV VG Fmt Attr PSize PFree /dev/sda2 vg_hoge lvm2 a- 19.90g 0 # pvdisplay /dev/sda2 |
・ボリュームグループの状態を確認します。
vg_hogeグループには”/dev/sda2″のみ属しているのでPVは1、論理ボリュームは”LogVol00 = /”と”LogVol01 = swap”に
それぞれが使用されているのでLVは2になります。
# vgdisplay -C VG #PV #LV #SN Attr VSize VFree vg_hoge 1 2 0 wz–n- 19.90g 0 # vgdisplay |
・論理ボリュームの状態を確認します。
LogVol00とLogVol01の2グループあるのがわかります。
# lvdisplay -C LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 vg_hoge -wi-ao 17.90g LogVol01 vg_hoge -wi-ao 2.00g # lvdisplay — Logical volume — |
3.領域への追加と拡張
・物理ボリュームに”/dev/sdb”を追加し、その後の状態を確認します。
# pvcreate /dev/sdb Physical volume “/dev/sdb” successfully created # pvdisplay -C |
・ボリュームグループの拡張を行います。
”vg_hoge”ボリュームグループへ”/dev/sdb”デバイスを追加します。
その後、追加した分だけサイズが大きくなっていることを確認します。例では19.90GBから27:89GBに増え、空きサイズが8.00GB増えてます。
# vgextend vg_hoge /dev/sdb Volume group “vg_hoge” successfully extended # vgdisplay -C |
・論理ボリュームを拡張します。
今回は”/”を拡張しますので”/dev/vg_hoge/LogVol00″を指定します。
下記コマンドだと空き領域を100%割り当てる場合ですので、オプションは“-l(小文字のエル)”になります。
# lvextend -l +100%FREE /dev/vg_hoge/LogVol00 Extending logical volume LogVol00 to 25.89 GiB Logical volume LogVol00 successfully resized |
サイズ指定だと”-L(大文字のエル)”になりますが、加減が難しくて空き容量以上に割り当てようとして
下記のようなエラーが出る場合があります。今回の場合だと8GB指定ではなく7.99GB指定で成功しました。
#失敗例 # lvextend -L +8GB /dev/vg_hoge/LogVol00 Extending logical volume LogVol00 to 25.90 GiB Insufficient free space: 2048 extents needed, but only 2047 available # lvextend -L +8.00GB /dev/vg_hoge/LogVol00 New size given (2048 extents) not larger than existing size (4582 extents) Run `lvextend –help’ for more information. #成功例 |
4.ファイルシステムのサイズを変更
・ファイルシステムのサイズを変更して実際に使用できるようにします。
# resize2fs /dev/mapper/vg_hoge-LogVol00 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/mapper/vg_hoge-LogVol00 is mounted on /; on-line resizing required old desc_blocks = 2, new_desc_blocks = 2 Performing an on-line resize of /dev/mapper/vg_hoge-LogVol00 to 6788096 (4k) blocks. The filesystem on /dev/mapper/vg_hoge-LogVol00 is now 6788096 blocks long. |
なお、論理ボリュームの拡張に失敗していた場合、以下のように“ファイルシステムのリサイズは必要ない”エラーが出ます。
# resize2fs /dev/mapper/vg_hoge-LogVol00 resize2fs 1.41.12 (17-May-2010) The filesystem is already 4691968 blocks long. Nothing to do! |
・最後に、ディスクの使用状況を確認します。
”/”の総容量と空き容量が拡張した分だけ増えていることを確認します。
# df -m Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg_hoge-LogVol00 26100 1482 23298 6% / tmpfs 1004 0 1004 0% /dev/shm /dev/sda1 97 57 36 62% /boot |
===========================================================================================================
いうまでもありませんが、ボリュームグループを構成しているHDDのどれかが死んだ場合、そのHDDを利用しているボリュームグループに
アクセスできなくなります。
なお、ボリュームグループにアクセスできなくなってもデータが生きたまま復旧すればアクセス出来るようになります。
環境
OS・・・・・・・・・・・・・CentOS 6.0(64bit)
ファイルシステム・・ext4
LVM・・・・・・・・・・・・lvm2-2.02.72-8.el6_0.4.x86_64
pvdisplay 物理ボリュームの情報を表示
pvcreate 物理ボリュームの作成
pvscan 物理ボリュームを検出
pvchange 物理ボリュームの属性を変更
pvremove 物理ボリュームを削除
vgdisplay ボリュームグループの情報を表示
vgcreate ボリュームグループの作成
vgscan ボリュームグループの情報を検出
vgchange ボリュームグループの属性を変更
vgextend ボリュームグループに物理ボリュームを追加
vgmerge 複数のボリュームグループを 1 つに結合
vgsplit ボリュームグループを分割
vgremove ボリュームグループから物理ボリュームを削除
lvdisplay 論理ボリュームの情報を表示
lvcreate ボリュームグループに論理ボリュームを作成
lvscan 論理ボリュームを検出
lvchange 論理ボリュームの属性を変更
lvextend 論理ボリュームのサイズを拡大
lvreduce 論理ボリュームのサイズを縮小
lvremove 論理ボリュームをボリュームグループから削除
・スラッシュルートディレクトリをオンライン拡張出来るのに、Oracleとかならいざ知らずヘッポコアプリの停止なんざ必要あるわけない。
・別RAIDボリューム同士では拡張できない・・・だと?LVMで2TB以上のボリュームは作成できない・・・だと?ハハハ
自分のことなら気の毒になるくらい逃げ腰なのに、他人がするなら未確認で客に「出来ます」と断言する上長がいる昨今
いかがお過ごしでしょうか。
いくら雑用係とはいっても五分の魂がございますので、いつかぶん殴るなり陥れるなりしようと思います。