LVMで論理ボリュームを作成

本記事は、私自身のメモのために
「LVMで論理ボリュームの作成、拡張、縮小、複製」
http://qiita.com/TsutomuNakamura/items/93c6333c8dd32aeb197a
のサイトをそのまま記事としたものであることをご了承ください。

複数の物理ボリュームがあり、その上に複数のボリュームグループを作成することができ、その上に複数の論理ボリュームを作成することができます。
複数の物理ボリュームを使用する場合、その上に作成される論理ボリュームは、1 つの物理ボリュームよりも大きい領域を割り当てることができるようになります(ただし、その論理ボリュームは物理ボリュームの総数の容量を越えることはできません)。

上記の図では、未使用領域が存在しますが、その未使用領域は後ほど容量が追加で必要になった論理ボリュームに割り当てることもできます。
今回の例ではlvg-share というボリュームグループを作成し、その上に/dev/lvg-share/files, /dev/lvg-share/media, /dev/lvg-share/work 論理ボリュームを作成していきます。

1 現状デバイスの確認及びパーテーションの作成

 ① FDISK -L コマンドで、現在のデバイスの状態を確認します。
/dev/sdb 〜 /dev/sde デバイスはまだパーティションが作成されていないことがわかります。

fdiskコマンドによる設定例

$ sudo fdisk -l

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn’t contain a valid partition table

Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002e29c

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 159385599 79691776 83 Linux
/dev/sda2 159387646 167770111 4191233 5 Extended
/dev/sda5 159387648 167770111 4191232 82 Linux swap / Solaris

Disk /dev/sdd: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdd doesn’t contain a valid partition table

Disk /dev/sde: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sde doesn’t contain a valid partition table

Disk /dev/sdc: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn’t contain a valid partition table

② /DEV/SDB 〜 /DEV/SDE に対して/DEV/SDB1 〜 /DEV/SDE1 という形でパーティションを作成していきます。
 それぞれのパーティションのサイズは10 GB ととします。
 まずは、fdisk コマンドを使用して/dev/sdb デバイスにLVM ボリュームを作成します。

$ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x995af6e7.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m
Command action
a toggle a bootable flag
〜省略〜
x extra functionality (experts only)

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-83886079, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-83886079, default 83886079): +10G

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
〜省略〜
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

パーティションが作成されたことを確認します。

$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 42.9 GB, 42949672960 bytes
139 heads, 49 sectors/track, 12316 cylinders, total 83886080 sectors
Units # sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x995af6e7

Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 8e Linux LVM

③ これを、/DEV/SDC〜/DEV/SDE/にも行います。

2 論理ボリュームの作成

① LVMボリュームの作成

$ sudo pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Physical volume “/dev/sdb1” successfully created
Physical volume “/dev/sdc1” successfully created
Physical volume “/dev/sdd1” successfully created
Physical volume “/dev/sde1” successfully created

② PVDISPLAY コマンドで確認します。

$ sudo pvdisplay
“/dev/sdb1” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name /dev/sdb1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID dCvzjO-R0Tv-voXT-Me8v-q0ss-A5lI-ojbJTQ

“/dev/sdc1” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name /dev/sdc1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID fxLbYc-4nOT-YKEB-Zzeh-L4pt-QiLa-eSEwdK

“/dev/sdd1” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name /dev/sdd1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID SkmklQ-s3Si-lC2b-hQNa-nOIt-uXnb-1uGs5W

“/dev/sde1” is a new physical volume of “10.00 GiB”
— NEW Physical volume —
PV Name /dev/sde1
VG Name
PV Size 10.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 5TkFOl-wXHc-u6vg-ryfY-WefK-4ftc-UkwPLg

3 ボリュームグループを作成する

① VGCREATE コマンドを使用してLVG-SHARE ボリュームグループを作成します。
$ sudo vgcreate lvg-share /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
  Volume group "lvg-share" successfully created
②VGDISPLAY, VGSCAN コマンドで、ボリュームグループを確認します。
$ sudo vgdisplay
  --- Volume group ---
  VG Name               lvg-share
  System ID             
  Format                lvm2
〜省略〜
  VG Size               39.98 GiB
  PE Size               4.00 MiB
  Total PE              10236
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10236 / 39.98 GiB
  VG UUID               rnFwhI-ybWH-el9e-NIgK-3vOY-hO8L-sehg7c

$ sudo vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "lvg-share" using metadata type lvm2

4 論理ボリュームグループをリネーム・削除する。

① リネーム
$ sudo vgrename <変更前論理ボリュームグループ名> <変更後論理ボリュームグループ名>
② 削除
$ sudo vgremove <論理ボリュームグループ名>

5 論理ボリュームを作成する

割り当て

論理ボリューム名容量
public18GB
media8GB
document6GB
① LVCREATE コマンドを使用して、論理ボリュームを作成していきます。
$ sudo lvcreate --name public --size 18GB lvg-share
  Logical volume "public" created
$ sudo lvcreate --name media --size 8GB lvg-share
  Logical volume "media" created
$ sudo lvcreate --name document --size 6GB lvg-share
  Logical volume "document" created
