CentOS7でLVMのsnapshot作成してみました

今回は、CentOS7でLVMのsnapshotを作成してみました。

1.ディスク構成

4GBの空きを作ってCentOS7をインストール。

sda 21.5GB
sda1 /boot StandardPartition(300MB)
sda2 / LVM (12GB)
sda3 swap swap (4GB)
空き (4GB)

VG VGroup1
LV /dev/VGroup1/root

今回は空きの4GBをsda4としてLVMパーティションとして作成し、
VGのVGroup1を拡張。VGroup1の未使用領域に対して1GBのsnapshot領域を作成する。
ということを行いました。

2.今回わかったこと
LVMのスナップショット領域は事前に作成したLVではなく、
VGの未使用領域に作成されるということ。
スナップショット領域には作成した時点のソースボリュームの状態が保存され、
その後、状態を維持する為にソースボリュームの更新情報を追加していくということ。
なので、スナップショットを1度取得して、ずっとそのまま置いておくということは
領域がいずれ溢れるので不可とわかりました。
スクリプトなどでスナップショット取得>スナップショットをバックアップとしないといけないです。

3.手順(LVMパーティションの作成)

ディスクの状態確認

fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x000d531f

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 25559039 12471296 8e Linux LVM
/dev/sda3 25559040 33751039 4096000 82 Linux swap / Solaris

Disk /dev/mapper/VGroup1-root: 12.8 GB, 12767461376 bytes, 24936448 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

LVMパーティションの作成

fdisk /dev/sda

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): p
Selected partition 4
First sector (33751040-41943039, default 33751040):
Using default value 33751040
Last sector, +sectors or +size{K,M,G} (33751040-41943039, default 41943039):
Using default value 41943039
Partition 4 of type Linux and of size 3.9 GiB is set

Command (m for help): l

0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext’d (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix

Command (m for help):
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): t
Partition number (1-4, default 4): 4
Hex code (type L to list all codes): 8e
Changed type of partition ‘Linux’ to ‘Linux LVM’

Command (m for help): w

※w で保存

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

ディスクの状態確認

fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 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 label type: dos
Disk identifier: 0x000d531f

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 25559039 12471296 8e Linux LVM
/dev/sda3 25559040 33751039 4096000 82 Linux swap / Solaris
/dev/sda4 33751040 41943039 4096000 8e Linux LVM

Disk /dev/mapper/VGroup1-root: 12.8 GB, 12767461376 bytes, 24936448 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

/dev/sda4が増えている。

※ここでリブートする。(リブートしないと以降の手順pvcreateが失敗します)

4.手順(LVMの操作)

物理ボリュームの作成

pvcreate /dev/sda4

物理ボリュームの確認

pvdisplay
— Physical volume —
PV Name /dev/sda2
VG Name VGroup1
PV Size 11.89 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 3044
Free PE 0
Allocated PE 3044
PV UUID Fq0oM8-TSnI-yFif-RmXi-882p-xA3g-OqTOsF

“/dev/sda4” is a new physical volume of “<3.91 GiB”
— NEW Physical volume —
PV Name /dev/sda4
VG Name
PV Size <3.91 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID bMHn2Y-mKAH-moGv-vrPU-ybeL-r1Fz-M3oHIP

ボリュームグループにディスク追加(拡張)

vgextend VGroup1 /dev/sda4

ボリュームグループの確認

vgdisplay
— Volume group —
VG Name VGroup1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 15.79 GiB
PE Size 4.00 MiB
Total PE 4043
Alloc PE / Size 3044 / 11.89 GiB
Free PE / Size 999 / 3.90 GiB
VG UUID KEJfVw-qjz5-wDC2-WtbE-eCFM-5ugO-C0t3zT

Free PE Sizeが4GBに増えている。

論理ボリュームの確認

lvdisplay
— Logical volume —
LV Path /dev/VGroup1/root
LV Name root
VG Name VGroup1
LV UUID UEedsN-13Sw-xROj-zf1Q-w690-gr1R-zgfwca
LV Write Access read/write
LV Creation host, time centos7-02, 2019-09-29 16:50:13 +0900
LV Status available
# open 1
LV Size 11.89 GiB
Current LE 3044
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 8192
    Block device 253:0

スナップショットの作成
(※スナップショットは未使用の同一ボリュームグループ内に作成されるので、
ボリューム名のみの指定でOK。)

lvcreate -s -L 1G -n snap01 /dev/VGroup1/root

Using default stripesize 64.00 KiB.
Logical volume “snap01” created.

LVの確認
lvscan

ACTIVE Original ‘/dev/VGroup1/root’ [11.89 GiB] inherit
ACTIVE Snapshot ‘/dev/VGroup1/snap01’ [1.00 GiB] inherit

スナップボリュームをマウントする
mkdir /mnt/snap

mount -t xfs -o ro,nouuid /dev/VGroup1/snap01 /mnt/snap

(※nouuidオプションを付けないとduplicateUUIDでマウントが出来ません。)

スナップボリュームのアンマウント
umount /mnt/snap

スナップショットの削除
lvremove /dev/VGroup1/snap01

Do you really want to remove active logical volume VGroup1/snap01? [y/n]: y
Logical volume “snap01” successfully removed

LVの確認
lvscan

ACTIVE ‘/dev/VGroup1/root’ [11.89 GiB] inherit

Comments are closed.