据我所知,LVM 可以拍摄卷的快照。还有许多支持快照的文件系统(ZFS、Btrfs、reiserfs 等)。
但是,我一直不明白 LVM 快照和文件系统快照之间的区别。如果可以使用 LVM 拍摄快照,为什么有人要花时间在文件系统中实现它?
编辑:在某些情况下,他们中的任何一个是首选吗?为什么?
我在 Debian 上有一个大型(> 100TB)ZFS (FUSE) 池,它丢失了两个驱动器。由于驱动器出现故障,我用备件替换它们,直到我可以安排停机并物理更换坏磁盘。
当我关闭系统并更换驱动器时,池开始按预期重新同步,但是当它完成大约 80% 时(这通常需要大约 100 小时),它再次重新启动。
我不确定一次更换两个驱动器是否会造成竞争条件,或者由于池的大小,重新同步器花费的时间太长以至于其他系统进程正在中断它并导致它重新启动,但是在“zpool status”的结果或指向问题的系统日志。
从那以后,我修改了我如何布置这些池以提高重新同步性能,但对让此系统重新投入生产的任何线索或建议表示赞赏。
zpool 状态输出(自上次检查以来,这些错误是新的):
pool: pod
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: http://www.sun.com/msg/ZFS-8000-8A
scrub: resilver in progress for 85h47m, 62.41% done, 51h40m to go
config:
NAME STATE READ WRITE CKSUM
pod ONLINE 0 0 2.79K
raidz1-0 ONLINE 0 0 …Run Code Online (Sandbox Code Playgroud) zfs 池如何在异地连续/增量备份?
我认识到send/receive通过 ssh 是一种方法,但是它涉及必须手动管理快照。
我发现了一些工具,但大多数不再受支持。
一个看起来很有希望的工具是https://github.com/jimsalterjrs/sanoid但是我担心非广为人知的工具可能弊大于利,因为它可能会损坏/删除数据。
如何执行连续/增量 zfs 备份?
我正在尝试使用 ext4 文件系统测试需要压缩存储的项目,因为我使用的应用程序依赖于 ext4 功能。
是否有任何用于在 ext4 上进行透明压缩的生产/稳定解决方案?
我尝试过的:
启用压缩的ZFS 卷上的Ext4。这实际上产生了不利影响。我尝试创建一个启用 lz4 压缩的 ZFS 卷,并在 /dev/zvol/... 上创建一个 ext4 文件系统,但 zfs 卷显示实际使用量翻了一番,压缩似乎没有任何效果。
# du -hs /mnt/test
**1.1T** /mnt/test
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool 15.2T 2.70G 290K /pool
pool/test 15.2T 13.1T **2.14T** -
Run Code Online (Sandbox Code Playgroud)
ZFS 创建命令
zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink …Run Code Online (Sandbox Code Playgroud) 我们将有一台机器在工作,在最佳性能下,每小时应该能够推送50(“写磁头”)x 75GB的数据。这是约 1100MB/s 写入速度的峰值性能。为了从机器上得到它,它需要两条 10GBi 线。我的问题是什么样的服务器+技术可以处理/存储这样的数据流?
目前对于数据存储,我们使用 ZFS,尽管写入速度从来都不是问题。(我们甚至还没有接近这些速度)ZFS(Linux 上的 zfs)会是一个选择吗?我们还需要存储大量数据,“IT 指南”建议总共存储 50-75 TB 之间的数据。因此,除非我们想提供我们的第一个孩子,否则它可能不能全部是 SSD。
基于优秀回复的一些补充:
我计划在 Linux 中设置一组 3x 2TB 7200rpm 驱动器作为 LUKS 加密的 Z-RAID 池(用于 NAS 解决方案)。
我对手头问题的理解是,实现这一目标的唯一方法是在luksFormat每个物理设备上,然后从未锁定的 LUKS 容器中组装一个 zpool。
我对此有以下担忧:
它不会显着阻碍写入性能吗?在这种设置中,冗余数据被多次加密,因为 LUKS 不“知道”Z-RAID。在 LUKS-on-mdadm 解决方案中,数据被加密一次,只是多次写入磁盘。我的 CPU 支持 Intel AES-NI。
在设备映射器 LUKS 容器而不是物理设备上运行时,ZFS 会意识到磁盘故障吗?重复数据删除和其他 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) 我正在考虑构建一个更大的 ZFS 池(150TB+),我想听听人们关于由于硬件故障导致数据丢失情况的经验,特别是区分仅丢失一些数据的实例与整个文件系统(如果在 ZFS 中甚至有这样的区别)。
例如:假设 vdev 由于外部驱动器机箱断电或控制器卡故障等故障而丢失。从我读到的池应该进入故障模式,但如果返回 vdev 池应该恢复?或不?或者如果 vdev 部分损坏,是否会丢失整个池、某些文件等?
如果 ZIL 设备出现故障会怎样?或者只是几个 ZIL 之一?
真正感谢以深厚的技术知识为后盾的所有轶事或假设场景!
谢谢!
更新:
由于我们是一家小型企业(大约 9 人),因此我们以低廉的价格执行此操作,但我们生成了大量成像数据。
数据主要是小文件,据我统计,每 TB 大约有 50 万个文件。
数据很重要,但不是超级关键。我们计划使用 ZFS 池来镜像 48TB 的“实时”数据阵列(使用了 3 年左右),并将其余存储用于“归档”数据。
该池将使用 NFS 共享。
机架应该在建筑物备用发电机线上,我们有两个 APC UPS,能够在满载时为机架供电 5 分钟左右。
ZFS L2ARC (Brendan Gregg) (2008-07-22) 和ZFS and the Hybrid Storage Concept (Anatol Studler's Blog) (2008-11-11) 包括下图:

我是否应该将 SSD 层的垂直白线解释为偏好使用单独的SSD?
就个人而言,在家里,我不太可能在任何可用的计算机上使用 L2ARC 或 ZIL。(我的日常电脑是 MacBookPro5,2 8 GB 内存和混合希捷 ST750LX003-1AC154。没有计划用 SSD 替换光驱。)
其他地方:在工作中会有一些套件的重新利用,但我没有日期或完整的细节。(混合使用 Xserve RAID x2 ......此时我不认为将它们提供给 ZFS,但我保持开放的心态。)
我对L2ARC 和 ZIL 的SSD 最佳实践的好奇心始于 ZEVO 领域中与性能相关的讨论——特别是下面提到的主题,其中用户在单个磁盘上同时拥有 L2ARC 和 ZIL。
L2ARC 截图 (Brendan Gregg) (2009-01-30)
SLOG 截图 (Brendan Gregg) (2009-06-26)
[zfs-discuss] ZFS 根备份/“灾难”恢复和移动根池(2011-01-10) 建议不要在单个磁盘上混合使用三种东西(根池、ZIL 和 L2ARC) – …
我理解关于更大的驱动器在重建期间遇到 URE 的可能性增加的论点,但是我不确定这的实际影响是什么。这个答案说整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样?当然,来自驱动器上单个扇区的单个 URE 最多只会影响与几个文件相关的数据。阵列不会仍然被重建,只是对一些文件有一些轻微的损坏吗?
(我在这里对 ZFS 的 RAID5 实现特别感兴趣,但对于任何 RAID5 实现,逻辑似乎都相同。)
zfs ×10
zfsonlinux ×3
backup ×2
filesystems ×2
linux ×2
storage ×2
btrfs ×1
cache ×1
compression ×1
debian ×1
encryption ×1
ext4 ×1
luks ×1
lvm ×1
performance ×1
raid ×1
snapshot ×1
ssd ×1
write ×1