Linux(CentOS)系统管理入门笔记(第十九期)——逻辑卷管理进阶:快照、RAID-LV 与交换空间——LVM 快照 + RAID 逻辑卷 + Swap 管理

发布时间:2026/7/31 2:11:00
Linux(CentOS)系统管理入门笔记(第十九期)——逻辑卷管理进阶:快照、RAID-LV 与交换空间——LVM 快照 + RAID 逻辑卷 + Swap 管理 LinuxCentOS系统管理入门笔记第十九期——逻辑卷管理进阶快照、RAID-LV 与交换空间——LVM 快照 RAID 逻辑卷 Swap 管理知识衔接LinuxCentOS系统管理入门笔记第十八期——逻辑卷管理LVM基本概念与操作——PVVGLV 与动态扩容Linux系统管理入门系列更多文章欢迎访问Linux入门——系统管理1、Linux入门——系统管理2我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~引言LVM 的“隐藏技能”——快照、镜像与内存扩展上一期我们掌握了 LVM 的基本操作——创建 PV/VG/LV、在线扩容、卷组管理。但 LVM 的能力远不止于此它还有三个极为实用的“高级技能”LVM 快照Snapshot想象一下你在修改一个重要文件之前给它拍了一张“照片”。如果改坏了可以随时恢复到拍照时的状态。LVM 快照就是这个原理——它为逻辑卷创建一个时间点副本用于数据备份、系统升级前的“后悔药”、或是为测试环境提供生产数据的瞬时拷贝。RAID 逻辑卷RAID-LV传统 RAID 是在磁盘层面做冗余而 LVM 可以在逻辑卷层面实现 RAID 镜像。这意味着你可以在线将普通逻辑卷转换为镜像卷而不需要重新格式化或迁移数据。交换空间Swap当物理内存不足时系统可以将不活跃的数据暂存到磁盘上的 Swap 空间从而“腾出”内存给活跃进程。虽然 Swap 速度远慢于内存但它在防止系统因内存耗尽而崩溃方面起着关键的“安全网”作用。本期将系统学习这三个 LVM 进阶技能LVM 快照创建、挂载、恢复与删除RAID 逻辑卷创建 RAID1 逻辑卷、模拟故障、自动修复交换空间创建 Swap 分区、激活/停用、持久化配置与优先级管理读完这一期你将掌握 LVM 的“全家桶”——不仅是基本的存储管理更是生产环境中数据保护、高可用和内存管理的核心技能。— Compiled and Authored by Whisky — July 30 th, 2026目录LVM 快照数据的“后悔药”1.1 什么是 LVM 快照1.2 创建快照1.3 挂载与验证快照1.4 从快照恢复数据1.5 删除快照RAID 逻辑卷LVM 层面的数据冗余2.1 为什么需要 RAID-LV2.2 创建 RAID1 逻辑卷2.3 模拟磁盘故障与自动修复交换空间管理内存的“安全网”3.1 计算机存储层次与 Swap 的作用3.2 查看内存与 Swap 使用情况3.3 创建 Swap 分区3.4 激活与停用 Swap 空间3.5 持久化激活 Swap3.6 Swap 空间大小规划指南总结与速查手册1. LVM 快照数据的“后悔药”1.1 什么是 LVM 快照LVM 快照Snapshot是在某个时间点为逻辑卷创建的一个“冻结”副本。它的工作原理非常巧妙快照原理┌─────────────────────────────────────────────────────────────┐ │ 原始 LV/dev/vg/lv │ │ ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┐ │ │ │块 A │块 B │块 C │块 D │块 E │块 F │块 G │ │ │ └──────┴──────┴──────┴──────┴──────┴──────┴──────┘ │ │ ▲ ▲ │ │ │ │ │ │ ┌──────┴──────┐ ┌──────┴──────┐ │ │ │ 快照 LV │ │ 快照 LV │ │ │ │ 只存储改变│ │ 只存储改变│ │ │ └─────────────┘ └─────────────┘ │ │ 初始快照为空 修改块 B 后将块 B 的原始数据复制到快照 │ └─────────────────────────────────────────────────────────────┘创建快照时快照几乎是空的只复制了元数据“快照表”原始 LV 被修改时系统会将修改前的原始数据复制到快照区域写时复制Copy-on-Write读取快照时如果数据未修改从原始 LV 读取如果已修改从快照区域读取白话理解快照就像一张“便签”记录着“这个块在拍快照时是什么样子的”。当原始数据被修改时系统先把旧数据抄到便签上再修改原始数据。所以快照存的是“变化前的旧数据”而不是完整副本——因此快照非常节省空间。关键点快照大小不需要等于原始 LV只需预估“会改变多少数据”如果快照空间被写满快照将失效无法继续追踪变化快照是可读写的可以挂载后查看或修改1.2 创建快照环境准备# 创建原始逻辑卷10GB[rootcentos7 ~]# lvcreate -n webapp -L 10G webapp# 创建文件系统并挂载[rootcentos7 ~]# mkfs.xfs /dev/webapp/webapp[rootcentos7 ~]# mkdir /webapp[rootcentos7 ~]# mount /dev/webapp/webapp /webapp# 写入测试数据[rootcentos7 ~]# echo original data /webapp/data.txt[rootcentos7 ~]# cp /etc/hosts /webapp/创建快照# 语法lvcreate -s -n 快照名 -L 快照大小 原始LV[rootcentos7 ~]# lvcreate -s -n webapp-snap1 -L 5G /dev/webapp/webappLogical volumewebapp-snap1created.# 查看快照状态[rootcentos7 ~]# lvsLV VG Attr LSize Pool Origin Data% webapp webapp owi-a-s---10.00g webapp-snap1 webapp swi-a-s---5.00g webapp0.01# Attr 中的 s 表示这是一个快照Origin 列显示原始 LV1.3 挂载与验证快照# 快照可以像普通逻辑卷一样挂载[rootcentos7 ~]# mkdir /snap[rootcentos7 ~]# mount /dev/webapp/webapp-snap1 /snap# 查看快照中的数据与原始 LV 完全一致[rootcentos7 ~]# ls /snapdata.txt hosts[rootcentos7 ~]# cat /snap/data.txtoriginal data修改原始数据观察快照# 修改原始 LV 中的数据[rootcentos7 ~]# echo modified data /webapp/data.txt[rootcentos7 ~]# cp /etc/fstab /webapp/# 查看原始 LV[rootcentos7 ~]# ls /webapp/data.txt fstab hosts[rootcentos7 ~]# cat /webapp/data.txtmodified data# 查看快照仍然是修改前的状态[rootcentos7 ~]# ls /snap/data.txt hosts# 没有 fstab[rootcentos7 ~]# cat /snap/data.txtoriginal data# 仍然是原始内容核心理解快照是时间点副本它“冻结”了创建瞬间的数据状态。即使原始数据后续被修改快照仍保持原样。1.4 从快照恢复数据场景 1只恢复单个文件最简单的方式# 从快照中拷贝需要的文件到原始位置[rootcentos7 ~]# cp /snap/data.txt /webapp/data.txt场景 2恢复整个逻辑卷需要卸载并合并# 卸载原始 LV 和快照[rootcentos7 ~]# umount /webapp[rootcentos7 ~]# umount /snap# 合并快照到原始 LV恢复快照时的状态[rootcentos7 ~]# lvconvert --merge /dev/webapp/webapp-snap1Merging of volume webapp-snap1 started. webapp: Merged:100.00%# 重新挂载原始 LV[rootcentos7 ~]# mount /dev/webapp/webapp /webapp[rootcentos7 ~]# cat /webapp/data.txtoriginal data# 恢复到快照时的状态[rootcentos7 ~]# ls /webapp/data.txt hosts# fstab 不见了恢复到快照时的状态⚠️重要提醒lvconvert --merge会将原始 LV 恢复到快照时的状态所有在快照创建后的修改都会丢失。执行前务必确认1.5 删除快照# 如果快照不再需要直接删除[rootcentos7 ~]# umount /snap[rootcentos7 ~]# lvremove /dev/webapp/webapp-snap1Do you really want to remove active logical volume webapp-snap1?[y/n]: y Logical volumewebapp-snap1successfully removed1.6 快照的典型应用场景场景说明升级前备份升级应用前对 LV 创建快照升级失败可直接回滚数据备份挂载快照进行备份不影响业务对原始 LV 的读写测试环境从生产快照创建测试数据用于验证和调试误删除恢复快照保留了删除前的数据状态可快速找回2. RAID 逻辑卷LVM 层面的数据冗余2.1 为什么需要 RAID-LV传统 RAID 是在磁盘层面做冗余如硬件 RAID 或 mdadm。而 LVM 可以在逻辑卷层面实现 RAID这意味着不需要额外的 mdadm 配置统一用 LVM 管理可以在线将普通 LV 转换为 RAID-LV与 LVM 的扩展、快照等功能无缝集成环境准备# 创建包含多块 PV 的 VG[rootcentos7 ~]# vgcreate raidvg /dev/sd{b,c,d}Volume groupraidvgsuccessfully created2.2 创建 RAID1 逻辑卷# 创建 RAID1 逻辑卷镜像卷[rootcentos7 ~]# lvcreate --type raid1 -n raid1_lv -L 10G raidvgLogical volumeraid1_lvcreated.# 查看 LV 类型[rootcentos7 ~]# lvs -a -o name,attr,size,devices raidvgLV Attr LSize Devices raid1_lv Rwi-a-r---10.00g raid1_lv_rimage_0(0),raid1_lv_rimage_1(0)# Attr 中的 R 表示 RAID 类型# 查看详细信息[rootcentos7 ~]# lvdisplay /dev/raidvg/raid1_lv--- Logical volume --- LV Path /dev/raidvg/raid1_lv LV Name raid1_lv VG Name raidvg LV Size10.00GiB Segments1Allocation inherit Read ahead sectors auto Block device253:2# 查看 LV 的 RAID 状态[rootcentos7 ~]# lvs -a -o name,attr,size,devices raidvgLV Attr LSize Devices raid1_lv Rwi-a-r---10.00g raid1_lv_rimage_0(0),raid1_lv_rimage_1(0)[raid1_lv_rimage_0]iwi-aor---10.00g /dev/sdb(1)[raid1_lv_rimage_1]iwi-aor---10.00g /dev/sdc(1)[raid1_lv_rmeta_0]ewi-aor---4.00m /dev/sdb(0)[raid1_lv_rmeta_1]ewi-aor---4.00m /dev/sdc(0)# rimage 数据镜像rmeta RAID 元数据创建文件系统并挂载[rootcentos7 ~]# mkfs.xfs /dev/raidvg/raid1_lv[rootcentos7 ~]# mkdir /raid1_data[rootcentos7 ~]# mount /dev/raidvg/raid1_lv /raid1_data[rootcentos7 ~]# echo RAID1 test data /raid1_data/test.txt2.3 模拟磁盘故障与自动修复模拟故障# 模拟 /dev/sdb 故障覆盖磁盘开头[rootcentos7 ~]# dd if/dev/zero of/dev/sdb bs1M count10100 recordsin100 records out10485760bytes(10MB)copied,0.01s,1.0GB/s# 查看 RAID 状态——LV 进入降级模式[rootcentos7 ~]# lvs -a -o name,attr,size,devices raidvgLV Attr LSize Devices raid1_lv Rwi-a-r-p-10.00g raid1_lv_rimage_0(0),raid1_lv_rimage_1(0)# Attr 中的 p 表示部分可用partial# 查看详细 RAID 状态[rootcentos7 ~]# lvdisplay /dev/raidvg/raid1_lv--- Logical volume --- LV Path /dev/raidvg/raid1_lv... LV Status NOT available...⚠️注意如果 RAID-LV 处于降级模式且只有一块盘可用系统可能无法挂载。需要先将故障盘从 VG 中移除然后添加新盘重新构建镜像。修复流程# 1. 移除故障盘强制[rootcentos7 ~]# vgreduce --removemissing raidvg --forceWARNING: Missing device /dev/sdb replaced with -1... Removed missing PV /dev/sdb from VG raidvg# 2. 添加新盘到 VG[rootcentos7 ~]# pvcreate /dev/sdd[rootcentos7 ~]# vgextend raidvg /dev/sdd# 3. 修复 RAID1 逻辑卷[rootcentos7 ~]# lvconvert --repair /dev/raidvg/raid1_lvWARNING: This will attempt to repair the RAID logical volume... Do you want to continue?[y/n]: y Attempt to replace failed PVsinRAID1 LV raidvg/raid1_lv?# 4. 查看修复状态[rootcentos7 ~]# lvs -a -o name,attr,size,devices raidvgLV Attr LSize Devices raid1_lv Rwi-a-r---10.00g raid1_lv_rimage_0(0),raid1_lv_rimage_2(0)# 镜像重建完成LV 恢复正常3. 交换空间管理内存的“安全网”3.1 计算机存储层次与 Swap 的作用现代计算机采用层次化存储结构速度越快成本越高CPU 寄存器最快最小 ↓ CPU 高速缓存L1/L2/L3 ↓ 物理内存RAM—— 速度较快容量适中 ↓ 交换空间Swap—— 在磁盘上速度慢作为内存的“后备” ↓ 文件系统存储最慢最大Swap 的作用功能说明内存扩展当 RAM 不足时将不活跃的内存页写入 Swap释放 RAM 给活跃进程内存回收当系统空闲时将 Swap 中的页面读回 RAM休眠支持笔记本休眠时将 RAM 内容保存到 Swap需要 Swap ≥ RAM系统稳定性防止因内存耗尽导致系统崩溃OOM KillerSwap 不是内存的替代品——由于磁盘速度远慢于内存频繁使用 Swap 会严重影响系统性能。Swap 更像是“应急安全网”而非“主力存储”。3.2 查看内存与 Swap 使用情况# 查看内存和 Swap 使用情况默认 KiB[rootcentos7 ~]# freetotal usedfreeshared buff/cache available Mem:40261563304603528844121361668523485576Swap:406322804063228# -m以 MiB 为单位显示[rootcentos7 ~]# free -mtotal usedfreeshared buff/cache available Mem:39313223446111623402Swap:396703967# -h人类可读格式[rootcentos7 ~]# free -htotal usedfreeshared buff/cache available Mem:3.9G 322M3.4G 11M 162M3.3G Swap:4.0G 0B4.0Gfree 输出各列含义列含义total总容量used已使用total - free - buffers - cachefree真正空闲未被任何程序占用shared多个进程共享的内存buff/cache被缓冲/缓存占用的内存可回收available可供应用程序使用的内存估算值3.3 创建 Swap 分区方法一使用分区创建 Swap# 使用 parted 创建 Swap 分区类型设置为 linux-swap[rootcentos7 ~]# parted /dev/sdb mklabel gpt[rootcentos7 ~]# parted /dev/sdb unit MiB mkpart swap linux-swap 1 2049# 格式化 Swap 分区[rootcentos7 ~]# mkswap /dev/sdb1Setting up swapspace version1, size2097148KiB no label,UUID2bf4e179-3648-4412-9495-3b278df4acd6方法二使用 LVM 创建 Swap 逻辑卷# 创建 Swap 逻辑卷[rootcentos7 ~]# lvcreate -n swap_lv -L 2G webapp# 格式化为 Swap[rootcentos7 ~]# mkswap /dev/webapp/swap_lvSetting up swapspace version1, size2.00GiB no label,UUIDxxx方法三使用文件创建 Swap不推荐性能较差[rootcentos7 ~]# dd if/dev/zero of/swapfile bs1M count2048[rootcentos7 ~]# chmod 600 /swapfile[rootcentos7 ~]# mkswap /swapfile[rootcentos7 ~]# swapon /swapfile3.4 激活与停用 Swap 空间# 查看当前激活的 Swap 设备[rootcentos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2# 激活 Swap 分区[rootcentos7 ~]# swapon /dev/sdb1# 再次查看[rootcentos7 ~]# swapon -sFilename Type Size Used Priority /dev/dm-1 partition40632280-2/dev/sdb1 partition20971480-3# 激活所有 /etc/fstab 中的 Swap 设备[rootcentos7 ~]# swapon -a# 停用 Swap 分区[rootcentos7 ~]# swapoff /dev/sdb1# 停用所有 Swap 设备[rootcentos7 ~]# swapoff -aSwap 优先级管理默认情况下系统按顺序使用 Swap 空间先激活的先用。可以使用-p指定优先级范围 -1 到 32767值越大优先级越高# 激活时指定优先级[rootcentos7 ~]# swapon -p 4 /dev/sdb1# 在 /etc/fstab 中指定优先级# UUIDxxx swap swap pri4 0 03.5 持久化激活 Swap在/etc/fstab中添加条目确保系统重启后自动激活 Swap[rootcentos7 ~]# blkid /dev/sdb1/dev/sdb1:UUID2bf4e179-3648-4412-9495-3b278df4acd6TYPEswap# 添加 Swap 条目到 /etc/fstab[rootcentos7 ~]# echo UUID2bf4e179-3648-4412-9495-3b278df4acd6 swap swap defaults 0 0 /etc/fstab# 或者使用 LVM Swap 逻辑卷[rootcentos7 ~]# echo /dev/webapp/swap_lv swap swap defaults 0 0 /etc/fstab# 测试激活所有 fstab 中的 Swap[rootcentos7 ~]# swapon -a3.6 Swap 空间大小规划指南物理内存RAM推荐 Swap不含休眠推荐 Swap含休眠≤ 2GB2 × RAM3 × RAM2GB ~ 8GB1 × RAM2 × RAM8GB ~ 64GB≥ 4GB1.5 × RAM 64GB≥ 4GB不建议休眠规划原则数据库服务器等 I/O 密集型应用可适当减少 Swap避免磁盘 I/O 争用虚拟化宿主建议保留一定 Swap 作为安全缓冲云服务器通常配置较小 Swap依赖云平台的内存监控和自动扩容4. 总结与速查手册4.1 核心知识点一览主题关键点LVM 快照写时复制CoW仅存储变化数据创建时几乎不占空间快照恢复挂载快照拷贝文件或lvconvert --merge整体回滚快照失效快照空间写满后会失效需预留足够空间RAID-LVLVM 层面的 RAID1 镜像支持在线故障恢复RAID-LV 修复vgreduce --removemissing→vgextend→lvconvert --repairSwap 空间内存不足时的“安全网”位于磁盘上速度慢Swap 管理swapon/swapoff/etc/fstab持久化4.2 LVM 快照命令速查表操作命令创建快照lvcreate -s -n snap_name -L size /dev/vg/lv查看快照lvs -aAttr 中的 ‘s’ 表示快照查看快照数据使用率lvs -o name,data_percent /dev/vg挂载快照mount /dev/vg/snap_name /mnt合并快照回滚lvconvert --merge /dev/vg/snap_name删除快照lvremove /dev/vg/snap_name4.3 RAID-LV 命令速查表操作命令创建 RAID1 LVlvcreate --type raid1 -n lv_name -L size vg_name查看 RAID 状态lvs -a -o name,attr,size,devices vg_name模拟磁盘故障dd if/dev/zero of/dev/sdX bs1M count10移除故障 PVvgreduce --removemissing vg_name --force修复 RAIDlvconvert --repair /dev/vg_name/lv_name4.4 Swap 管理命令速查表操作命令查看内存与 Swapfree -h查看激活的 Swapswapon -s或swapon --show创建 Swapmkswap /dev/sdX1激活 Swapswapon /dev/sdX1激活所有 fstab 中的 Swapswapon -a停用 Swapswapoff /dev/sdX1停用所有 Swapswapoff -a指定优先级激活swapon -p N /dev/sdX14.5 常见错误排查错误原因解决方案Snapshot origin is active快照正在被使用先卸载快照再操作Snapshot: Cannot merge over an active origin原始 LV 正在使用先卸载原始 LVInsufficient free space for snapshot快照空间太小用lvextend扩展快照大小swapoff: Cannot find device设备未激活或已删除检查swapon -s确认mkswap: Device or resource busy设备正在使用确保设备未挂载4.6 思考与拓展原课后作业转化LVM 快照为什么创建时几乎不占用空间→ 快照采用“写时复制CoW”技术创建时只复制元数据快照表不复制数据。只有当原始 LV 的数据块被修改时才将修改前的旧数据复制到快照区域。快照空间写满后会发生什么→ 快照会失效变得“不完整”无法继续追踪变化。此时快照不可用需要删除后重新创建或提前扩展快照大小。RAID-LV 和 mdadm RAID 有什么区别→ RAID-LV 是 LVM 层面的 RAID与 LVM 的其他功能快照、扩展无缝集成mdadm 是独立的软 RAID 工具更通用。RAID-LV 适合“LVM 优先”的存储架构。Swap 空间为什么不能完全替代内存→ Swap 位于磁盘上读写速度比内存慢几个数量级毫秒级 vs 纳秒级。频繁使用 Swap 会导致系统响应极慢称为“交换抖动Swapping”。什么时候应该增加 Swap什么时候应该增加内存→ 如果系统偶尔出现内存不足增加 Swap 可作为临时方案如果系统频繁使用 SwapSwap 使用率高说明物理内存真正不足应增加物理内存。4.7 生产环境最佳实践场景建议系统升级前为关键 LV 创建快照升级失败可直接回滚数据备份挂载快照进行备份mount -o ro只读挂载不影响业务LVM 快照管理定期清理无用快照避免占用过多空间RAID-LV生产环境使用 RAID1 或 RAID10 逻辑卷确保数据冗余Swap 大小物理内存 4GB 时Swap 设为内存的 1.5-2 倍内存 ≥ 8GB 时Swap 设为 4-8GBSwap 监控监控 Swap 使用率如果持续 20%应考虑增加物理内存RAID 故障告警配置脚本监控 RAID-LV 状态磁盘故障时及时告警下期预告存储管理告一段落下一期我们将把视角从“数据存放”转向“系统启动”——一台 Linux 服务器从按下电源键到出现登录提示符中间发生了什么我们将深入CentOS 7 启动原理学习 GRUB2 引导程序、systemd target 目标管理、以及如何重置 root 密码和修复启动故障。敬请期待第二十期— Compiled and Authored by Whisky — July 30 th, 2026