サポートログ

Filesystem has duplicate UUID...

ざっと書きます。

いままではVMWare ESXiで構築・運用していたけど、今回はKVMでやってみることになり、調べてみると仮想マシンのスナップショットを取るときqcow形式だと一時的にマシンがロックされてしまうので、lvmスナップショットでやろうかなと思ってます。
その検証のため、OSはUbuntu、lvmでシステムを、ファイルシステムはxfsで構築してみました。

他のサイト情報を参考に、lvmのsnapshot用の領域をVolumeGroupに追加しつつLogicalVolumeに割り当て、lvcreateコマンドでスナップショットを取る。ここまでは良かったのですが、じゃあこのスナップショットをマウントして内容を確認しようとすると…

root@ubuntu-vm:~# mount -o ro /dev/KVMSPOOL01/snap /snapshot/                                                                
mount: wrong fs type, bad option, bad superblock on /dev/mapper/KVMSPOOL01-snap,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

エラーになってしましました…

内容をみるとファイルシステムタイプがおかしいよ、って書いてあるので、それじゃオプションを付けましょうで試してみると…

root@ubuntu-vm:~# mount -t xfs -o ro /dev/KVMSPOOL01/snap /snapshot/                                                                
mount: wrong fs type, bad option, bad superblock on /dev/mapper/KVMSPOOL01-snap,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

同じエラー orz..

こうなりゃあ、ログを見なければという流れなので、とりあえず /var/log/syslog(/var/log/messages はUbuntuにはないのね)をみてみると…

12:10:25 ubuntu-vm kernel: [  316.274919] XFS (dm-5): Filesystem has duplicate UUID 2f64d646-d63f-401d-9557-f7f9ebd7ee88 - can't mount
12:10:35 ubuntu-vm kernel: [  326.873009] XFS (dm-5): Filesystem has duplicate UUID 2f64d646-d63f-401d-9557-f7f9ebd7ee88 - can't mount
12:10:52 ubuntu-vm kernel: [  343.262673] XFS (dm-5): Filesystem has duplicate UUID 2f64d646-d63f-401d-9557-f7f9ebd7ee88 - can't mount
12:11:53 ubuntu-vm kernel: [  405.038251] XFS (dm-5): Filesystem has duplicate UUID 2f64d646-d63f-401d-9557-f7f9ebd7ee88 - can't mount
12:12:07 ubuntu-vm kernel: [  418.663716] XFS (dm-5): Filesystem has duplicate UUID 2f64d646-d63f-401d-9557-f7f9ebd7ee88 - can't mount

uuidが重複してマウントできないだと…

Google先生に先人の知恵はないかと検索してみるとすぐにヒット。

XFSに関するトラブル対処
http://ysano.ysnet.org/archives/309

uuidを見ないでマウントすることができるとのことで

mount -t xfs -o ro,nouuid /dev/KVMSPOOL01/snap /snapshot/

/var/log/syslogにも…

12:46:02 ubuntu-vm kernel: [ 2453.564914] XFS (dm-5): Mounting V5 Filesystem
12:46:02 ubuntu-vm kernel: [ 2453.759496] XFS (dm-5): Starting recovery (logdev: internal)
12:46:02 ubuntu-vm kernel: [ 2453.828882] XFS (dm-5): Ending recovery (logdev: internal)

マウントできたようです。

ただ、先人はそれからいじくっているとInput/Output Errorが発生しているとのことでxfs_repairをかけているけど、自分はスナップショットだしReadOnlyでマウントしているし、ということでこの辺りは無視w。

あー、でも、なんかのことを想定してext4にでもしておいた方がいいのかなー
(なんかのことって何だよ。)


 

他のサイト情報ではsnapshotを溢れさすことも実施していたので自分も試してみましたが、自分はちょっと観点を変えて、snapshot領域がマウント済みだった場合の挙動を確認してみました。

まずは現状の確認…

root@ubuntu-vm:~# df
Filesystem                           1K-blocks     Used  Available Use% Mounted on
udev                                  16429924        0   16429924   0% /dev
tmpfs                                  3289788     9048    3280740   1% /run
/dev/mapper/VgGroup1-LvGroup--root    26353080  1938332   24414748   8% /
tmpfs                                 16448924        0   16448924   0% /dev/shm
tmpfs                                     5120        0       5120   0% /run/lock
tmpfs                                 16448924        0   16448924   0% /sys/fs/cgroup
/dev/sda1                               492268   125612     366656  26% /boot
/dev/mapper/KVMSPOOL01-LvGroup--kvm 1906350632 10273044 1896077588   1% /kvm
tmpfs                                      100        0        100   0% /run/lxcfs/controllers
tmpfs                                  3289788        0    3289788   0% /run/user/1000
/dev/mapper/KVMSPOOL01-snap         1906350632 10240276 1896110356   1% /snapshot

