我有一个根文件系统的快照,我想用它来启动 - 让机器进入几天前的状态,运行一些测试,然后回到我现在所在的位置。
我尝试编辑 fstab 并将快照设置为以 root 身份启动,但似乎什么也没发生 - 快照已安装,但文件系统的状态没有改变,我仍处于当前状态。
编辑:除了root之外没有其他分区。快照是RHEL 6.2,当前状态是RHEL 6.3(因此有一个新内核)。我按照这个编辑了 intrd博客文章现在看来 LVM 不会在启动时激活。 Dracut 写道,所有这些都因继承和冻结而处于非活动状态。
答案1
我找到了一个很好且简单的解决方案(其他解决方案不知何故对我不起作用,我不确定为什么)。将 lv_root 重命名为 lv_root_old 之类的名称,然后将快照重命名为 lv_root。
$ lvrename /dev/VolGroup/lv_root /dev/VolGroup/lv_root_old
$ lvrename /dev/VolGroup/snapshot /dev/VolGroup/lv_root
然后添加rd_LVM_LV=VolGroup/lv_root_old
到 中的内核行中grub.conf
,以便它被激活(显然,如果源在启动时处于非活动状态,则快照不起作用,因为它只包含相对于源的更改)。这就是我的 grub 条目现在的样子:
root (hd0,0)
kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto quiet rd_LVM_LV=VolGroup/lv_root rd_LVM_LV=VolGroup/lv_root_old KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM elevator=deadline processor.max_cstate=1
initrd /initramfs-2.6.32-220.el6.x86_64.img
警告 - 如果您在拍摄快照之前升级了内核,请不要忘记引导拍摄快照时使用的内核。
答案2
尽管您已经创建了快照,但为了清楚起见,我将完成这些步骤。
创建快照。
# lvcreate --size 100M --snapshot --name lv_root_snap /dev/vg_linux/lv_root
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv_home vg_linux -wi-ao 11.72g
lv_opt vg_linux -wi-ao 4.00g
lv_root vg_linux owi-ao 2.00g
lv_root_snap vg_linux swi-a- 100.00m lv_root 2.52
如果需要,安装卡扣并验证。
# mount /dev/vg_linux/lv_root_snap /mnt
添加一个条目/etc/grub.conf
,告诉内核使用快照根文件系统。 (/etc/grub.conf
是 的符号链接/boot/grub/grub.conf
,因此不受 的快照影响/
)
title RHEL 6.2 Snap
root (hd0,0)
kernel /vmlinuz-2.6.32-220.13.1.el6.x86_64 ro root=/dev/mapper/vg_linux-lv_root_snap ....
....
或者,如果您不想创建grub
条目,则可以在引导期间通过进入grub
菜单并编辑条目root=
以指向快照来指定根文件系统。这将是暂时的,并且在系统再次启动时不会持续存在。
答案3
/etc/fstab
不用于定位根文件系统。在 grub 菜单中,按e
编辑条目并更改 root= kernel 命令行参数以指向快照。这一次将从快照启动。