我有以下逻辑卷:
--- Logical volume ---
LV Path /dev/wd1/mongodb
LV Name mongodb
VG Name wd1
LV UUID xxxx
LV Write Access read/write
LV Creation host, time xxxx
LV snapshot status source of
mongodbSnap [active]
LV Status available
# open 1
LV Size 8.00 GiB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:3
我使用以下命令:
lvcreate --size 100M --snapshot --name mongodbSnap /dev/wd1/mongodb
创建以下快照:
--- Logical volume ---
LV Path /dev/wd1/mongodbSnap
LV Name mongodbSnap
VG Name wd1
LV UUID xxx
LV Write Access read/write
LV Creation host, time xxx
LV snapshot status active destination for mongodb
LV Status available
# open 0
LV Size 8.00 GiB
Current LE 2048
COW-table size 100.00 MiB
COW-table LE 25
Allocated to snapshot 0.18%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:7
到目前为止,一切看起来都很好。但是,当我尝试使用以下命令挂载 snap lv 卷时:
安装-t xfs /dev/wd1/mongodbSnap /mnt
我收到以下错误:
mount: wrong fs type, bad option, bad superblock on /dev/mapper/wd1-mongodbSnap,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so.
更新
日志消息包含以下错误:
[2424239.516667] XFS (dm-7): Filesystem has duplicate UUID xxxxxx - can't mount
为什么快照会包含与原始 lv 相同的 UUID,我该如何解决这个问题?这样做的目的是使用 dd 命令备份驱动器...
解决方案是使用 nouuid 选项挂载文件系统
mount -o nouuid <source> <dest>
答案1
使用 dd 进行备份时无需挂载它。虽然不建议对 XFS 使用 dd(请参阅下文了解原因),但如果您坚持使用 dd,只需使用快照 LV 设备作为输入参数(
if
):dd if=/dev/wd1/mongodbSnap of=/path/backup_of_mongodb_$(date -I).img
UUID 是文件系统的唯一标识符,存储在文件系统元数据中。当您拍摄 LV 的快照时,此元数据也与快照 LV 中的原始 LV 相同,因此它们具有相同的 UUID。但是,请注意 XFS 的手册页(本地
man xfs
或在线,例如这里) 对其 UUID 进行了如下描述:Each XFS filesystem is labeled with a Universal Unique Identifier (UUID). The UUID is stored in every allocation group header and is used to help distinguish one XFS filesystem from another, therefore you should avoid using dd(1) or other block-by-block copying programs to copy XFS filesystems. If two XFS filesystems on the same machine have the same UUID, xfsdump(8) may become confused when doing incremental and resumed dumps. xfsdump(8) and xfsrestore(8) are recommended for making copies of XFS filesystems.
TLDR:最好使用 xfsdump 和 xfsrestore。
使用 xfsdump 备份:
- 安装 xfsdump。例如,在 Ubuntu 中可以从包中安装这些工具
xfsdump
:
apt install xfsdump
- 转储:
xfsdump -f /path/backup_of_mongodb_$(date -I).xfsdump /dev/wd1/mongodb
- 安装 xfsdump。例如,在 Ubuntu 中可以从包中安装这些工具