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コマンドを実行することで戻すことができるが、今回の目的はあくまでもファイルの切り戻しを行えるようにすることなので、今回はそこまで確認はしない。
