!!用語
*PV(Physical Volume) 
 物理ボリュームのこと。/dev/hda7や/dev/hdcと示すディスクそのものを意味する。
*VG(Volume Group) 
 上記のPVを束ねて作成されるボリュームのこと。この中から実際に使う「論理的な」パーティションを切り出すことになる。
*LV(Logical Volume) 
 LVとは、ここまで「論理的な」ボリュームと称してきたものであり、VGから切り出して実際に利用することになるパーティションを示す。

!!LVMの作成
Linux において LVM を利用する手順は下のとおりです。
+LVM パーティションの作成
+PV (Physical Volume) の作成
+VG (Volume Group) の作成
+LV (Logical Volume) の作成 

!パーティッション
LVM用のパーティッションは
 fdisk /dev/hda
でfdiskを起動して
 t
 で
 8e  Linux LVM 
を選ぶ。

!PV (Physical Volume) の作成
 pvcreate /dev/hda6

pv情報の表示
 pvdisplay /dev/hda6

pvの一覧
 pvs

!VG (Volume Group) の作成
 vgcreate myvg /dev/hda6

vgの情報、一覧
 vgdisplay
 vgs

VGの拡張
 vgextend myvg /dev/sda7

!論理ボリューム (LogicalVolume) の割り当て
 lvcreate -L 100m -n lvtest myvg
オプション -L で論理ボリュームの大きさを指定。
オプション -n で論理ボリュームの名前を指定。

未使用領域を全て割り当てて作成する場合
 lvcreate -l 100%FREE -n lvtest myvg

lvの情報、一覧
 lvdisplay
 lvs

!論理ボリューム(LogicalVolume)の拡張
/dev/VolGroup00/LogVol00 を 20Gにする
 lvextend -L 20G /dev/VolGroup00/LogVol00
/dev/VolGroup00/LogVol00 に 20Gを足す
 lvextend -L +20G /dev/VolGroup00/LogVol00
/dev/VolGroup00/LogVol00 に未使用領域を全て割り当てる
 lvextend  -l +100%FREE /dev/VolGroup00/LogVol00


!論理ボリュームのフォーマット
普通の Linux パーティションと同様にフォーマットしたり mount したり出来ます
 mke2fs -j /dev/myvg/lvtest

!!ボリュームグループの情報のバックアップとリストア
!バックアップ
 pvdisplay
または
 vgdisplay -v
PV UUIDを確認する。

 vgcfgbackup VolGroup00 -f /nfs/VolGroup00.txt
ボリュームグループ情報をバックアップ

!リストア
 lvm pvcreate -ff --restorefile /nfs/VolGroup00.txt --uuid バックアップ時に確認したPV UUID /dev/hda6
 lvm vgcfgrestore -f /nfs/VolGroup00.txt VolGroup00

アクティブにする
 lvm lvchange -a y VolGroup00

!!PVから物理ディスクを取り外す
+取り外すPVの内容を別のPVに移す
++ pvmoveで取り外すデバイスの内容を他のデバイスへ移動する
+++ pvmove /dev/sdb1
++ pvmove は時間がかかる。Ctrl + C で中断してもバックグラウンドで動作し続ける
++ pvmove --abort 止めることができるが、pvmoveはもう一度最初からやり直しになる。
+PVをVGから外す
++ vgreduceでVGからPVを外す
+++ vgreduce data /dev/sdb1

!!スナップショット機能
http://www.usupi.org/sysad/166.html
もとのファイルシステムは、ボリュームグループが Volume00 という名前で、論理ボリュームが LogVol00 という名前だとしましょう。
そして、以下のように /mnt/test に mount されているとします。
  # df /mnt/test
  Filesystem         1K-blocks     Used Available Use% Mounted on
  /dev/mapper/Volume00-LogVol00
                        142799   107433     29471  79% /mnt/test

スナップショットを作成するには、いつものように、 lvcreate コマンドを使用します。簡単な書式は、以下の通りです。
  # lvcreate -s -L サイズ -n 論理ボリューム名 もとのデバイス

スナップショットの論理ボリューム名を -n オプションで指定します。
「もとのデバイス」には、もとのファイルシステムのデバイスファイルを指定します。
-L オプションで指定するサイズは、もとのデータを保持するための領域です。もとのファイルシステムと同じサイズである必要はありません。

というわけで、ここでは LogVol00_snap という名前のスナップショットを作成してみました。サイズは、もとが 144MB ですので、32MB くらいにしてみました。 (使用頻度などによりますので、えいやーで決めました。)
  # lvcreate -s -L 32M -n LogVol00_snap /dev/Volume00/LogVol00

lvscan や lvdisplay で確認しますと、以下のようにスナップショットであることがわかります。
  # lvscan
    ACTIVE   Original '/dev/Volume00/LogVol00' [144.00 MB] inherit
    ACTIVE   Snapshot '/dev/Volume00/LogVol00_snap' [32.00 MB] inherit
  # lvdisplay /dev/Volume00/LogVol00_snap
    --- Logical volume ---
    LV Name                /dev/Volume00/LogVol00_snap
    ...中略...
    LV Size                144.00 MB
    Current LE             36
    COW-table size         32.00 MB
    COW-table LE           8
    Allocated to snapshot  0.07%
    Snapshot chunk size    8.00 KB
    ...後略...

では、mount してみましょう。
もちろん、通常の論理ボリュームとして使用できます。
ここでは、/mnt/snap に mount してみました。
  # mount -o ro /dev/mapper/Volume00-LogVol00_snap /mnt/snap
  # df /mnt/test /mnt/snap
  Filesystem         1K-blocks     Used Available Use% Mounted on
  /dev/mapper/Volume00-LogVol00
                        142799   107433     29471  79% /mnt/test
  /dev/mapper/Volume00-LogVol00_snap
                        142799   107433     29471  79% /mnt/snap

当り前ですが、もとのファイルシステムとまったく同じですね。 

!!オンラインリサイズ
http://blog.usoinfo.info/article/193585529.html
http://pantora.net/pages/lvm/3/

, ,ext2 ,ext3/ext4 ,ReiserFS ,XFS ,JFS
,拡大 ,オフライン ※1(resize2fs) ,オンライン/オフライン(resize2fs) ,オンライン/オフライン(resize_reiserfs) ,オンライン(xfs_growfs) ,"オンライン(mount -o remount,resize)"
,縮小 ,オフライン ,オフライン ,オフライン ,なし ,なし

lvresize で LogicalVolume のサイズを変更
 # lvresize -L +58G /dev/VolGroup00/LogVol00
resize2fs でオンラインのままリサイズ実行(resize2fsは結構時間が掛かる)
 # resize2fs -p /dev/mapper/VolGroup00-LogVol00
CentOS7(XFS)の場合
 # xfs_growfs /dev/centos/root

resize2fs の -p オプションは作業完了分のパーセントを表すバーを表示するオプション

!!Volume Group に不良なLogical Volume ができてしまった場合
http://koozme.blogspot.jp/2012/10/contos.html
http://hotaru.4030.jp/category/68853-1.html

LVMから所定の手続きを踏まずにディスク交換やネットワークの不具合でiSCSIのLVMがおかしくなってしまった場合。

 PV unknown device VG VolGropu00 ...
などと出る場合は、
 # vgreduce --removemissing VolGroup00
 # vgscan
で不正な Physical Volume を外してくれる。ただし、iSCSIとかを使っている場合は扱いに注意。

!!VolumeGroupの残り容量を確認する
 vgs
で使用領域、未使用領域が確認できる。


{{category2 OS,Linux}}