Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > linux lvm快照的正确mount挂载

linux lvm快照的正确mount挂载实现方式

作者:学亮编程手记

这篇文章主要介绍了linux lvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

linux lvm快照的正确mount挂载

由于 LVM 快照的特殊性 ,普通的 mount 方式可能不适用。

以下是更深入的分析和解决方案:

1. 检查快照是否正确创建

首先确认快照是否成功创建:

lvs  # 查看 temp_snap 是否存在,并检查属性

如果 Origin 指向 mysql_data,说明快照创建成功。

2. 确保快照已激活

lvchange -ay /dev/vg00/temp_snap  # 强制激活快照

3. 尝试直接挂载(不指定文件系统类型)

mount /dev/vg00/temp_snap /mnt/snap

如果报错 bad fs type,说明内核无法自动识别文件系统。

4. 显式指定文件系统类型(关键步骤)

mount -t ext4 -o ro,nouuid /dev/vg00/temp_snap /mnt/snap
mount -t xfs -o ro,nouuid /dev/vg00/temp_snap /mnt/snap

关键选项说明:

5. 如果仍然失败:检查文件系统一致性

fsck -f /dev/vg00/temp_snap  # 强制检查
xfs_repair /dev/vg00/temp_snap

6. 最终修正版备份脚本

#!/bin/bash

# 1. 创建快照(必须足够大)
lvcreate -s -n temp_snap -L 20G /dev/vg00/mysql_data

# 2. 激活快照
lvchange -ay /dev/vg00/temp_snap

# 3. 获取文件系统类型
FS_TYPE=$(blkid -o value -s TYPE /dev/vg00/temp_snap)
[ -z "$FS_TYPE" ] && FS_TYPE="ext4"  # 默认类型

# 4. 挂载快照(关键步骤)
mkdir -p /mnt/snap
if mount -t $FS_TYPE -o ro,nouuid /dev/vg00/temp_snap /mnt/snap; then
    # 5. 备份数据
    rsync -a /mnt/snap/ backup-server:/mysql_backups/
    # 6. 卸载并删除
    umount /mnt/snap
    lvremove -f /dev/vg00/temp_snap
else
    echo "挂载失败!请检查:"
    echo "1. 快照大小是否足够(lvdisplay /dev/vg00/temp_snap)"
    echo "2. 文件系统是否损坏(fsck/xfs_repair)"
    exit 1
fi

常见根本原因

1.未使用 -o ro,nouuid

LVM 快照必须只读挂载,且必须忽略 UUID 冲突。

2.快照空间不足

如果原卷在备份期间变化量超过 20G,快照会失效。

3.文件系统未正确关闭

原卷 mysql_data 可能需要先 sync 再创建快照。

如何验证问题

# 查看快照状态
lvdisplay /dev/vg00/temp_snap | grep -E "Allocated|Snapshot"

# 查看挂载错误详情
dmesg | tail

如果仍有问题,请提供:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文