首先让我们从我正在运行的内容开始。这是运行 Ubuntu 16.10 的家庭媒体服务器。我有一个 6 TB 镜像驱动器池,大约已满一半。我大约一个月前构建了该系统,并且运行良好。它使用 SSD 作为启动驱动器,并使用上述池作为存储。我已经能够用这个泳池做我需要做的一切,一切看起来都很棒。
大约一个月前,当我构建系统时,这两个驱动器都是新的,我对其中一个的额外振动有点好奇。没什么不好,但供应商说他会免费更换它,所以我打算运行一次擦洗并将其拉出来发送进去,在等待期间以降级状态运行。上面没有未备份的数据,所以我并不是很担心,但显然,与杀死池并从备份恢复相比,这样做会更容易。
我现在真正想做的就是运行擦洗并安全地将一个驱动器与镜像分离。我跑
zpool scrub tank
然后立即运行
zpool status
我可以看到磨砂过程正在发生。我可以每隔几秒钟运行一次更新,并看到它更新状态就好了。它运行大约 30 秒,然后状态不再显示它正在运行。另外,除了上次清理在 0 小时 0 分钟内完成之外,我从未见过任何其他状态。对我来说,这意味着清理工作尚未完成,因为清理工作不应该至少花费几个小时来处理两个半 TB 的信息。
我缺少什么?
添加请求的信息:
pool: Tank
state: ONLINE
scan: scrub repaired 0 in 0h0m with 0 errors on Sun Feb 5 00:31:42 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
我现在再次尝试擦洗,以确保问题仍然存在。这是我开始后大约 20 秒的状态...
pool: Tank
state: ONLINE
scan: scrub in progress since Fri Feb 10 14:25:12 2017
62.5M scanned out of 2.97T at 1.08M/s, (scan is slow, no estimated time)
0 repaired, 0.00% done
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
大约一分钟后又出现了……
pool: Tank
state: ONLINE
scan: scrub repaired 0 in 0h1m with 0 errors on Fri Feb 10 14:27:01 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
errors: No known data errors
于 2017 年 2 月 16 日编辑添加信息
我已经没有时间把“吵闹”的驱动器送回来了,所以我把它拉了出来。我什么也没做,只是拔掉插头(当系统启动时)。目前一切都继续正常运行,尽管如预期处于降级状态。我想我会继续在这里记录我的经历,因为我已经开始这样做了。听起来好像没有其他人遇到这个问题。我似乎在网上找不到其他人有同样的情况。幸运的我。我们将看看当我拿到替换驱动器和重新镀银后会发生什么。谁知道呢......也许数据之神会怜悯我,只需更换驱动器就会迫使问题自行解决。 :/以下是断开驱动器连接后的输出。
pool: Tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h1m with 0 errors on Sun Feb 12 00:24:38 2017
config:
NAME STATE READ WRITE CKSUM
Tank DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
sdb2 ONLINE 0 0 0
sdc2 UNAVAIL 0 0 0
errors: No known data errors
于 2017 年 3 月 29 日编辑添加信息
root@NAS:~# zpool status
pool: Tank
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: resilvered 525M in 0h3m with 0 errors on Wed Mar 29 14:28:46 2017
config:
NAME STATE READ WRITE CKSUM
Tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc ONLINE 0 0 732
errors: No known data errors
也许是问题的另一个线索?看看sdc的分区...
root@NAS:/dev# parted --list
Model: ATA Samsung SSD 850 (scsi)
Disk /dev/sda: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp
2 538MB 233GB 232GB ext4
3 233GB 250GB 17.1GB linux-swap(v1)
Warning: Not all of the space available to /dev/sdb appears to be used, you can
fix the GPT to use all of the space (an extra 7 blocks) or continue with the
current setting?
Fix/Ignore? i
Model: ATA HGST HUH728060AL (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2097kB 2150MB 2147MB
2 2150MB 6001GB 5999GB zfs
Model: ATA HGST HUH728060AL (scsi)
Disk /dev/sdc: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 6001GB 6001GB zfs zfs-802af6a53a6d8383
9 6001GB 6001GB 8389kB
于 2017 年 4 月 13 日编辑添加信息
是的,几个月来我一直在尝试解决这个问题:/
首先,导出/导入驱动器盘符发生更改后,请注意,sdb 变为 sdc,sdc 变为 sdd。
我想我发现了问题,我想获得有关如何修复它的建议。当我运行“sudo fdisk -l”时,终于发现了这个问题。下面是相关的剪辑...
Disk /dev/sdc: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 7127FE7D-E061-11E6-BD1F-3497F600DDAF
Device Start End Sectors Size Type
/dev/sdc1 4096 4198399 4194304 2G FreeBSD swap
/dev/sdc2 4198400 11721043967 11716845568 5.5T FreeBSD ZFS
...
Disk /dev/sdd: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: E799A1D5-F9B7-C843-AB62-AADC9B0A2180
Device Start End Sectors Size Type
/dev/sdd1 2048 11721027583 11721025536 5.5T Solaris /usr & Apple ZFS
/dev/sdd9 11721027584 11721043967 16384 8M Solaris reserved 1
请注意:镜像最初是在 FreeNAS (FreeBSD) 中创建的。 sdc在驱动器的开头有一个2G交换。 sdd 是在 Ubuntu 中创建的,并且出于某种原因在驱动器末尾分配了 8M 交换空间。
现在,由于担心问题是驱动器损坏,我将 sdd 脱机并在其上运行 badblocks。这会擦除所有信息。好消息是驱动器很好,没有坏块。这也会将分区重置为空。
我有两个选择。 1.) 尝试手动将 sdd 的分区与工作驱动器 (sdc) 匹配。尽管我认为 zfs 应该通过执行 zpool 替换来自动执行此操作,所以也许这只是浪费时间。 2.) 我备份了数据,因此我可以擦除两个驱动器并从头开始,创建一个新镜像,并让它成为本机 Ubuntu 池。
也许这是想得太多了,但我认为我冒着更大的破坏和恢复的风险。我必须销毁仅备份在非镜像磁盘上的良好数据,然后将其重新同步回新创建的池。仅供参考,我使用 rsync 创建备份,它位于同一台电脑上。我必须将 3 个驱动器条带化在一起,没有冗余才能容纳其上的所有数据。我还担心像这样移动数据而无法清理它可能会给我带来一些损坏,而我永远不会知道。
有人有什么建议吗?谢谢!