② LVDISPLAY で確認してみます。
$ sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/lvg-share/public
  LV Name                public
  VG Name                lvg-share
  LV UUID                IVnPIB-hJCA-PD7o-jcpe-Et9I-zVZb-eQbcTu
〜省略〜
  LV Size                18.00 GiB
〜省略〜

  --- Logical volume ---
  LV Path                /dev/lvg-share/media
  LV Name                media
  VG Name                lvg-share
  LV UUID                t9tpLc-0ddp-CnmH-BVoA-HEFr-Q1dq-M4x1Bj
〜省略〜
  LV Size                8.00 GiB
〜省略〜

  --- Logical volume ---
  LV Path                /dev/lvg-share/document
  LV Name                document
  VG Name                lvg-share
  LV UUID                ERAqAq-vzZF-AQev-tTS0-gAJo-BnPq-MjUrf2
〜省略〜
  LV Size                6.00 GiB
〜省略〜

$ sudo lvscan
  ACTIVE            '/dev/lvg-share/public' [18.00 GiB] inherit
  ACTIVE            '/dev/lvg-share/media' [8.00 GiB] inherit
  ACTIVE            '/dev/lvg-share/document' [6.00 GiB] inherit

6 論理ボリュームの名称変更・削除・拡張・縮小

① 名称変更
$ sudo lvrename <変更前論理ボリューム名> <変更後論理ボリューム名>
② 削除
$ sudo lvremove <論理ボリュームパス>
③ 拡張
$ sudo lvextend -L<サイズ> <論理ボリュームパス>

例(+1GBdocument論理ボリューム容量を拡張する)

$ sudo lvextend -L+1G /dev/lvg-share/hoge
④ 縮小
$ sudo lvreduce -L <サイズ> <論理ボリュームパス>

例(document論理ボリューム容量を6GBに縮小する)

$ sudo lvreduce -L 6G /dev/sdz

7 ファイルシステムを作成する。

ここまでの手順で作成された論理ボリュームにファイルシステムを作成します。
まず、/dev/lvg-share/public 論理ボリュームにext4 ファイルシステムを作成します。

今回は、ファイルシステムを次のように割り当てていきます。

  • ファイルシステム構成
    論理デバイスファイルシステム/dev/lvg-share/publicext4/dev/lvg-share/mediaXFS/dev/lvg-share/documentReiserFS

public論理デバイスにext4ファイルシステムを作成する

$ sudo mkfs.ext4 /dev/lvg-share/public
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
〜省略〜

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

8 論理ボリュームをマウントする

ファイルシステムを作成したら、論理ボリュームをマウントし、df -h コマンドで状態を確認してみましょう。

$ sudo mkdir /mnt/{public,media,document}
$ sudo mount /dev/lvg-share/public   /mnt/public
$ sudo mount /dev/lvg-share/media    /mnt/media
$ sudo mount /dev/lvg-share/document /mnt/document
$ df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/sda1                         75G  1.2G   70G   2% /
none                             4.0K     0  4.0K   0% /sys/fs/cgroup
udev                             2.0G  4.0K  2.0G   1% /dev
tmpfs                            394M  3.1M  391M   1% /run
none                             5.0M     0  5.0M   0% /run/lock
none                             2.0G     0  2.0G   0% /run/shm
none                             100M     0  100M   0% /run/user
/dev/mapper/lvg--share-public     18G   44M   17G   1% /mnt/public
/dev/mapper/lvg--share-media     8.0G   33M  8.0G   1% /mnt/media
/dev/mapper/lvg--share-document  7.0G   33M  7.0G   1% /mnt/document

新しく作成した論理ボリュームがマウントできていることが確認出来ました。
この論理ボリュームをマウントした領域は、通常通りファイルを保存することができます。
また、通常のボリュームと同様にfstab に記述してOS 起動時に、自動的にマウントさせることもできるようになります。

$ sudo blkid | grep /dev/mapper
/dev/mapper/lvg--share-public: UUID#"e184b6b8-ed2f-470b-a08b-f45637623ad4" TYPE"ext4" 
/dev/mapper/lvg--share-media: UUID#"ace4c3d3-12e3-43bb-8dfc-8fd0f9b73684" TYPE"xfs" 
/dev/mapper/lvg--share-document: UUID#"e56e8e90-46b1-4900-a447-33939e4a098f" TYPE"reiserfs"

$ sudo cp -ip /etc/fstab /etc/fstab.org
$ sudo vim /etc/fstab

以下のように記述します。

/etc/fstab

UUID="e184b6b8-ed2f-470b-a08b-f45637623ad4" /mnt/public   ext4     defaults 0 0
UUID="ace4c3d3-12e3-43bb-8dfc-8fd0f9b73684" /mnt/media    xfs      defaults 0 0
UUID="e56e8e90-46b1-4900-a447-33939e4a098f" /mnt/document reiserfs defaults 0 0

fstab に記述したら、マウントのテストをしてみましょう。

$ sudo umount /mnt/{public,media,document}
$ sudo mount -a
$ echo $?
0

エラーなく実行できたら、OS を再起動して確認してみましょう。

$ sudo shutdown -r now
# ...再起動後
$ df -h
※出力結果については省略

fstab に記述したデバイスが問題なくマウントできていることが確認できると思います。

LinuxPC
スポンサーリンク
kotohaをフォローする

コメント