开发者

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

目录
  • linux lvm快照的正确mount挂载
    • 1. 检查快照是否正确创建www.devze.com
    • 2. 确保快照已激活
    • 3. 尝试直接挂载(不指定文件系统类型)
    • 4. 显式指定文件系统类型(关键步骤)
    • 5. 如果仍然失败:检查文件系统一致性
    • 6. 最终修正版备份脚本
    • 常见根本原因
    • 如何验证问题
  • 总结

    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. 显式指定文件系统类型(关键步骤)

    • 如果是 ext4/ext3/ext2
    mount -t ext4 -o ro,nouuid /dev/vg00/temp_snap /mnt/snap
    • 如果是 XFS
    mount -t xfs -o ro,nouuid /dev/vg00/temp_snap /mnt/snap

    关键选项说明:

    • -o ro:以只读方式挂http://www.devze.com载(快照必须只读)
    • -o nouuid:忽略 UUID 冲突(快照和原卷 UUID 相同,必须忽略)

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

    • EXT4 文件系统
    fsck -f /dev/vg00/temp_snap  # 强制检查
    • XFS 文件系统
    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 php-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 php"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

    如果仍有问题,请提供:

    • lvdisplay /dev/vg00/mysql_datalvdisplay /dev/vg00/temp_snap 的输出
    • mount 命令的完整错误信息
    • blkid /dev/vg00/temp_snap 的结果

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新运维

    运维排行榜