Galera Clusterのバックアップ検証を行う上で、LVMでのスナップショットを取得する必要があったので、まずスナップショットの作成についてのみ抜き出して記述する。
LVMのスナップショットを取得する場合、エクステントにある程度空きがある必要がある。今回は、こちらを参考にHDDを増設してLVMに組み込んで領域を追加、スナップショットの取得を行う。
1.LVMの領域追加
[root@BS-PUB-GALERA-02 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 39.51 GiB
PE Size 4.00 MiB
Total PE 10114
Alloc PE / Size 10103 / 39.46 GiB
Free PE / Size 11 / 44.00 MiB
VG UUID P5WTTu-fPES-0Oow-kpx5-rzIn-k7c8-qNLBeS
…まぁ、ご覧のとおり空きが無い状態。
というわけで、まずディスクを増設してLVMに組み込んで空き領域を増やしてあげる必要がある。
HDD(/dev/sdb)を追加した後、fdiskでパーティション作成を行う。
parted -s -a optimal /dev/sdb -- mklabel gpt mkpart primary 1 -1 set 1 lvm on
[root@BS-PUB-GALERA-02 ~]# parted -s -a optimal /dev/sdb -- mklabel gpt mkpart primary 1 -1 set 1 lvm on
[root@BS-PUB-GALERA-02 ~]# fdisk -l /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: gpt
# Start End Size Type Name
1 2048 104855551 50G Linux LVM primary
パーティションの作成が終わったら、物理ボリュームの作成、既存論理ボリュームグループへの組み込みを行う。
pvcreate /dev/sdb1
vgextend 論理ボリュームグループ名 /dec/sdb1
[root@BS-PUB-GALERA-02 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@BS-PUB-GALERA-02 ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "50.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 50.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID fuPenB-6xb9-co3w-cRBD-fE6R-2QZA-mv2Lcc
[root@BS-PUB-GALERA-02 ~]# vgextend centos /dev/sdb1
Volume group "centos" successfully extended
[root@BS-PUB-GALERA-02 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 89.50 GiB
PE Size 4.00 MiB
Total PE 22913
Alloc PE / Size 10103 / 39.46 GiB
Free PE / Size 12810 / 50.04 GiB
VG UUID P5WTTu-fPES-0Oow-kpx5-rzIn-k7c8-qNLBeS
これで、スナップショットの取得準備が出来た。
2.スナップショットの取得
さて、次は実際にスナップショットを取得してみよう。
現在の利用容量を確認し、大体2GB程度あれば問題無いと思われるので、スナップショットの容量として2GBを指定して取得をする。
lvcreate -s -L 2G -n snap.$(date +%Y%m%d) /dev/centos/root
[root@BS-PUB-GALERA-02 ~]# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos-root 38G 1.5G 37G 4% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 8.3M 911M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/sda1 497M 125M 373M 25% /boot
tmpfs 184M 0 184M 0% /run/user/0
[root@BS-PUB-GALERA-02 ~]# lvcreate -s -L 2G -n snap.$(date +%Y%m%d) /dev/centos/root
Logical volume "snap.20160207" created.
[root@BS-PUB-GALERA-02 ~]# lvscan
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
ACTIVE Original '/dev/centos/root' [37.46 GiB] inherit
ACTIVE Snapshot '/dev/centos/snap.20160207' [2.00 GiB] inherit
無事、スナップショットを取得出来ている事が確認出来た。
次に、このスナップショットを読込み専用でマウントし、中身を取り出してみよう。
mount -o ro /dev/centos/snap.20160207 /mnt/snap
なお、この時以下のようなエラーが出力される事がある。
[root@BS-PUB-GALERA-02 ~]# mount -o ro /dev/centos/snap.20160207 /mnt/snap
mount: wrong fs type, bad option, bad superblock on /dev/mapper/centos-snap.20160207,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
[root@BS-PUB-GALERA-02 ~]# dmesg | tail
[ 2642.189777] sdb:
[ 2654.100063] sdb: sdb1
[ 2729.753971] sdb: sdb1
[ 3628.379730] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3661.352877] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3733.808690] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3783.939046] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3792.973191] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3835.167948] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
[ 3936.969841] XFS (dm-4): Filesystem has duplicate UUID d06ae08e-e2de-48d0-b483-8f1a17b47f23 - can't mount
これは、どうやらUUIDが重複したデバイスをマウントしようとしたために出るエラーのようだ。
このエラーが出た場合は、以下のように「-o nouuid」を付与してコマンドを実行する。
mount -o nouuid -o ro /dev/centos/snap.20160207 /mnt/snap
[root@BS-PUB-GALERA-02 ~]# mount -o nouuid -o ro /dev/centos/snap.20160207 /mnt/snap
[root@BS-PUB-GALERA-02 ~]# ls -la /mnt/snap/
合計 28
dr-xr-xr-x. 17 root root 4096 1月 31 18:26 .
drwxr-xr-x. 3 root root 17 2月 7 16:09 ..
-rw-r--r-- 1 root root 0 1月 31 18:26 .autorelabel
lrwxrwxrwx. 1 root root 7 1月 25 05:14 bin -> usr/bin
drwxr-xr-x. 2 root root 6 1月 25 05:13 boot
drwxr-xr-x. 2 root root 6 1月 25 05:13 dev
drwxr-xr-x. 76 root root 8192 2月 7 15:08 etc
drwxr-xr-x. 2 root root 6 8月 12 23:22 home
lrwxrwxrwx. 1 root root 7 1月 25 05:14 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 1月 25 05:14 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 8月 12 23:22 media
drwxr-xr-x. 2 root root 6 8月 12 23:22 mnt
drwxr-xr-x. 2 root root 6 8月 12 23:22 opt
drwxr-xr-x. 2 root root 6 1月 25 05:13 proc
dr-xr-x---. 3 root root 4096 2月 7 14:53 root
drwxr-xr-x. 2 root root 6 1月 25 05:13 run
lrwxrwxrwx. 1 root root 8 1月 25 05:14 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 8月 12 23:22 srv
drwxr-xr-x. 2 root root 6 1月 25 05:13 sys
drwxrwxrwt. 7 root root 88 2月 7 15:09 tmp
drwxr-xr-x. 13 root root 4096 1月 25 05:14 usr
drwxr-xr-x. 19 root root 4096 2月 7 15:08 var
無事、スナップショットの取得と中身の確認を行う事が出来た。
ディスクごとまるまる戻す場合は、lvconvertコマンドを実行することで戻すことができるが、今回の目的はあくまでもファイルの切り戻しを行えるようにすることなので、今回はそこまで確認はしない。