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

2025-05-27 02:50

本文主要是介绍linux lvm快照的正确mount挂载实现方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确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:以只读方式挂http://www.chinasem.cn载(快照必须只读)
  • -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 的结果

总结

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

这篇关于linux lvm快照的正确mount挂载实现方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1154794

相关文章

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Java Kafka消费者实现过程

《JavaKafka消费者实现过程》Kafka消费者通过KafkaConsumer类实现,核心机制包括偏移量管理、消费者组协调、批量拉取消息及多线程处理,手动提交offset确保数据可靠性,自动提交... 目录基础KafkaConsumer类分析关键代码与核心算法2.1 订阅与分区分配2.2 拉取消息2.3