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

 更新时间:2025年05月26日 15:17:22   作者:学亮编程手记  
这篇文章主要介绍了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. 显式指定文件系统类型(关键步骤)

  • 如果是 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:以只读方式挂载(快照必须只读)
  • -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 -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

如果仍有问题,请提供:

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

总结

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

相关文章

  • 解决ssh远程登陆linux显示-bash-4.1$的问题

    解决ssh远程登陆linux显示-bash-4.1$的问题

    下面小编就为大家带来一篇解决ssh远程登陆linux显示-bash-4.1$的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 深入解读Linux进程函数fork(),vfork(),execX()

    深入解读Linux进程函数fork(),vfork(),execX()

    这篇文章主要介绍了深入解读Linux进程函数fork(),vfork(),execX(),分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • CentOS7安装PHP7 Redis扩展的方法步骤

    CentOS7安装PHP7 Redis扩展的方法步骤

    这篇文章主要介绍了CentOS7安装PHP7 Redis扩展的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Linux利用firewalld和iptables实现IP端口限制与开放

    Linux利用firewalld和iptables实现IP端口限制与开放

    在服务器管理中,防火墙是保护系统安全的重要工具,通常,我们可能会关闭firewalld,但在某些情况下,我们需要利用firewalld或iptables来限制IP请求,本文将详细介绍如何使用firewalld和iptables来实现IP端口限制与开放,需要的朋友可以参考下
    2025-02-02
  • Centos系统中用mock构建rpm的方法

    Centos系统中用mock构建rpm的方法

    这篇文章主要给大家介绍了在Centos系统中用mock构建rpm的方法,文中给出了详细的命令代码,相信对大家的理解和学习具有一定的参考借鉴家价值,有需要的朋友们下面来一起看看吧。
    2016-12-12
  • Linux中Curl参数详解实践应用

    Linux中Curl参数详解实践应用

    在现代网络开发和运维工作中,curl 命令是一个不可或缺的工具,它是一个利用 URL 语法在命令行下工作的文件传输工具,支持多种协议,如 HTTP、HTTPS、FTP 等,本文给大家介绍了Linux中Curl参数详解实践应用,需要的朋友可以参考下
    2025-01-01
  • 在Centos上搭建Maven中央仓库的方法

    在Centos上搭建Maven中央仓库的方法

    这篇文章主要介绍了在Centos上搭建Maven中央仓库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详细介绍linux动态网络和静态网络和克隆后的网络配置

    详细介绍linux动态网络和静态网络和克隆后的网络配置

    这篇文章主要介绍了详细介绍linux动态网络和静态网络和克隆后的网络配置,具有一定的学习价值,有需要的可以了解一下。
    2016-11-11
  • Linux下使用pip安装SpeechRecognition连接超时解决办法

    Linux下使用pip安装SpeechRecognition连接超时解决办法

    这篇文章主要介绍了Linux下使用pip安装SpeechRecognition连接超时解决办法,如果遇到此问题,可以借鉴阅读本文
    2023-03-03
  • Apache 添加虚拟目录注意事项

    Apache 添加虚拟目录注意事项

    Apache 添加虚拟目录注意事项,使用apache的朋友可以参考下。
    2011-08-08

最新评论