我有一个 OpenSolaris 服务器,其 zpoolbackupz由四个 SCSI 驱动器组成:
-bash-3.2# zpool status backupz
pool: backupz
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
backupz ONLINE 0 0 0
raidz1 ONLINE 0 0 0
c7t0d0 ONLINE 0 0 0
c7t1d0 ONLINE 0 0 0
c7t2d0 ONLINE 0 0 0
c7t3d0 ONLINE 0 0 0
errors: No known data errors
Run Code Online (Sandbox Code Playgroud)
我想添加第五个驱动器...但zpool add backupz raidz c7t4d0不起作用...
-bash-3.2# zpool add backupz raidz c7t4d0
invalid vdev specification: raidz requires at least …Run Code Online (Sandbox Code Playgroud) 我有一台 NAS 服务器,带有 4 个 2TB WD RE4-GP 驱动器,采用 RAID10 配置(4TB 可用)。我的空间不足(剩余可用空间小于 1TB)。我有 0 美元可用于购买更大/更多驱动器/机箱。
我喜欢我读到的有关 ZFS 数据完整性特性的内容,这些特性本身就足以让我从现有的 XFS(软件)RAID10 切换。然后我读到了 ZFS 对 RAID5 的卓越实现,所以我想我什至可以使用 RAIDZ-1 在讨价还价的情况下获得多达 2TB 的可用空间。
不过,我一直在读更多和更 帖子说差不多,只是从不使用RAIDZ-1。只有 RAIDZ-2+ 足够可靠来处理“现实世界”驱动器故障。当然,就我而言,RAIDZ-2 没有任何意义。在单个池 (RAID10) 中使用两个镜像 vdev 会好得多。
我是不是很想将 RAIDZ-1 用于 4 个 2TB 驱动器?
我应该只使用一个包含两个镜像 vdev(基本上是 RAID10)的池,并希望压缩能给我足够的额外空间吗?
无论哪种方式,我都计划使用压缩。我只有 8GB 的 RAM(最大),因此无法进行重复数据删除。
这将在 FreeNAS 服务器上(即将替换当前的 Ubuntu 操作系统)以避免 ZFS-on-Linux 的稳定性问题。
显然,如果整个驱动器都死了,那么单个磁盘上的 RAID-Z 将无济于事。但是其他类型的错误呢?
根据我的经验,我有时会遇到无法读取的文件。在 Mac OS X 上,系统会挂起一段时间,然后返回错误。我将文件移到某处,并假设该文件有坏扇区或坏块,甚至可能是整个坏道。
我可以追溯到软盘时代,手动管理磁盘故障只是一项常见活动。当然你会尽快更换坏软盘,但有时你不能立即这样做,所以做法是找到坏区,将其分配给一个文件,然后永远不要删除该文件。
第一个问题是硬盘如何失效?我上面的假设有效吗?坏块坏了但整个驱动器仍然大部分可用是真的吗?如果是这种情况,那么 RAID-Z 似乎可以使用其他块(区域)的奇偶校验来修复磁盘的坏块或坏区域。
用例用于备份。如果我每周将数据推送到 8 TB 驱动器一次,将其视为 7 TB 数据驱动器加上 1 TB 奇偶校验是否有意义,希望额外的奇偶校验将帮助我从位腐烂、坏扇区或其他本地化驱动器故障?
如果该理论在技术上没有缺陷,那么可以配置 ZFS 来执行此操作吗?
编辑:我在发布这个问题之前看到了另一个问题。拆分为单独的分区,其中每个分区都组合在一起是一种选择。但在概念上,有可能让 N 个分区的块映射相互交织,这样一个条带,而逻辑上跨越 N 个分区的物理上会非常靠近。这是我的问题的要点“ZFS 可以配置为这样做吗?” 即只是 ZFS ...不是带有分区技巧的 ZFS。
我需要更换 FreeNAS 上 zpool 中的坏磁盘。
zpool status 显示
pool: raid-5x3
state: ONLINE
scrub: scrub completed after 15h52m with 0 errors on Sun Mar 30 13:52:46 2014
config:
NAME STATE READ WRITE CKSUM
raid-5x3 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
ada5p2 ONLINE 0 0 0
gptid/a767b8ef-1c95-11e2-af4c-f46d049aaeca ONLINE 0 0 0
ada8p2 ONLINE 0 0 0
ada10p2 ONLINE 0 0 0
ada7p2 ONLINE 0 0 0
errors: No known data errors
pool: raid2
state: DEGRADED
status: One or more …Run Code Online (Sandbox Code Playgroud) 我正在构建一个 Solaris NAS 系统,目前我们有两个驱动器,并计划在以后再添加两个(2TB 企业级 HDD 有点贵!)。
记住我想在未来扩展,设置这些驱动器的最佳配置是什么?
我正在考虑镜像驱动器,然后转换为 raidz 一些如何?
最多只能有 4 个驱动器,其中后两个将在以后购买。
有任何想法吗?
我首先创建了 16 个正好 10 亿字节的空文件:
for i in {1..16}; do dd if=/dev/zero of=/mnt/temp/block$i bs=1000000 count=1000 &> /dev/null; done
Run Code Online (Sandbox Code Playgroud)
然后我在文件上创建越来越大的 RAIDZ2 卷,强制 ashift=12 来模拟 4K 扇区驱动器,例如
zpool create tank raidz2 -o ashift=12 /mnt/temp/block1 /mnt/temp/block2...
Run Code Online (Sandbox Code Playgroud)
然后比较使用df -B1看实际尺寸。
Filesystem 1B-blocks
tank 12787777536
Run Code Online (Sandbox Code Playgroud)
我的结果:
+-------+-------------+-------------+------------+------------+
| disks | expected | actual | overhead | efficiency |
+-------+-------------+-------------+------------+------------+
| 3 | 1000000000 | 951975936 | 48024064 | 95.2 |
| 4 | 2000000000 | 1883766784 | 116233216 | 94.2 |
| 5 | …Run Code Online (Sandbox Code Playgroud) 我有一个 FreeBSD 文件服务器,在 RAID-Z 中有一个 10TB 阵列(因此 8TB 可用 2TB 冗余)。我试图弄清楚如果其中一个驱动器出现故障,如何让系统通知我,最好通过电子邮件通知我。这是因为机器在没有屏幕的情况下运行,并且很少直接登录。
我想要一个通知,否则我们唯一的提示是当第二个驱动器运行并带走数据时出现问题。
我在 raidz 配置中有一个带有 4 个 2TB USB 磁盘的 zpool:
[root@chef /mnt/Chef]# zpool status farcryz1
pool: farcryz1
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
farcryz1 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
Run Code Online (Sandbox Code Playgroud)
为了测试池,我通过从其中一个驱动器拉出 USB 电缆而不将其脱机来模拟驱动器故障:
[root@chef /mnt/Chef]# zpool status farcryz1
pool: farcryz1
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An …Run Code Online (Sandbox Code Playgroud) 这是一个关于 ZFS 和 RAID-Z 的理论问题。为清楚起见,我将使用三磁盘单奇偶校验阵列作为示例,但问题可以扩展到任意数量的磁盘和任意奇偶校验。
假设池中有磁盘 A、B 和 C,并且它是干净的。
假设现在我们物理添加磁盘 D 的目的是替换磁盘 C,并且磁盘 C 仍然正常运行并且只是出于预防性维护而被替换。一些管理员可能只是猛拉 C 并安装 D,这会更有条理,因为设备不需要更改 ID - 但是这确实会使阵列暂时降级,因此对于此示例,假设我们在不脱机或删除 C 的情况下安装 D。Solaris 文档表明我们可以在不先将磁盘脱机的情况下替换磁盘,使用如下命令:
zpool replace pool C D
Run Code Online (Sandbox Code Playgroud)
这应该会导致重新同步到 D。让我们说重新同步沿着“光标”“向下”进行。(我不知道内部实现中使用的实际术语。)
现在假设在重新同步过程中,磁盘 A 出现故障。理论上,这应该是可恢复的,因为上面的游标 B 和 D 包含足够的奇偶校验,而下面的游标 B 和 C 包含足够的奇偶校验。但是,这是否实际上是可恢复的取决于 ZFS 中我不知道的内部设计决策(并且手册在某些方面没有说明)。
如果 ZFS 继续向光标下方的 C 发送写入,那么我们就没事了。但是,如果 ZFS 在内部将 C 视为它已经消失,仅根据 A 和 B 之间的奇偶校验重新同步 D,并且只在光标下方写入 A 和 B,那么我们就干杯了。
一些实验可以回答这个问题,但我希望这里的某个人可能已经知道 ZFS 处理这种情况的方式。提前感谢您的任何见解!
在了解 RAIDZ 的优势的过程中,我遇到了write hole的概念。
正如本页所解释的,写空洞是指在写入过程中断电时阵列磁盘之间出现的不一致。该页面还解释了它会影响 RAID-5/6(如果在写入数据后但在计算奇偶校验之前断电)和 RAID-1(数据写入一个磁盘而不是其他磁盘) ,而且它是一个只能要么再同步/擦洗,或其中一个磁盘的重建期间(灾难性)期间被检测到的隐蔽的问题...然而,大多数 的 所述 其他 来源谈论它,因为它仅受影响的奇偶基于 RAID 级别。
据我了解,我认为这也可能是 RAID-1 的一个问题,因为从包含该漏洞的磁盘读取将返回垃圾,所以...是否每个RAID 级别都有问题?它是否依赖于实现?它只影响软件 RAID,还是硬件控制器?(补充:mdadm这方面的票价如何?)