ちゃんとスナップショット領域(/dev/mapper/KVMSPOOL01-snap)をマウントしていますね。
(dfで表示されるスナップショット領域って、snapshot対象のものと同じで表示されるんですね)

ちょっと、こねくり回してsnapshotの使用状況を見てみると…

root@ubuntu-vm:/snapshot# lvdisplay /dev/KVMSPOOL01/snap                                                                            
  --- Logical volume ---
  LV Path                /dev/KVMSPOOL01/snap
  LV Name                snap
  VG Name                KVMSPOOL01
  LV UUID                ditjSR-18mE-xyEd-GX4c-l7GO-aBCL-Pl2GA6
  LV Write Access        read/write
  LV Creation host, time ubuntu-vm, 2016-06-09 12:10:06 +0900
  LV snapshot status     active destination for LvGroup-kvm
  LV Status              available
  # open                 1
  LV Size                1.78 TiB
  Current LE             465645
  COW-table size         1.00 GiB
  COW-table LE           256
  Allocated to snapshot  3.43%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5

3.43%更新されたようです。

もうちょっと、こねくり回してsnapshot状況を確認すると…

root@ubuntu-vm:/snapshot# lvdisplay /dev/KVMSPOOL01/snap                                                                            
  --- Logical volume ---
  LV Path                /dev/KVMSPOOL01/snap
  LV Name                snap
  VG Name                KVMSPOOL01
  LV UUID                ditjSR-18mE-xyEd-GX4c-l7GO-aBCL-Pl2GA6
  LV Write Access        read/write
  LV Creation host, time ubuntu-vm, 2016-06-09 12:10:06 +0900
  LV snapshot status     active destination for LvGroup-kvm
  LV Status              available
  # open                 1
  LV Size                1.78 TiB
  Current LE             465645
  COW-table size         1.00 GiB
  COW-table LE           256
  Allocated to snapshot  81.87%
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5

81.87%使用、いぇい。

最後のこねくり回してsnapshot状況を確認すると…

root@ubuntu-vm:/snapshot# lvdisplay /dev/KVMSPOOL01/snap                                                                            
  --- Logical volume ---
  LV Path                /dev/KVMSPOOL01/snap
  LV Name                snap
  VG Name                KVMSPOOL01
  LV UUID                ditjSR-18mE-xyEd-GX4c-l7GO-aBCL-Pl2GA6
  LV Write Access        read/write
  LV Creation host, time ubuntu-vm, 2016-06-09 12:10:06 +0900
  LV snapshot status     INACTIVE destination for LvGroup-kvm
  LV Status              available
  # open                 0
  LV Size                1.78 TiB
  Current LE             465645
  COW-table size         1.00 GiB
  COW-table LE           256
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:5

はい、溢れました。

この状況で/var/log/syslogを確認してみると

13:02:26 ubuntu-vm lvm[1936]: WARNING: Snapshot KVMSPOOL01-snap is now 81.87% full.
13:03:35 ubuntu-vm kernel: [ 3506.938646] device-mapper: snapshots: Invalidating snapshot: Unable to allocate exception.
13:03:35 ubuntu-vm lvm[1936]: WARNING: Snapshot KVMSPOOL01-snap changed state to: Invalid and should be removed.
13:03:35 ubuntu-vm lvm[1936]: Unmounting invalid snapshot KVMSPOOL01-snap from /snapshot.
13:03:39 ubuntu-vm kernel: [ 3510.579361] XFS (dm-5): Unmounting Filesystem

アンマウントしているというログが確認できます。ちなみに、81.87%時点でWARNINGも発報していました。

もちろん、dfでも

root@ubuntu-vm:/# df                                                                                                                
Filesystem                           1K-blocks     Used  Available Use% Mounted on
udev                                  16429924        0   16429924   0% /dev
tmpfs                                  3289788     9076    3280712   1% /run
/dev/mapper/VgGroup1-LvGroup--root    26353080  1938332   24414748   8% /
tmpfs                                 16448924        0   16448924   0% /dev/shm
tmpfs                                     5120        0       5120   0% /run/lock
tmpfs                                 16448924        0   16448924   0% /sys/fs/cgroup
/dev/sda1                               492268   125612     366656  26% /boot
/dev/mapper/KVMSPOOL01-LvGroup--kvm 1906350632 10409236 1895941396   1% /kvm
tmpfs                                      100        0        100   0% /run/lxcfs/controllers
tmpfs                                  3289788        0    3289788   0% /run/user/1000

スナップショット領域が無くなっています。

このことにより、スナップショットを取ってその領域をマウントしrsyncなどを使ってバックアップを取っているときにスナップショット領域が溢れてしまうとアンマウントされてしまって、元がない状態になって--deleteオプションをつけてrsyncなんかしていたらバックアップ先が無くなってしまうのではないのかなという疑問がでてきました。

-サポートログ