
CentOS系统做快照,说白了就是给你的系统或数据盘在某个时间点“拍张照片”,以便将来需要时能快速回滚到那个状态。这事儿主要有两种玩法:一种是基于虚拟化平台的虚拟机快照,简单粗暴,适合整个虚拟机的状态保存;另一种是基于LVM(逻辑卷管理)的快照,更精细,针对的是数据盘或系统分区,尤其在物理机或对性能有要求时显得更为专业。在我看来,理解这两种机制,并根据实际场景灵活运用,才是真正掌握快照的关键。
解决方案
对于CentOS的快照操作,我们得区分两种最常见的场景:虚拟机环境和LVM环境。
1. 虚拟机快照(以VMware ESXi或VirtualBox为例,概念通用)
这是最直观、操作最简单的快照方式。它会捕获虚拟机在某一时刻的完整状态,包括磁盘文件、内存状态(可选)、以及配置信息。
-
创建快照:
-
VMware vSphere/ESXi: 选中虚拟机,右键选择“快照” -> “拍摄快照”。输入快照名称和描述,选择是否包含内存状态(包含内存会暂停VM一小段时间)。
-
VirtualBox: 选中虚拟机,点击“管理” -> “快照”,然后点击“拍摄”按钮。同样输入名称和描述。
-
关键点: 虚拟机快照在后台会创建一个差异磁盘文件(如或的delta文件),后续所有对虚拟机磁盘的写入都会记录在这个差异文件中。原始磁盘文件保持不变。
-
恢复快照:
-
VMware vSphere/ESXi: 选中虚拟机,右键选择“快照” -> “还原到快照”,然后选择你想要恢复的快照点。
-
VirtualBox: 选中虚拟机,点击“管理” -> “快照”,选择目标快照,点击“还原”按钮。
-
效果: 虚拟机的所有状态(包括文件系统、内存、运行中的程序等)都会回到拍摄快照那一刻。快照之后的所有更改都会被丢弃。
-
删除快照:
-
VMware vSphere/ESXi: 选中虚拟机,右键选择“快照” -> “删除快照”或“删除所有快照”。删除快照会将差异磁盘文件合并回原始磁盘文件,这个过程可能需要一些时间,并且会占用I/O资源。
-
VirtualBox: 选中虚拟机,点击“管理” -> “快照”,选择要删除的快照,点击“删除”按钮。
2. LVM快照(逻辑卷管理快照)
LVM快照是针对逻辑卷(可以理解为分区)的“写时复制”(Copy-on-Write, CoW)机制。它只记录快照创建后,原始逻辑卷上发生的数据块变化。这对于物理机或者对虚拟机内部特定分区做快照非常有用。
-
创建LVM快照:
-
前提: 你的CentOS系统需要使用LVM来管理磁盘分区。
-
命令:
lvcreate -L [快照大小] -s -n [快照逻辑卷名称] [原始逻辑卷路径]
登录后复制
-
示例: 假设你的数据盘是
/dev/vg_data/lv_mydata
登录后复制
,你想给它创建一个大小为10GB的快照,命名为。lvcreate -L 10G -s -n lv_mydata_snap /dev/vg_data/lv_mydata
登录后复制
-
说明: 指定快照卷的大小,这个大小不是原始卷的大小,而是预留给原始卷在快照创建后发生变化的块的空间。如果原始卷变化量超过这个大小,快照会失效。表示创建快照,指定快照卷的名称。
-
使用快照: 创建后,这个快照逻辑卷
/dev/vg_data/lv_mydata_snap
登录后复制
就可以像普通逻辑卷一样挂载和访问,它展示的是快照创建那一刻原始卷的数据状态。
-
恢复LVM快照:
-
警告: 恢复LVM快照是一个不可逆的过程,它会将原始逻辑卷的内容替换为快照逻辑卷的内容。请务必谨慎操作!
-
步骤:
-
卸载原始逻辑卷(如果已挂载): (假设
/dev/vg_data/lv_mydata
登录后复制
挂载在)
-
停用原始逻辑卷:
lvchange -an /dev/vg_data/lv_mydata
登录后复制
-
合并快照:
lvconvert --merge /dev/vg_data/lv_mydata_snap
登录后复制
- 这个命令会将快照卷的内容合并回原始逻辑卷。合并完成后,快照逻辑卷会自动被删除。
-
激活并重新挂载:
lvchange -ay /dev/vg_data/lv_mydata
登录后复制
然后 mount /dev/vg_data/lv_mydata /mnt/mydata
登录后复制
-
删除LVM快照:
- 如果只是想删除快照而不恢复原始卷,直接删除快照逻辑卷即可。
-
命令:
lvremove /dev/vg_data/lv_mydata_snap
登录后复制
-
注意: 确保快照卷没有被挂载或正在使用。
虚拟机快照和LVM快照,我该选哪种?它们有何不同?
这真是一个好问题,也是我个人在实际工作中经常思考的。说实话,这两种快照机制虽然都能达到“回滚”的目的,但它们的哲学和适用场景大相径庭。
虚拟机快照:
-
特性: 针对整个虚拟机,包括虚拟磁盘、内存状态、CPU状态、设备配置等。它是一个“全景图”。
-
优点:
-
操作简单: 通过图形界面点几下鼠标就能完成,对系统内部无感知。
-
回滚彻底: 能将整个VM恢复到某个时间点,包括操作系统、所有应用和数据。
-
包含内存: 可以捕获VM运行时状态,恢复后应用程序可以从中断处继续运行(如果选择包含内存)。
-
缺点:
-
性能影响: 随着快照链的增长,VM的I/O性能会下降。
-
存储开销: 每个快照都会占用额外的存储空间,尤其是包含内存的快照。
-
非长期备份: 快照不是备份!它不是设计来长期保存的,快照链过长或时间过久,管理复杂且风险高。
-
不适合高I/O应用: 例如数据库服务器,快照可能会导致性能急剧下降,甚至数据不一致。
-
适用场景:
- 在进行操作系统升级、软件安装、配置更改等高风险操作前,做一个临时回滚点。
- 开发测试环境,需要频繁测试不同状态。
- 短期的状态保存。
LVM快照:
-
特性: 针对逻辑卷(即磁盘分区),采用“写时复制”技术。它只记录原始卷在快照创建后发生的数据块变化。
-
优点:
-
性能影响小: 相较于虚拟机快照,对I/O性能的影响要小得多,因为它只在数据块首次被修改时才进行复制。
-
存储效率高: 只存储变化的数据块,通常比虚拟机快照更节省空间(如果原始卷变化不大)。
-
精细控制: 可以针对特定的数据卷(如数据库数据盘)做快照,不影响其他卷。
-
可用于一致性备份: 在快照卷上执行备份操作,可以获得一个时间点一致性的数据副本,尤其对数据库等应用非常有用。
-
缺点:
-
操作复杂: 需要通过命令行执行,对LVM概念有一定了解。
-
不包含内存状态: 无法捕获系统运行时的内存状态。
-
快照大小限制: 需要预估原始卷的变更量来设置快照卷的大小,如果不足,快照会失效。
-
恢复不可逆: 合并快照会彻底覆盖原始卷数据。
-
适用场景:
- 物理服务器或对性能敏感的虚拟机内部数据卷。
- 需要对特定数据分区进行回滚或创建一致性备份。
- 在进行重要的文件系统操作、数据库升级前。
- 作为一种轻量级、临时的文件系统保护机制。
我的选择建议:
如果你在虚拟机里,且需要一个快速、全方位的系统状态回滚,那么虚拟机快照无疑是最便捷的选择。但记住,用完即删,不要让快照链变得臃肿。如果你在物理机上,或者需要对虚拟机内部某个关键数据盘做更精细、性能影响更小的保护,LVM快照才是你的利器。它虽然操作繁琐些,但提供了更深层次的控制和更好的性能表现。
创建LVM快照时有哪些坑?如何避免数据丢失?
LVM快照这玩意儿,用好了是神器,用不好就是个“坑”。我个人就踩过不少雷,总结下来,最核心的几个点就是空间、性能和操作的严谨性。
1. 快照卷空间不足的坑
-
问题描述: 这是最常见的坑!创建LVM快照时,你需要为快照卷预留一定大小的空间。这个空间不是用来存储原始卷的完整副本,而是用来存储快照创建后,原始卷上被修改的“旧”数据块。如果原始卷的数据变更量超出了快照卷预留的空间,快照就会被标记为“invalid”或“inactive”,甚至可能导致原始卷的I/O操作失败。想象一下,你给一个水杯留了个小碟子接溢出的水,结果水杯里的水哗哗往外倒,碟子满了,水就流了一地。
-
避免方法:
-
合理估算: 根据你预计的原始卷数据变化量来设置快照卷的大小。如果你只是做个小测试,可能10%-20%的原始卷大小就够了;如果要做大版本升级,可能需要30%-50%甚至更多。
-
监控快照使用率: 经常使用
lvs -o +snap_percent
登录后复制
命令来查看快照卷的使用百分比。一旦接近100%,就得赶紧处理,要么扩大快照卷(),要么删除快照。
-
示例:
lvextend -L +5G /dev/vg_data/lv_mydata_snap
登录后复制
(给快照卷增加5GB空间)
2. 性能影响的坑
-
问题描述: 虽然LVM快照是“写时复制”,性能影响比全量复制小,但在高I/O负载的场景下,它仍然会引入额外的开销。每次原始卷上的写操作,都可能触发一次旧数据块到快照卷的复制,这会增加磁盘的I/O负载和延迟。
-
避免方法:
-
避开高峰期: 尽量在系统负载较低的时候创建和操作LVM快照。
-
短期使用: LVM快照最好也是作为短期操作的保护,一旦任务完成,尽快合并或删除。
-
硬件优化: 如果你的系统对I/O性能要求极高,考虑使用SSD作为LVM的物理卷,或者使用更高级的存储解决方案。
3. 误操作导致数据丢失的坑
-
问题描述: LVM命令行的强大在于其灵活性,但这也意味着一旦命令敲错,后果可能非常严重。比如,在恢复快照时选错了卷,或者在快照还在使用时就强制删除了。
-
避免方法:
-
三思而后行: 在执行或等破坏性命令前,务必再三确认目标逻辑卷的名称和路径。
-
先备份: 对于极其重要的数据,即使有LVM快照,在进行重大操作前,也应该先做一次传统的文件系统备份。快照是回滚机制,不是万能的备份方案。
-
熟悉命令: 熟练掌握、、等命令,它们能帮你清晰地了解当前LVM的布局和状态。
-
分步操作: 不要急于一步到位,比如恢复快照,先,再,然后,每一步都确认无误。
CentOS系统崩溃后,如何利用快照快速恢复?
系统崩溃,这真是每个运维人员的噩梦。但如果之前做了快照,那简直是救命稻草。恢复过程因快照类型而异,我来详细说说。
1. 虚拟机快照恢复:最直接的“时光倒流”
如果你的CentOS是跑在VMware、VirtualBox或KVM等虚拟机平台上的,并且你定期有做虚拟机快照,那么恢复起来是最省心的。
-
步骤:
-
关闭虚拟机: 如果虚拟机还在运行,先强制关机。
-
进入虚拟化管理界面: 登录到你的vSphere客户端、VirtualBox管理器或KVM的virt-manager。
-
选择虚拟机和快照: 找到对应的CentOS虚拟机,然后进入其快照管理界面。
-
执行恢复: 选择你想要回滚到的那个健康的快照点,点击“还原”或“恢复”按钮。
-
启动虚拟机: 恢复完成后,启动虚拟机。
-
效果: 你的CentOS系统会完全回到拍摄快照那一刻的状态,包括文件、配置、甚至内存中的数据(如果快照包含了内存)。快照之后的所有系统崩溃、数据损坏等变更都会被抹去。
-
注意事项: 恢复操作会丢失快照之后的所有数据。所以,如果崩溃后有任何你还想抢救出来的数据,请在恢复前尝试通过Live CD或挂载到其他系统的方式进行数据抢救。
2. LVM快照恢复:针对特定分区的“外科手术”
如果你的CentOS系统崩溃,但根目录或某个关键数据分区是LVM管理的,并且你恰好在崩溃前做了LVM快照,那么恢复过程会稍微复杂一些,但同样有效。
-
场景一:非根分区(如, , 等)崩溃或数据损坏
-
进入救援模式或Live CD: 如果系统还能启动,但某个LVM分区有问题,你可以直接操作。如果系统启动不了,你需要通过CentOS安装盘进入“救援模式”(Rescue Mode)或者使用一个Live CD/USB启动,以便访问到你的LVM卷组。
-
识别LVM卷: 在救援模式或Live CD下,运行和命令,确保能识别到你的卷组和逻辑卷。
-
卸载并停用受损逻辑卷: 找到受损的原始逻辑卷(例如
/dev/vg_data/lv_mydata
登录后复制
),如果它被挂载了,先掉。然后lvchange -an /dev/vg_data/lv_mydata
登录后复制
停用它。
-
执行快照合并: 找到对应的快照逻辑卷(例如
/dev/vg_data/lv_mydata_snap
登录后复制
),执行合并命令:lvconvert --merge /dev/vg_data/lv_mydata_snap
登录后复制
这个命令会将快照点的数据合并回原始逻辑卷,同时删除快照卷。
-
激活并挂载: 合并完成后,重新激活原始逻辑卷:
lvchange -ay /dev/vg_data/lv_mydata
登录后复制
。然后,你可以尝试检查文件系统完整性(fsck -y /dev/vg_data/lv_mydata
登录后复制
),最后将其挂载回原目录。
-
重启系统: 如果是救援模式,重启回到正常系统。
-
场景二:根分区()是LVM,且系统无法启动
-
进入救援模式: 这是唯一靠谱的办法。用CentOS安装盘启动,选择“Troubleshooting” -> “Rescue a CentOS Linux system”。
-
挂载根文件系统: 在救援模式下,通常会自动检测并提示你挂载现有Linux安装。如果提示你挂载到,选择“1”或“Continue”。
-
识别LVM卷: 确保你能看到你的LVM卷组和逻辑卷。
-
卸载并停用根逻辑卷: 根分区通常是
/dev/vg_root/lv_root
登录后复制
之类的。在救援模式下,如果它已经被挂载到,你需要umount /mnt/sysimage
登录后复制
。然后lvchange -an /dev/vg_root/lv_root
登录后复制
停用它。
-
执行快照合并: 找到对应的根分区快照,执行合并:
lvconvert --merge /dev/vg_root/lv_root_snap
登录后复制
-
重新激活根逻辑卷:
lvchange -ay /dev/vg_root/lv_root
登录后复制
。
-
检查文件系统:
fsck -y /dev/vg_root/lv_root
登录后复制
。
-
重新挂载根分区:
mount /dev/vg_root/lv_root /mnt/sysimage
登录后复制
。
-
chroot到系统:
chroot /mnt/sysimage
登录后复制
。
-
更新GRUB(如果需要): 有时恢复根分区后,GRUB引导可能需要重新配置。
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/sda # 替换为你的启动盘
登录后复制
- **退出chroot并重启
以上就是CentOS怎么做快照_CentOS系统快照创建与恢复教程的详细内容,更多请关注php中文网其它相关文章!