在 ubuntu 中设置 LVM 快照作为备份/还原点。
为什么?
嗯,在我看来,Linux 有如此多的用处,但它最大的缺点是安装应用程序的方式混乱。所有 dll 都放在一个目录中。所有配置文件都放在另一个目录中。二进制文件也放在一堆。是的,Windows 的工作方式大致相同,但考虑到 Linux 上安装的系统/服务器软件的性质,即大多数安装的软件在任何给定时间都只有大约 95% 的成熟度,每月两次搞乱您的系统是很有可能的。
当然,我们可以在每次安装之前和之后备份系统,但这需要一百万年的时间。系统备份(与数据/文件备份相反)要求您关闭计算机并使用某种形式的可启动实时 CD 和备份媒体。而且,如果驱动器已满 15% 以上,即使使用现代硬件,备份也可能需要很长时间。
那么,该如何做呢?
答案1
替代方案——LVM 快照- 您可以在这里阅读有关 LVM 快照的信息: http://www.tutonics.com/2012/12/lvm-guide-part-2-snapshots.html
简而言之 - 快照是一种冻结硬盘上使用的扇区的方法,它告诉系统将任何更改/删除/添加写入硬盘的保留部分(称为快照卷),从而将保留/丢弃驱动器上更改的决定推迟到未来的某个时间,只要快照卷空间可用。因此,一旦您决定回滚更改(或保留更改),只需一行即可完成。
乍一看可能有些复杂,但我可以向你保证,经过第一次努力,使用快照机制所需要的只是两行脚本(提供下载!)
保修 - 以下说明不提供任何保修。使用风险自负!
如何?
如果您没有预先配置的卷组,您可能需要安装一个全新的 Ubuntu。然后,您将不得不花一些精力首次正确配置系统,但从此时起,快照将成为毫不费力。我说的毫不费力是指使用预先配置的脚本,只需一行命令。
- 启动到 ubuntu live cd(尚未安装..仅是 live cd)
- 打开配件 -> 终端
我们将清理硬盘!请在执行此阶段之前备份所有重要内容。
首先,让我们删除现有的分区:
# fdisk /dev/sda Enter 'd' to delete - enter for as many partitions you have > d > <enter> ... Enter 'w' to write down changes > w
创建启动分区,并将驱动器的其余部分创建为其他分区
# fdisk /dev/sda > n To create a new partition. > p For Boot Primary partition. > 1 Press <enter> to accept the default start sector. Enter: > +512M To give the boot partition a size of 512MB > n To create (another) new partition. > p Should be Primary too. > <enter> To accept the default value of 2 (the second partition) > <enter> To accept the default start sector > <enter> To accept the whole disk > t To change the type of the second partition to LVM > 2 To choose the second partition > 8e To set the type to 'LVM Linux' > w To write changes and exit.
要检查更改是否有效,请运行:
# fdisk --list
你应该得到如下结果:
Device Boot Start End Blocks Id System /dev/sda1 2048 524287 261120 83 Linux /dev/sda2 524288 488397167 243936440 8e Linux LVM
删除所有以前的卷组/逻辑卷:
# lvdisplay
将显示系统上可能存在的逻辑卷
# lvremove <existing_logical_volume_name>
如果需要删除任何可能干扰此安装的卷安装。
# vgdisplay
将显示系统上任何现有的卷组
# vgremove <existing_volume_group>
与卷组相同..
创建卷组“vgsnap”
# vgcreate vgsnap /dev/sda2
应导致:
Volume group "vgsnap" successfully created
创建逻辑卷
# lvcreate --extents 100%FREE --name lvroot vgsnap
根逻辑卷,从设备的 100% 开始。
# lvresize --size -30G /dev/mapper/vgsnap-lvroot
这将减少 30G 的交换和快照卷空间。当然,您可以选择较小的交换/快照空间。
> 'y' for the warning shown.
并创建交换卷:
# lvcreate --size 15G --name lvswap vgsnap
注意:我们现在留下15G未使用的驱动器空间,保留用于将来的快照。
安装 Ubuntu
关闭终端并启动安装程序。
选择“使用 LVM...”(您也可以选择启用整个磁盘加密 - 但我没有测试过..)
选择“其他”并按继续。此时,您将发现已定义大量 /dev/mapper/... 卷。其中一些是自动生成的(lvsnap-*)- 您现在可以忽略它们。
选择:/dev/mapper/vgsnap-lvroot 卷。选择“ext4”作为格式,并挂载为“/”
选择:/dev/mapper/vgsnap-lvswap 卷,并选择“交换区域”
如果您要创建加密驱动器(我不知道这是否适用于快照?),您可能需要选择 /dev/sda2 并标记“要加密的卷”。不过没有测试过。
注意:未使用的 15G 可供快照卷使用。
选择:/dev/sda1 分区。将其格式化为“ext2”并将其挂载为“/boot”
以下 - 选择:/dev/sda1 分区作为引导
安装!
使用快照
以下步骤将显示如何在任何给定时间使用快照:
安装快照:
创建快照卷
# lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot
创建挂载目录
# mkdir /mnt/vgsnap-lvsnap
将快照挂载为只读挂载
# mount -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
快照已开启!
此时,您可能会开始弄乱您的系统,安装测试版驱动程序,甚至(不!这不合适)。
从现在开始,您可以随时(只要快照大小提供..)返回到以前的状态,或者,如果对新的外观满意 - 则保留它。
自动快照卷可用磁盘空间监控:使用此处提供的脚本的调整版本: http://blog.rimuhosting.com/2012/02/20/cron-script-for-checking-disk-space/ 我创建监控快照脚本。
如何使用/安装它? - 与上面的链接非常相似:
# cd /etc/cron.hourly # copy /home/<user>/Downloads/monitor_snapshot # chmod +x monitor_snapshot
在第一次运行它之前,你最好编辑其中的值,例如你的电子邮件地址(通知要发送到哪里,等等)。如果配置正确,cron守护进程将每X小时/天运行一次脚本 - 按照你的决定 - 并在快照即将满时通知你。
要测试脚本运行:
# sh /etc/cron.hourly/monitor_snapshot
它将打印快照中可用空间的百分比(数字)。
重要的!完成测试/安装后 - 回滚或保留更改 - 然后卸载快照!
回滚更改:(参见回滚快照脚本,其中包含以下说明(链接位于文档末尾)
# lvconvert --merge /dev/vgsnap/lvsnap
这也会卸载快照,但会丢弃您的所有更改。此外 - 您将看到一条警告,提示还原只会在下次激活时发生,因此:
# reboot
注意:如果您跳过合并,则一旦卸载快照,您的更改就会被提交。
提交更改 - 卸载快照:(参见提交快照脚本,其中包含以下说明 - 链接位于文档末尾)
# umount /mnt/vgsnap-lvsnap Will unmount (commit0 the snapshot # lvremove /dev/mapper/vgsnap-lvsnap # rm -rf /mnt/vgsnap-lvsnap/ # rm /etc/cron.hourly/monitor_snapshot Remove the cron daemon script (that is unused)
重新安装快照:(参见重新挂载脚本,其中包含以下说明 - 链接位于文档末尾)与以前几乎一样:
# lvcreate --size 15G --snapshot --name lvsnap /dev/mapper/vgsnap-lvroot # mkdir /mnt/vgsnap-lvsnap # mount -o ro /dev/vgsnap/lvsnap /mnt/vgsnap-lvsnap
如果你保存了监控快照您可以在主目录中将其恢复:
# cp /home/<user>/monitor_snapshot /etc/cron.hourly/ # chmod +x /etc/cron.hourly/monitor_snapshot
就这些了,朋友们! 以下说明仅适用于戒烟者;)
丢弃快照卷(如果不再需要)
# rmdir /mnt/vgsnap-lvsnap # lvremove /dev/vgsnap/lvsnap
(您可能还想调整根分区或交换分区的大小,以占用为交换分区保留的缺失的 15G)
丢弃卷组 - 只能通过删除卷组的卷来实现,这可能意味着删除操作系统安装。但当然,没有必要删除卷组...
要删除卷组:
# vgremove vgsnap
重要的提示!- 格式化/运行 fdisk 并删除所有分区将不会删除卷或组,因为它们写在驱动器的不同部分...因此,只需使用上面给出的删除说明并在需要时删除卷和组。
答案2
使用以下方式创建 cronjob 来执行备份lvcreate -s -L <size> -n <snapshot_name> <volume_name>
此处的卷名是要拍摄快照的卷的名称。有关更多详细信息,您还可以通过本教程