She*_*fig 17 linux lvm snapshot
我即将在我的 CentOS 5 服务器上执行实验性升级。如果升级失败,我希望能够撤销对文件系统的更改。这种情况似乎类似于LVM2 读写快照的 LVM HOWTO 的第 3.8 节中的示例- 但该示例缺乏实际的操作方法。
我将如何提交更改,将它们合并回原始分区?
我将如何恢复更改,将文件系统恢复到其原始状态?如果不是彻底重启,我是否应该假设我需要重新启动多个服务?
是否可以仅对分区上的某些目录进行快照,还是分区范围的操作?
小智 21
我刚刚尝试使用 Ubuntu 进行基于快照的升级。是的,我需要重新启动几次。首先将原始 root-lv 重命名为其他名称,以便您可以为快照提供原始名称(因为升级会产生大量更改,并且快照上的更改比原始更改更快):
# lvrename lvm root root-old
# lvcreate -n root -s lvm/root-old -L 10G
Run Code Online (Sandbox Code Playgroud)
The size should be chosen appropriately. 然后重新启动,以便“新”lvm/ubuntu 以 root 身份挂载,您可以执行升级。现在您可以通过以下方式测试新版本甚至更改为旧系统
# lvrename lvm root root-new
# lvrename lvm root-old root
# reboot
Run Code Online (Sandbox Code Playgroud)
如果您想放弃升级,只需运行(从旧系统)
# lvremove lvm/root-new
Run Code Online (Sandbox Code Playgroud)
如果要提交更改,只需运行(从旧系统)
# lvconvert --merge lvm/root-new
Run Code Online (Sandbox Code Playgroud)
或者,从新系统
# lvrename lvm root root-new
# lvconvert --merge lvm/root-new
# lvrename lvm root-old root
Run Code Online (Sandbox Code Playgroud)
然后重新启动。由于卷是打开的,系统将拒绝立即进行合并。因此合并将在引导期间开始并在您已经可以使用系统时继续。
哦,顺便说一句:在系统之间切换时,请记住使用适当的内核。由于 /boot 不是 lvm 的一部分,旧内核和新内核将并排放置。
She*_*fig 12
好的,我想我已经通过重新阅读 HOWTO 3.8 弄清楚了。
快照的工作方式是对原始数据进行块级更改。因此,当写入原始文件时,会发生以下情况:
因此,丢弃快照根本不会影响原始快照 - 因为原始快照已更改,并且快照仅包含这些更改的列表。
回答我自己的问题:
使用 LVM 创建新快照。如果更新可以配置为写入快照挂载点,请使用 R/W 快照。否则,RO 或 R/W 都可以。
然后:
我仍然没有找到专门用于执行此合并的工具 - 而且,鉴于我的场景并不是快照的预期用途,因此可能没有。这听起来像是 rdiff 的工作。
小智 11
如果您运行的是 Linux 2.6.33+ 并使用 LVM 2.0.58+,则 LVM2/设备映射器快照合并功能可用:
lvconvert --merge
Run Code Online (Sandbox Code Playgroud)
看到这个帖子:http : //www.jonnor.com/2010/02/lvm-snapshot-merging-avaliable/
它引用了http://kernelnewbies.org/Linux_2_6_33(查看第 5 节,MD/DM)和 2.0.58 的 LVM 变更日志:ftp: //sources.redhat.com/pub/lvm2/WHATS_NEW
但我还不能告诉你如何正确使用它;-)
| 归档时间: |
|
| 查看次数: |
26416 次 |
| 最近记录: |