LVMを使ってみる
History
#Linux #Lvm

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 pvscanis in exported VG volgroupになっていればOK

取り付け(インポート)

sudo pvscanでインポートしたいボリュームグループを探す(ここではvolgroup

下のコマンドでインポートする

$ sudo vgimport volgroup

論理ボリュームをアクティブ化する(sudo lvscaninactiveのものを探す)

$ sudo lvchange -a y volgroup/myvol

sudo lvscanACTIVEになればOK

シンプロビジョニング

volgroupthinpoolという名前でシンプールを作成
メタデータ用に大きさを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_statuspartialになっていればディスクが欠落している状態

新しいディスクの追加

$ 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
« Btrfsを使ってみる
Linuxでファイル暗号化 »