メモの日々


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を指しているから同じもの。

本日のツッコミ(全1件) [ツッコミを入れる]
クリィミィ (2019年03月21日(木) 12:17)

とても参考になりました。ありがとうございます。