LVM基本操作

提供: Wikiducca
移動: 案内検索

LVM とは

LVM(logical volume manager)とは、複数のハード・ディスクやパーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能。Linux をはじめとした UNIX 系 OS 上で利用できる。

登場人物

  • PV (物理ボリューム:Phisical Volume)

LVMで管理する物理的な記憶媒体、たとえば HDD そのものや、 HDD 内のパーティションを指す。

  • VG (ボリュームグループ:Volume Group)

複数の PV をまとめたもので、1つの論理的な記憶媒体として使用することができる。

  • LV (論理ボリューム:Logical Volume)

VG 上に設定された論理的なパーティションのこと。

まとめ

大雑把に言うと、

  • VG : 論理的な HDD
  • LV: そのパーティション

となる。

現状の確認

物理ボリューム (pvscan)

[root@server ~]# pvscan
  PV /dev/sda3 VG VolGroup00 lvm2 [51.34 GB / 9.34 GB free]
  Total: 1 [51.34 GB] / in use: 1 [51.34 GB] / in no VG: 0 [0 ]

`/dev/sda3` という物理ボリューム(PV)に `VolGroup00`というボリュームグループ(VG) がつくられており、51.34 GB が割り当て済み、9.34 GB が未割り当てになっていることが分かる。

ボリュームグループ (vgscan)

[root@server ~]# vgscan 
  Reading all physical volumes. This may take a while…
  Found volume group "VolGroup00" using metadata type lvm2

VolGroup00 というボリュームグループ(VG) が使用されていることが分かる。

論理ボリューム (lvscan)

[root@server ~]# lvscan 
  ACTIVE '/dev/VolGroup00/LogVol01' [20.00 GB] inherit
  ACTIVE '/dev/VolGroup00/LogVol02' [20.00 GB] inherit
  ACTIVE '/dev/VolGroup00/LogVol00' [2.00 GB] inherit

論理ボリューム内に上記3つのパーティションが作られていることが分かる。

df

[root@server ~]# df 
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/VolGroup00-LogVol01
                      20314748 7787016 11479156 41% /
/dev/mapper/VolGroup00-LogVol02
                      20314748 176200 19089972 1% /backup
/dev/sda1 101086 12108 83759 13% /boot
tmpfs 512960 0 512960 0% /dev/shm

この場合、lvscan の結果と比較すると、

'/dev/VolGroup00/LogVol01' [20.00 GB] = /
'/dev/VolGroup00/LogVol02' [20.00 GB] = /backup
'/dev/VolGroup00/LogVol00' [2.00 GB] = swap

ということが分かる。

また、`20GB + 20GB + 2GB = 計 42GB` で、 pvscan の結果から、 `lvm2 [51.34 GB / 9.34 GB free]` つまり、`51GB - 42GB = 9GB` が未割当で、何にも使われていない。 ということがわかる。

新規論理ボリュームの作成

上記の割り当てられていない `9GB` から `2GB` 分を使って、新しい論理ボリュームを作成する。

条件

  • 論理ボリューム名: `LogVol03`
  • サイズ: `2048 MB (2 GB)`
  • ボリュームグループ: `VolGroup00`
  • マウント先: `/lvm_test`

作成 (lvcreate)

[root@server ~]# lvcreate -L 2048M -n LogVol03 VolGroup00
  Logical volume "LogVol03" created

確認 (ls)

[root@server ~]# ls -lat /dev/VolGroup00/
合計 0
drwx------  2 root root  120  6月 11 16:36 .
lrwxrwxrwx  1 root root   31  6月 11 16:36 LogVol03 -> /dev/mapper/VolGroup00-LogVol03
drwxr-xr-x 12 root root 4260  5月 15 16:57 ..
lrwxrwxrwx  1 root root   31  2月 18 18:07 LogVol01 -> /dev/mapper/VolGroup00-LogVol01
lrwxrwxrwx  1 root root   31  1月 23 02:44 LogVol00 -> /dev/mapper/VolGroup00-LogVol00
lrwxrwxrwx  1 root root   31  1月 23 02:44 LogVol02 -> /dev/mapper/VolGroup00-LogVol02

