ZFS快照如何在实践中使用space?
How do ZFS snapshots use space in practice?
- 创建了快照
- 删除了一个大文件
- 过去三个快照
zfs list
中的增量仍为 0(快照不再使用 space)
delta 或 used space 应该不是被删除文件的大小。我知道 ZFS 是 COW,但我很困惑为什么我不能回滚 /usr/home/xxxx
child
# ls /home/xxxxx/testing12345.txt
/home/xxxxx/testing12345.txt
# ls -alh /home/xxxxx/testing12345.txt
-rw-r--r-- 1 root xxxxx 254M Aug 28 00:06 /home/xxxxx/testing12345.txt
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
#
#
#
#
# zfs snapshot -r tank1@28082015
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
tank1/usr/home/xxxxx@28082015 0 - 1.39G -
# rm /home/xxxxx/testing12345.txt
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
tank1/usr/home/xxxxx@28082015 0 - 1.39G -
#
我曾尝试使用各种快照回滚 /usr
、/usr/home
和 /usr/home/xxxx
目录。我已经阅读了 FreeBSD 论坛、手册,而且我还尝试回滚 tank1@[snapshot name]--all
但没有任何效果。
奇怪的是,当我更改 /usr/home/xxxxx
中的文件时,隐藏的 .zfs/snapshots/[snapshot name]/usr/home/xxxxx
目录中的文件也会更改。
使用此命令查看 space 用于 vdev 的所有快照 - 相关 属性 你想要的是 usedsnap:
zfs list -o name,used,avail,refer,creation,usedds,usedsnap,origin,compression,compressratio,refcompressratio,mounted,atime,lused
自从我在 zfs 池上使用压缩后,我又添加了一些属性。
zfs 快照目录是只读的。
你说不能回滚?如果是这种情况,请指定 -r 或 -R,如果您有克隆,则可能指定 -f,示例:
zfs rollback -r poolname/dataset@oldersnaphot
zfs rollback -R poolname/dataset@oldersnaphot
在发布 zfs rollback 之前阅读手册:
-r
Destroy any snapshots and bookmarks more recent than the one specified.
-R
Recursively destroy any more recent snapshots and bookmarks, as well as any clones of those snapshots.
-f
Used with the -R option to force an unmount of any clone file systems that are to be destroyed.
- 创建了快照
- 删除了一个大文件
- 过去三个快照
zfs list
中的增量仍为 0(快照不再使用 space)
delta 或 used space 应该不是被删除文件的大小。我知道 ZFS 是 COW,但我很困惑为什么我不能回滚 /usr/home/xxxx
child
# ls /home/xxxxx/testing12345.txt
/home/xxxxx/testing12345.txt
# ls -alh /home/xxxxx/testing12345.txt
-rw-r--r-- 1 root xxxxx 254M Aug 28 00:06 /home/xxxxx/testing12345.txt
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
#
#
#
#
# zfs snapshot -r tank1@28082015
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
tank1/usr/home/xxxxx@28082015 0 - 1.39G -
# rm /home/xxxxx/testing12345.txt
# zfs list -rt snapshot tank1/usr/home/xxxxx
NAME USED AVAIL REFER MOUNTPOINT
tank1/usr/home/xxxxx@myRecursiveSnapshot 291M - 804M -
tank1/usr/home/xxxxx@devEnv 71K - 1.39G -
tank1/usr/home/xxxxx@xfce 0 - 1.39G -
tank1/usr/home/xxxxx@testhome 0 - 1.39G -
tank1/usr/home/xxxxx@testagain 1K - 1.39G -
tank1/usr/home/xxxxx@27082015 0 - 1.39G -
tank1/usr/home/xxxxx@270820150 0 - 1.39G -
tank1/usr/home/xxxxx@2708201501 0 - 1.39G -
tank1/usr/home/xxxxx@28082015 0 - 1.39G -
#
我曾尝试使用各种快照回滚 /usr
、/usr/home
和 /usr/home/xxxx
目录。我已经阅读了 FreeBSD 论坛、手册,而且我还尝试回滚 tank1@[snapshot name]--all
但没有任何效果。
奇怪的是,当我更改 /usr/home/xxxxx
中的文件时,隐藏的 .zfs/snapshots/[snapshot name]/usr/home/xxxxx
目录中的文件也会更改。
使用此命令查看 space 用于 vdev 的所有快照 - 相关 属性 你想要的是 usedsnap:
zfs list -o name,used,avail,refer,creation,usedds,usedsnap,origin,compression,compressratio,refcompressratio,mounted,atime,lused
自从我在 zfs 池上使用压缩后,我又添加了一些属性。
zfs 快照目录是只读的。
你说不能回滚?如果是这种情况,请指定 -r 或 -R,如果您有克隆,则可能指定 -f,示例:
zfs rollback -r poolname/dataset@oldersnaphot
zfs rollback -R poolname/dataset@oldersnaphot
在发布 zfs rollback 之前阅读手册:
-r Destroy any snapshots and bookmarks more recent than the one specified. -R Recursively destroy any more recent snapshots and bookmarks, as well as any clones of those snapshots. -f Used with the -R option to force an unmount of any clone file systems that are to be destroyed.