CentOS7でLVMのスナップショットを取得する(ディスク追加)
Pocket

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

 

これで、スナップショットの取得準備が出来た。

Sponsored Links

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

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。