15 年前,GoBack出现,它允许 Windows 用户恢复更改并将计算机恢复到以前的状态。它通过在操作系统下面强加一个日志系统来做到这一点——在块级别,而不是文件级别——并让你回滚更改。
Linux 有类似的东西吗?在 VirtualBox 中很容易做到这一点,但我希望这适用于我的主要顶级机器。
让虚拟机成为普通机器有多容易?怎么办呢?
我有一个托管多个虚拟机的 Ubuntu 12.04 服务器。我想使用快照机制备份这些 VM。
这些快照的目的是在外部设备上进行备份。我目前正在尝试在 /var/tmp 中简单地创建备份。
当我打字
sudo virsh snapshot-create-as test-vm --memspec /var/tmp/test-vm-snapshot
Run Code Online (Sandbox Code Playgroud)
我收到消息
错误:内部错误:无法执行 QEMU 命令“事务”:无法打开“/var/lib/libvirt/images/test-vm.img”:权限被拒绝
我试图通过临时授予读/写权限 (chmod og+rw) 来解决这个问题,但随后我收到了相同的消息。
我读到这是由于 AppArmor 造成的,这似乎得到了系统日志的确认。但是,如果我暂时停止 AppArmor,我仍然会收到相同的错误消息,以及 syslog 中的相同条目。
如何创建 VM 到特定文件的内部备份?
我创建了一个示例ruby 脚本文件,用于从系统中删除额外的 LVM 快照。
为了删除 LVM 快照,我们使用lvremove命令。该命令运行良好,我们可以从系统中删除快照。
# sudo lvremove /dev/ops/dbbackup
lvremove -- do you really want to remove "/dev/ops/dbbackup"? [y/n]: y
Run Code Online (Sandbox Code Playgroud)
有时,在删除快照时,我们会收到以下错误。
Unable to deactivate open rootfs_12.10_20140812_00-cow (252:8)
Failed to resume rootfs_12.10_20140812_00.
libdevmapper exiting with 7 device(s) still suspended.
Run Code Online (Sandbox Code Playgroud)
系统被冻结。我们无法发出任何命令或无法对其执行任何操作。
重新启动系统后,一切正常。我们可以执行所有操作,甚至可以删除该快照。
我搜索了它,发现这些线程 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659762和 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 674682
该线程的解决方案是在收到错误后,但我必须避免此类错误。
我有一个问题,有没有更好的方法删除 LVM 快照?
这样我们就可以避免此类错误。
如果有人需要更多信息,请随时问我。
ZFS 中快照使用多少空间?
我创建了一个池并想要创建一个卷。我不知道快照会占用多少空间。是否有任何方法或公式可以计算快照的空间需求?
我发现了一个错误,我向其报告此错误的开发人员希望我将带有该错误的 VM 发送给他们。他们希望我将密码和当前状态(快照)的 VM 发送给他们。我不想给他们我目前拥有的 VM 密码,而是将 VM 的密码更改为其他密码,并且我不希望他们知道我的旧密码是什么.
因此,如果我更改 sudo 密码并向他们提供机器的快照,可以访问机器和新密码,他们有什么办法可以确定旧密码吗?该机器安装了 Ubuntu GNOME 15.10 和 GNOME 3.18 64 位。
我基本上只是想知道它是否仍然存储在某处或某处,以及我是否更安全地使用密码进行全新安装我不介意放弃,或者一旦密码更改,旧的一个无法恢复,因此如果我只是向他们发送一个带有新密码的快照也没有关系。
在我的工作中,我经常尝试不同复杂度的工具并开发使用和集成场景。
我使用 Ubuntu 18.04 LTS。
有时,如果事情变得非常复杂,我并不总是确定我究竟是如何找到解决方案的,并且出于文档和知识共享的目的,我会花费更多时间来更加了解一种整洁干净的方式,减少乱七八糟的事情,截取屏幕截图等等在。
然后我想如果有一个屏幕捕获工具可以在后台每 30 秒无声地拍照,这样我就可以:
例如,我以为我会为快门配置一个 cronjob,但是当我已经在使用它时,出现一个错误“你已经运行了快门实例”。我现在会用scrot试试。
有什么更好的想法吗?
更新:对于 Cron 托管执行,由于此工具无法解决少于一分钟的时间间隔,这里每 30 秒提供一个解决方案(线程中评分较低的答案)。
* * * * * /bin/bash -l -c "/path/to/executable; sleep 30 ; /path/to/executable"
Run Code Online (Sandbox Code Playgroud) 所以我在安装Ubuntu 22.04时选择了ZFS,因为我想尝试一下。我喜欢快照功能,但我发现由于每天都会apt-upgrade积累大量快照,占用大量空间。(并开始抱怨 rpool/bpool 空间不足)
如何以及在哪里可以设置一些合理的自动删除规则?
例如我想自动只保留
apt-upgrade快照似乎特别是当带有大型二进制文件(例如 CUDA)的软件包更新时,大量空间被用于快照......
所以我试图围绕 BTRFS 进行思考,并使用 BTRFS 文件系统设置我的文件服务器。这是我的设置:
/dev/sda1 :BTRFS 文件系统,包含挂载到 / 和 /home 的 @、@home 子卷。
/dev/sdb1 和 /dev/sdc1 :BRTFS 池文件系统,2x3GB 硬盘,
包含我所有的媒体文件。当前挂载到 /mnt/media
我以这种方式设置它们,因为我不希望我的任何媒体文件占用 /dev/sda1(120GB SSD)上的空间;我只想为系统文件保留它。我想将此辅助 BTRFS 文件系统挂载到标记为 @media 的顶级子卷,以便我可以制作快照。但是,每次我尝试使用 subvolid 挂载 /dev/sdb1 或 /dev/sdc1 时,都会收到此错误:
peetipablo@flexo:/$ sudo mount -t btrfs -o subvolid=354 /dev/sdb1 /mnt/media
mount: mount(2) failed: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是子卷列表:
peetipablo@flexo:/$ sudo btrfs subvolume list /
ID 257 gen 142548 top level 5 path @
ID 258 gen 142527 top level 5 path @home
ID 310 gen …Run Code Online (Sandbox Code Playgroud) 我试图让非 root 用户创建 zfs 快照。
我创建了一个权限集,并为适当的用户提供了其中定义的权限:
root@computer:~# zfs allow homepool/myuser
---- Permissions on homepool/myuser -----------------------------------
Permission sets:
@myuser_allowed mount,snapshot
Local+Descendent permissions:
user myuser @myuser_allowed
Run Code Online (Sandbox Code Playgroud)
但是当我尝试创建快照时出现以下错误:
root@computer:~# su - myuser
myuser@computer:~$ /sbin/zfs snapshot homepool/myuser@`date +%F_%R`
Permission denied the ZFS utilities must be run as root.
Run Code Online (Sandbox Code Playgroud)
以 root 身份创建快照按预期工作:
root@computer:~# zfs snapshot homepool/myuser@`date +%F_%R`
root@computer:~# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
homepool/myuser@2016-10-30_19:01 44K - 5,32G -
homepool/myuser@2016-10-30_19:37 0 - 5,32G -
Run Code Online (Sandbox Code Playgroud)
我需要在权限集中添加其他内容吗?或者它是否具有 zfs 二进制文件的特权?
root@computer:~# ls -l `which zfs` …Run Code Online (Sandbox Code Playgroud) 数据会在您拍摄的多个快照中被引用,并且只有当您删除引用所述数据的所有快照以及正在运行的卷中的数据时,数据才会从磁盘中删除,这对于 btrfs 和 ZFS 都适用。
例如,在 btrfs 中,如果我创建~/mifyle.txt并拍摄快照@home,则我的文件不会从磁盘中删除,除非我删除此快照并~/myfile.txt,ZFS 也会发生同样的情况。
但是如果我从@和拍摄快照怎么办@home?将在@和@home快照中或仅在@home~/myfile.txt中引用快照中引用?
ZFS 的行为是否有所不同?如果我创建一个 file rpool/home/myfile.txt,其中rpool是父数据集, 是子数据集,然后为和rpool/home拍摄快照,myfile.txt会在两个数据集快照中引用还是仅在子数据集快照中引用?rpoolrpool/home