如果强制ZFS分离没有有效副本的热备份,会发生什么情况?

我有一个由6个RAIDZ构成的ZFS池。 其中一个RAIDZ会降级,原因是单个RAIDZ中的两个磁盘相距足够近,导致ZFS在第二个磁盘发生故障之前无法从第一个故障中恢复。 以下是重启后不久“zpool status”的输出:

pool: pod2 state: DEGRADED 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 0h6m, 0.05% done, 237h17m to go config: NAME STATE READ WRITE CKSUM pod2 DEGRADED 0 0 29.3K raidz1-0 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F165XG ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1660X ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1678R ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F1689F ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16AW9 ONLINE 0 0 0 raidz1-1 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C6E ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16C9F ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16FCD ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F16JDQ ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17M6V ONLINE 0 0 0 raidz1-2 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MSZ ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17MXE ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XKB ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17XMW ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F17ZHY ONLINE 0 0 0 raidz1-3 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BM4 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18BRF ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_W1F18XLP ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09880 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F098BE ONLINE 0 0 0 raidz1-4 DEGRADED 0 0 58.7K disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09B0M ONLINE 0 0 0 spare-1 DEGRADED 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09BEN UNAVAIL 0 0 0 cannot open disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01 ONLINE 0 0 0 837K resilvered disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0D6LC ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CWD1 ONLINE 0 0 0 spare-4 DEGRADED 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F09C8G UNAVAIL 0 0 0 cannot open disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE ONLINE 0 0 0 830K resilvered raidz1-5 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-1CH_Z1F2KNQP ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BML0 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPV4 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BPZP ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ78 ONLINE 0 0 0 raidz1-6 ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQ9G ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQDF ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BQFQ ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0CW1A ONLINE 0 0 0 disk/by-id/scsi-SATA_ST3000DM001-9YN_Z1F0BV7M ONLINE 0 0 0 spares disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49M01 INUSE currently in use disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F4A7ZE INUSE currently in use disk/by-id/scsi-SATA_ST3000DM001-1CH_W1F49MB1 AVAIL disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001SS2 AVAIL disk/by-id/scsi-SATA_ST3000DM001-1ER_Z5001R0F AVAIL errors: 37062187 data errors, use '-v' for a list 

当第一块磁盘出现故障时,我用热备件replace它,并开始重新启动。 在恢复程序完成之前,第二个磁盘发生故障,所以我用另一个热备份replace了第二个磁盘。 从那时起,它将开始重新适应,大约完成了50%,然后开始吞噬内存,直到它吃光了所有的东西,并导致操作系统崩溃。

在服务器上升级RAM并不是一个简单的select,但我不清楚这样做是否能够保证解决scheme。 我知道在这个阶段会有数据丢失,但是如果我可以牺牲这个RAIDZ的内容来保存池的其余部分,这是一个完全可以接受的结果。 我正在将此服务器的内容备份到另一台服务器,但内存消耗问题每隔48小时强制重启(或崩溃),这会中断我的rsync备份,并且重新启动rsync需要时间(可以一旦找出它停止的地方,恢复,但这需要很长的时间)。

我认为ZFS试图处理两个备用更换操作是内存消耗问题的根源,所以我想删除一个热备件,以便ZFS可以一次处理一个。 但是,当我尝试分离其中一个备件时,我得到“无法分离/ dev / disk / by-id / scsi-SATA_ST3000DM001-1CH_W1F49M01:没有有效的副本”。 也许我可以使用-f选项来强制执行操作,但是我不清楚这个结果会是什么,所以我想看看有没有人有任何意见,然后继续前进。

如果我可以让系统进入一个稳定的状态,在这个状态下它可以保持足够的运行时间,以备完成备份,我打算把它拿下来进行检修,但是目前的情况下,它还是陷入了一个恢复循环。

现在你可以分离UNAVAIL磁盘,ZFS不再使用这些了。

RAIDZ-1设置中有两个故障磁盘。 这很可能是您正在查看某些数据丢失,应该准备好从备份中恢复。

作为一个侧面说明,RAIDZ已经certificate在我使用OpenSolaris / Solaris11的过程中非常脆弱。 我build议不要在任何一种生产工作中使用它。

另外,为了强化ewwhite的说法,FUSE不是你最好的select。 我想借此机会迁移到更稳定的地方(可能是FreeBSD 10)。