zfs 池如何在异地连续/增量备份?
我认识到send/receive通过 ssh 是一种方法,但是它涉及必须手动管理快照。
我发现了一些工具,但大多数不再受支持。
一个看起来很有希望的工具是https://github.com/jimsalterjrs/sanoid但是我担心非广为人知的工具可能弊大于利,因为它可能会损坏/删除数据。
如何执行连续/增量 zfs 备份?
我今天擦洗了我的游泳池,擦洗完成后,我注意到有一个错误损坏了文件。我不在乎这个文件,所以我删除了它。不幸的是,错误仍然存在(现在由十六进制 ID 而不是文件名引用),我不知道如何清除它。
作为参考,这里是我发出的命令和输出,带有注释:
检查状态
kevin@atlas:~$ sudo zpool status -v
pool: zstorage
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 1.81M in 7h19m with 1 errors on Wed Feb 19 10:04:44 2014
config:
NAME STATE READ WRITE CKSUM
zstorage ONLINE 0 0 0
raidz1-0 ONLINE 0 0 …Run Code Online (Sandbox Code Playgroud) 我理解关于更大的驱动器在重建期间遇到 URE 的可能性增加的论点,但是我不确定这的实际影响是什么。这个答案说整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样?当然,来自驱动器上单个扇区的单个 URE 最多只会影响与几个文件相关的数据。阵列不会仍然被重建,只是对一些文件有一些轻微的损坏吗?
(我在这里对 ZFS 的 RAID5 实现特别感兴趣,但对于任何 RAID5 实现,逻辑似乎都相同。)
我在 Ubuntu 12.04 上从他们的 PPA运行 ZoL 0.6.2 。它位于具有 16GB 内存的主机上,旨在使用 KVM/Libvirt 运行一些 VM。一段时间后,ZoL 使用了大量内存,在某些 VM 运行时达到了 98% 的 RAM 使用率。这导致新进程拒绝启动“无法分配内存”。我什至无法再启动我所有的 VM,在使用 ZFS 之前,它们使用了大约 40-50% 的 RAM。
据我了解,无需调整,一旦系统内存不足,ZoL 应该立即释放内存。好吧,它没有。所以我决定将设置arc_max设置为 1GB。
# echo 1073741824 >> /sys/module/zfs/parameters/zfs_arc_max
Run Code Online (Sandbox Code Playgroud)
尽管如此,它不会释放任何内存。
正如您从下面的 ARC 统计数据中看到的,它使用的内存比配置的要多(比较c=7572030912和c_max= 1073741824)。
我在这里做错了什么?
# cat /proc/spl/kstat/zfs/arcstats
4 1 0x01 84 4032 43757119584 392054268420115
name type data
hits 4 28057644
misses 4 13975282
demand_data_hits 4 19632274
demand_data_misses 4 571809
demand_metadata_hits 4 6333604
demand_metadata_misses …Run Code Online (Sandbox Code Playgroud) 我有一个带有许多 2 TB 磁盘的 Linux 服务器,目前都在一个 LVM 中,导致大约 10 TB 的空间。我在 ext4 分区上使用了所有这些空间,目前有大约 8.8 TB 的数据。
问题是,我的磁盘经常出现错误,即使我更换(也就是说,我用 dd 将旧磁盘复制到新磁盘,然后我将新磁盘放入服务器),一旦出现错误,它们,我经常会收到大约 100 MB 的损坏数据。这使得 e2fsck 每次都变得疯狂,并且通常需要一周时间才能让 ext4 文件系统再次处于正常状态。
所以问题是:您建议我将什么用作 LVM 上的文件系统? 或者你会推荐我做什么(我真的不需要 LVM)?
我的文件系统的配置文件:
主要问题是磁盘故障。我可以丢失一些文件,但我不能同时丢失所有文件。
如果我继续使用 ext4,我听说我最好尝试制作更小的文件系统并以某种方式“合并”它们,但我不知道如何。
我听说 btrfs 会很好,但我找不到任何关于它如何在不复制数据(mkfs.btrfs -d single?)时丢失磁盘的一部分(或整个磁盘)的线索。
欢迎任何有关该问题的建议,提前致谢!
我有一个带有 8 个 zpools 的 ZFS 服务器。每个池是 12 个 6TB 磁盘,采用 10+2 RAIDZ 配置。因此,每个池的原始存储空间为 12*6=72 TB,可用空间为 10*6=60 TB。但是,当我使用zfs listvs. using查询它时,我看到不同的结果zpool list,如下所示:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
intp1 631K 48.0T 219K /intp1
intp2 631K 48.0T 219K /intp2
intp3 631K 48.0T 219K /intp3
jbodp4 631K 48.0T 219K /jbodp4
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
intp1 65T 1.02M 65.0T - 0% 0% 1.00x ONLINE -
intp2 65T 1020K 65.0T …Run Code Online (Sandbox Code Playgroud) 我在内核 2.6.32-431.11.2.el6.x86_64 下的 linux 上有一个 ZFS zpool,它有一个 vdev。vdev 是一个 SAN 设备。我扩展了 SAN 的大小,尽管 zpool 已autoexpand设置为on,即使在重新启动机器、导出/导入池并使用 之后zpool online -e,我也无法扩展池。我确信 vdev 更大,因为fdisk显示它已从 215GiB 增加到 250GiB。这是我所做的示例:
[root@timestandstill ~]# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
dfbackup 214G 207G 7.49G 96% 1.00x ONLINE -
[root@timestandstill ~]# zpool import -d /dev/disk/by-id/
pool: dfbackup
id: 12129781223864362535
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
dfbackup ONLINE
virtio-sbs-XLPH83 ONLINE …Run Code Online (Sandbox Code Playgroud)
我已经在 Centos 7 中安装了 ZFS(0.6.5) 并且我还创建了一个 zpool,除了我的数据集在重新启动时消失之外,一切正常。
我一直在尝试借助各种在线资源和博客来调试此问题,但无法获得理想的结果。
重新启动后,当我发出zfs list命令时,我得到"no datasets available",并zpool list给出了"no pools available"
经过大量在线研究,我可以通过使用zpool import -c cachefile手动导入缓存文件来使其工作,但是我仍然必须在重新启动之前运行zpool set cachefile=/etc/zfs/zpool.cache Pool以便在重新启动后稍后导入它。
这是什么systemctl status zfs-import-cache 好像,
zfs-import-cache.service - Import ZFS pools by cache file
Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; static)
Active: inactive (dead)
cat /etc/sysconfig/zfs
# ZoL userland configuration.
# Run `zfs mount -a` during system start?
ZFS_MOUNT='yes'
# Run `zfs unmount -a` during system stop?
ZFS_UNMOUNT='yes'
# Run `zfs …Run Code Online (Sandbox Code Playgroud) 我最近刚刚将批量数据存储池(ZFS On Linux 0.6.2,Debian Wheezy)从单设备 vdev 配置迁移到双向镜像 vdev 配置。
之前的池配置是:
NAME STATE READ WRITE CKSUM
akita ONLINE 0 0 0
ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0
Run Code Online (Sandbox Code Playgroud)
resilver 完成后一切正常(我在 resilver 完成后启动了清理,只是为了让系统再次检查所有内容并确保一切正常):
pool: akita
state: ONLINE
scan: scrub repaired 0 in 6h26m with 0 errors on Sat May 17 06:16:06 2014
config:
NAME STATE READ WRITE CKSUM
akita ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0
ST4000NM0033-Z1Z333ZA ONLINE 0 0 0
errors: No known data errors
Run Code Online (Sandbox Code Playgroud)
然而,在重新启动后,我收到一封电子邮件,通知我游泳池不漂亮而且花花公子。我看了一下,这就是我看到的: …
我对 ZFS 还很陌生,我有一个带有 8 个驱动器的简单镜像存储池设置。运行了几周后,一个驱动器似乎产生了很多错误,所以我更换了它。
又过了几个星期,现在我看到池周围出现了小错误(见zpool status下面的输出)。我应该担心这个吗?如何确定错误是否指示需要更换驱动器?
# zpool status
pool: storage
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: scrub repaired 22.5K in 1h18m with 0 errors on Sun Jul 10 03:18:42 2016
config:
NAME STATE …Run Code Online (Sandbox Code Playgroud) zfsonlinux ×10
zfs ×8
linux ×3
backup ×1
btrfs ×1
centos7 ×1
ext4 ×1
filesystems ×1
hard-drive ×1
lvm ×1
mirror ×1
raid ×1
udev ×1