https://wiki.archlinux.jp/index.php/LVM
論理ボリュームマネージャ (Logical Volume Manager, LVM) とは、Linux カーネルに論理ボリューム管理を提供するデバイスマッパーフレームワークです。
試したい場合はループバックデバイスを使うと便利
$ truncate -s 1G disk.img disk2.img
$ sudo losetup -fP disk.img
$ sudo losetup -fP disk2.img
物理ボリュームの操作
作成
$ sudo pvcreate /dev/loop0p1 /dev/loop1p1
拡大
$ sudo pvresize /dev/loop0p1
縮小
$ sudo pvresize --setphysicalvolumesize 500M /dev/loop0p1
削除
$ sudo pvremove /dev/loop0p1 /dev/loop1p1
ボリュームグループの操作
作成
物理ボリュームの上につくる
$ sudo vgcreate volgroup /dev/loop0p1
名前の変更
$ sudo vgrename volgroup myvg
物理ボリュームを追加
- volgroupグループに/dev/loop1p1を追加する
$ sudo vgextend volgroup /dev/loop1p1
物理ボリュームを外す
$ sudo vgreduce volgroup /dev/loop1p1
削除
$ sudo vgremove volgroup
論理ボリュームの操作
作成
- 1GBで作成する例
$ sudo lvcreate -L 1G volgroup -n myvol
- 割合で指定して作成
$ sudo lvcreate -l 100%FREE volgroup -n myvol
%VG
ボリュームグループ全体に対する割合%FREE
ボリュームグループの空き容量に対する割合%PVS
物理ボリュームに対する割合%ORIGIN
元の論理ボリュームの合計サイズ(スナップショット用)に対する割合
名前の変更
$ sudo lvrename volgroup/myvol rootvol
拡大
$ sudo lvresize -L +1G --resizefs volgroup/myvol
この例では1GB増やすとともにファイルシステムの拡大もする
$ sudo lvresize -l +100%FREE --resizefs volgroup/myvol
ボリュームグループの空き容量を埋めるまで拡大しファイルシステムも拡大する
縮小
先にファイルシステムを最小まで縮小する
$ sudo resize2fs -M /dev/volgroup/myvol
ボリュームを200MBに縮小する
$ sudo lvresize -L 200M volgroup/myvol
再度ファイルシステムを拡大する
$ sudo resize2fs /dev/volgroup/myvol
削除
$ sudo lvremove volgroup/myvol
スナップショット
volgroup/myvol
のスナップショットをsnap1
という名前で作成(100MBのデータ変更まで)
$ sudo lvcreate --size 100M --snapshot -n snap1 volgroup/myvol
snap1
を作成した時点に戻す(snap1
は消える)
$ sudo lvconvert --merge volgroup/snap1
取り外し(エクスポート)
ボリュームグループを非アクティブ化する
$ sudo vgchange -a n volgroup
エクスポートする
$ sudo vgexport volgroup
sudo pvscan
でis in exported VG volgroup
になっていればOK
取り付け(インポート)
sudo pvscan
でインポートしたいボリュームグループを探す(ここではvolgroup
)
下のコマンドでインポートする
$ sudo vgimport volgroup
論理ボリュームをアクティブ化する(sudo lvscan
でinactive
のものを探す)
$ sudo lvchange -a y volgroup/myvol
sudo lvscan
でACTIVE
になればOK
シンプロビジョニング
volgroup
にthinpool
という名前でシンプールを作成
メタデータ用に大きさを95%に設定する
$ sudo lvcreate --type thin-pool -n thinpool -l 95%FREE volgroup
シンプール内に100GBの論理ボリュームを作成
$ sudo lvcreate -n myvol1 -V 100G --thinpool volgroup/thinpool
RAID
https://man.archlinux.org/man/lvmraid.7
先に通常通り物理ボリュームとボリュームグループを作成する
RAID1
$ sudo lvcreate --type raid1 --mirrors 1 -l 100%FREE -n myvol volgroup /dev/loop0p1 /dev/loop1p1
RAID0
$ sudo lvcreate --type raid0 --stripes 2 -l 100%FREE -n myvol volgroup /dev/loop0p1 /dev/loop1p1
RAID10
$ sudo lvcreate --type raid10 --stripes 2 --mirrors 1 -l 100%FREE -n myvol volgroup /dev/loop0p1 /dev/loop1p1 /dev/loop2p1 /dev/loop3p1
ステータス確認
$ sudo lvs -o name,segtype,devices
LV Type Devices
root linear /dev/vda3(0)
myvol raid10 myvol_rimage_0(0),myvol_rimage_1(0),myvol_rimage_2(0),myvol_rimage_3(0)
$ sudo lvs -o name,lv_health_status
LV Health
root
myvol
ディスク交換
lv_health_status
がpartial
になっていればディスクが欠落している状態
新しいディスクの追加
$ sudo pvcreate /dev/loop4p1
$ sudo vgextend volgroup /dev/loop4p1
新しく追加したディスクに入れ替える
$ sudo lvconvert --repair volgroup/myvol /dev/loop4p1
まだ壊れたディスクのデバイス名が表示されている場合は下のコマンドを使う
$ sudo lvconvert --replace OldPV VG/LV newPV
壊れたディスクを削除する
$ sudo vgreduce --removemissing volgroup