確認 (lvscan)

[root@server ~]# lvscan
  ACTIVE            '/dev/VolGroup00/LogVol01' [20.00 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol02' [20.00 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol00' [2.00 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol03' [2.00 GB] inherit

`/dev/VolGroup00/LogVol03 (2.00GB)` が作成されている。

確認 (pvscan)

[root@server ~]# pvscan
  PV /dev/sda2   VG VolGroup00   lvm2 [51.34 GB / 7.34 GB free]
  Total: 1 [51.34 GB] / in use: 1 [51.34 GB] / in no VG: 0 [0   ]

未割り当ての部分から `2GB` が減ったことを確認。


ext3 でフォーマット(mkfs.ext3)

[root@server ~]# mkfs.ext3 /dev/VolGroup00/LogVol03
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
262144 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

マウント

[root@server ~]# mkdir /lvm_test
[root@server ~]# mount /dev/VolGroup00/LogVol03 /lvm_test

確認 (df)

[root@server ~]# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/mapper/VolGroup00-LogVol01
                       20G   15G  4.3G  77% /
/dev/mapper/VolGroup00-LogVol02
                       20G  8.5G   10G  47% /backup
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 501M     0  501M   0% /dev/shm
/dev/mapper/VolGroup00-LogVol03
                      2.0G   68M  1.9G   4% /lvm_test

以上、作成&マウント完了。

論理ボリュームのリサイズ

拡張

1GB 増やしてみる。

実行 (lvextend)

[root@server ~]# lvextend -L +1G /dev/VolGroup00/LogVol03
  Extending logical volume LogVol03 to 3.00 GB
  Logical volume LogVol03 successfully resized

ファイルシステムに反映 (resize2fs)

[root@server ~]# resize2fs /dev/VolGroup00/LogVol03
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol03 is mounted on /lvm_test; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol03 to 786432 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol03 is now 786432 blocks long.

以上で、`/lvm_test` にて `1GB` 多く使えるようになった。

縮小

512MB 減らしてみる。

!!!!! 順番を間違えると面倒くさいことになるので要注意 !!!!!

先に、アンマウントして fsck をする必要がある。

[root@server ~]# umount /lvm_test/
[root@server ~]# e2fsck -f /dev/VolGroup00/LogVol03
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/VolGroup00/LogVol03: 15/393216 files (6.7% non-contiguous), 29522/786432 blocks

ファイルシステム側の縮小 (resize2fs)

ここでの `1536M` は `2048M - 512M` でリサイズ後のディスクサイズ。

[root@server ~]# resize2fs /dev/mapper/VolGroup00-LogVol03 1536M
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/mapper/VolGroup00-LogVol03 to 393216 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00-LogVol03 is now 393216 blocks long.

lvm 側の縮小 (lvreduce)

[root@server ~]# lvm lvreduce -L -512M /dev/VolGroup00/LogVol03
  WARNING: Reducing active logical volume to 1.50 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol03? [y/n]: y
  Reducing logical volume LogVol03 to 1.50 GB
  Logical volume LogVol03 successfully resized

ここでは `-512M` としているが、`-` をつけないと、縮小後のトータルサイズになってしまうので注意。

再度マウント

[root@server ~]# mount /dev/VolGroup00/LogVol03 /lvm_test/

論理ボリュームの削除

[root@server ~]# umount /lvm_test/
[root@server ~]# lvremove -f /dev/VolGroup00/LogVol03
  Logical volume "LogVol03" successfully removed

ちゃんとアンマウントしてからじゃないと削除できない。

[root@server ~]# lvremove -f /dev/VolGroup00/LogVol03
  Can't remove open logical volume "LogVol03"

以上。