2015年09月02日(水) [長年日記]
■ [unix] LVMについて調べた
CentOS 7にディスクを増設したい。そのためにはLVM (logical volume manager)を理解しておいた方がよさそうなので調べる。
ざっくり言うと、LVMは複数の物理ディスクを束ねて1つの大きな論理的なディスクとして扱うための仕組みと考えてよさそう。
マニュアル
RHEL 6のマニュアルが日本語化されていた。
論理ボリューム、ボリュームグループ、物理ボリューム
LVMは
- 論理ボリューム (LV)
- ボリュームグループ (VG)
- 物理ボリューム (PV)
の3つを押さえておけば大丈夫そう。次のようになっているみたい。
ファイルシステム ファイルシステム ファイルシステム | | | +-------+--------+ +--------+-------+ +--------+-------+ | 論理ボリューム | | 論理ボリューム | | 論理ボリューム | +--------------+-+ +-+--------------+ +--------+-------+ | | | +----------+-----+---+ +----------------+---+ | ボリュームグループ | | ボリュームグループ | +----+---------------+ +---+-----+----------+ | | | +--------+-------+ +--------------+-+ +-+--------------+ | 物理ボリューム | | 物理ボリューム | | 物理ボリューム | +--------+-------+ +--------+-------+ +--------+-------+ | | | 物理ディスク パーティション パーティション
- 物理ボリュームは1つの物理ディスク或いは物理ディスク上の1つのパーティション。
- ボリュームグループは複数の物理ボリュームを束ねたもの。
- 論理ボリュームはボリュームグループを分割したもの。論理ボリューム上にファイルシステムを作ることができる。
管理コマンド
LVMを扱うためのコマンドは色々あって難しい。ひとまずはlvmコマンドを実行するとプロンプトが出るので、その上で操作するのが分かりやすそう。
% sudo lvm lvm> help Available lvm commands: Use 'lvm help <command>' for more information devtypes Display recognised built-in block device types dumpconfig Dump configuration ...
CentOS 7上にあるボリューム
自分のマシン上にどのようなボリュームがあるのか見てみる。
物理ボリューム
lvm> pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 31.51g 0
/dev/sda2 という物理ボリュームがあって、それがcentosというボリュームグループに属している。/dev/sda2というのは1番目の物理ディスクの2番目のパーティションを表すデバイスファイルのパスであり、それがそのまま物理ボリュームの名前になるみたい。
ボリュームグループ
lvm> vgs VG #PV #LV #SN Attr VSize VFree centos 1 2 0 wz--n- 31.51g 0
centosという名前のボリュームグループがある。物理ボリューム1つから成り、論理ボリュームが2つありそう。
論理ボリューム
lvm> lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 28.31g swap centos -wi-ao---- 3.20g lvm> lvscan ACTIVE '/dev/centos/swap' [3.20 GiB] inherit ACTIVE '/dev/centos/root' [28.31 GiB] inherit
rootとswapという2つの論理ボリュームがありそれぞれが /dev/centos/ 配下にマッピングされている。
ファイルシステムとの関係
% df -T ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root xfs 29669220 19136296 10532924 65% / devtmpfs devtmpfs 1663152 0 1663152 0% /dev tmpfs tmpfs 1672348 0 1672348 0% /dev/shm tmpfs tmpfs 1672348 8488 1663860 1% /run tmpfs tmpfs 1672348 0 1672348 0% /sys/fs/cgroup /dev/sda1 xfs 508588 278360 230228 55% /boot
dfコマンドで論理ボリューム(/dev/centos/root)が見えるかと思いきや見えない。が、
% ls -l /dev/centos /dev/mapper /dev/centos: 合計 0 lrwxrwxrwx. 1 root root 7 9月 2 14:41 root -> ../dm-1 lrwxrwxrwx. 1 root root 7 9月 2 14:41 swap -> ../dm-0 /dev/mapper: 合計 0 lrwxrwxrwx. 1 root root 7 9月 2 14:41 centos-root -> ../dm-1 lrwxrwxrwx. 1 root root 7 9月 2 14:41 centos-swap -> ../dm-0 crw-------. 1 root root 10, 236 9月 2 14:41 control
/dev/centos/root と /dev/mapper/centos-root はちゃんと同じものを指しており同一視してよさそう。何故こうしているのかは謎。
/dev/centos/swapの方は/proc/swapsを見ると確認できる。
% cat /proc/swaps Filename Type Size Used Priority /dev/dm-0 partition 3354620 0 -1
/dev/centos/swapは/dev/dm-0を指しているから同じもの。
とても参考になりました。ありがとうございます。