TrueNAS 寄了,被家里人习惯性关插头电源了

7 天前
 Jimmyisme

imdata 这个 Z1 池本来有 4 个硬盘。现在显示里面没有硬盘了。但是看 disk 页面有三个硬盘还是显示 imdata (Exported)

给这三个硬盘跑了一下 LONG S.M.A.R.T ,全都没有错误通过了。Z1 的话原本 4 块盘现在 3 块盘是不是可以降级导入?

有兄弟知道该怎么办吗?

7097 次点击
所在节点    NAS
44 条回复
gigishy
6 天前
@luojianxhlxt 家人不会弯着腰,戴着眼镜去 UPS 上找 nas 的插头拔下来断电的,一般都是拔掉的是 UPS 的插头。
当然,故意,专门、特地去 UPS 上寻找到并拔掉 nas 的插头,那是没办法了,但这个不是事故,而是故事了。
QAZXCDSWE
6 天前
此时就需要一台大疆 2 度电镇压机柜
Donahue
6 天前
说个跟主题无关的,我自己电脑 ubuntu+ext4, 因为 nvidia 驱动原因有时候休眠显卡没唤醒,硬重启好多次了,几年都没一点问题
EJW
6 天前
我的 ps5 待机状态也被家里人直接拔过电源,还好没啥事儿
goodryb
6 天前
习惯性关插头电源 , 这个习惯一点也不好
ZGeek
6 天前
给一下 AI 的答复,你看下能否解决
```md
您好,感谢您提供详细的命令行测试结果。这些结果非常重要,它们揭示了问题的严重性,并且改变了我们对问题的初步判断。

### 新的问题分析

您运行的所有 `zpool import imdata` 命令都返回了同样的结果:
`cannot import 'imdata': no such pool or dataset`

这个错误的核心意思是:**ZFS 在扫描系统所有的硬盘时,已经找不到任何带有 'imdata' 标签的 ZFS 元数据了。**

这与我们最初根据 UI 截图(显示为 'Exported')的判断完全不同,情况要严重得多。UI 界面显示的信息很可能是系统缓存的旧状态,而您在命令行中得到的实时扫描结果更为准确。

简单来说,系统现在认为,那几块物理硬盘(`sda`, `sdd`, `sdi`, `sdb`)已经不再是 ZFS 存储池的一部分了。

这通常由以下几种灾难性原因之一导致:

1. **硬盘被重新初始化或覆盖**:这几块硬盘可能被意外地(例如,在安装其他系统、或者被其他进程)清除了分区表或头部的元数据。
2. **所有硬盘同时发生元数据损坏**:虽然可能性较小,但如果所有硬盘的关键元数据区域都损坏,ZFS 也将无法识别它们。
3. **严重的硬件或连接问题**:导致操作系统层面完全无法正确读取硬盘的元数据区域。

### 下一步的关键诊断步骤

现在,我们需要执行一个“盲扫”,来扫描系统上的所有磁盘,看看是否能找到**任何**可以导入的池(即使它已经损坏或名称不符)。请不要放弃,执行以下命令:

**1. 盲扫 ZFS 池**

在 TrueNAS 的 Shell 中,只运行 `zpool import`,不带任何参数:

```bash
zpool import
```

这个命令会扫描所有连接到系统的设备,并报告它找到的所有可导入的 ZFS 池。请将这个命令的**全部输出**复制给我。这里有几种可能的结果:

* **最佳情况**:命令找到了一个池,但可能名字是一串数字( Pool ID ),并且状态是 `FAULTED` 或 `DEGRADED`。如果看到任何输出,请立即发给我,这可能还有一线生机。
* **最坏情况**:命令执行后,**没有任何输出**,直接返回到新的命令行提示符。

**2. 列出系统识别的块设备**

为了确认系统是否还能看到这些硬盘,请运行以下命令并将其输出也提供给我:

```bash
lsblk
```

这个命令会列出系统识别的所有磁盘和分区,让我们能确认 `sda`, `sdd`, `sdi`, `sdb` 这些设备是否还在,以及它们的分区情况。

### 总结与展望

* **如果 `zpool import` 没有任何输出**:
这几乎可以确认,组成 `imdata` 池的所有硬盘上的 ZFS 元数据(可以理解为“分区表”和“文件系统信息”)已经丢失或被完全破坏。在这种情况下,数据通过常规 ZFS 命令恢复的可能性微乎其微。恢复数据将需要依赖专业的、底层的磁盘数据恢复服务,这通常非常昂贵且不保证成功。这也凸显了**数据备份**的极端重要性。

* **如果 `zpool import` 有输出**:
请把输出结果告诉我,我们或许可以尝试使用 Pool ID 和更强力的恢复参数来尝试恢复池的只读访问,以便您能将数据复制出来。

请务必先执行上述两个命令 (`zpool import` 和 `lsblk`),我们根据结果再决定下一步行动。
```
Meld
6 天前
@gunner168

UPS 会和 NAS 通信,通知 NAS 准备安全关机,很常见
gunner168
6 天前
@gigishy 嗯,我发帖子的时候脑子秀逗了,发完才想起这是 ups ,但是没法删帖,哈哈
MRG0
6 天前
@ZGeek #26
我有种不好的预感
Jimmyisme
6 天前
@usamimizugi #2
```
root@truenas[~]# zpool list
zpool status
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
Media 12.7T 10.6T 2.09T - - 40% 83% 1.00x ONLINE /mnt
boot-pool 1.86T 15.6G 1.84T - - 1% 0% 1.00x ONLINE -
pool: Media
state: ONLINE
status: Some supported and requested features are not enabled on the pool.
The pool can still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
the pool may no longer be accessible by software that does not support
the features. See zpool-features(7) for details.
scan: scrub repaired 0B in 1 days 05:22:27 with 0 errors on Mon Jun 30 05:22:29 2025
config:

NAME STATE READ WRITE CKSUM
Media ONLINE 0 0 0
ab11eb85-c5bb-43d0-bec5-8a13fd700bc7 ONLINE 0 0 0

errors: No known data errors

pool: boot-pool
state: ONLINE
scan: scrub repaired 0B in 00:00:11 with 0 errors on Tue Jul 1 03:45:13 2025
config:

NAME STATE READ WRITE CKSUM
boot-pool ONLINE 0 0 0
nvme0n1p3 ONLINE 0 0 0

errors: No known data errors
root@truenas[~]#
```

读出来就没有 imdata 了
Jimmyisme
6 天前
@avrillavigne 我外公,人家也不懂这些。我爸妈倒是知道不能断电
Jimmyisme
6 天前
@ZGeek 问过 grok 和 gemini 试了一圈没什么用
Jimmyisme
6 天前
@kur0d3s 每个 txg_number 都试了一下,全部提示:
root@truenas[~]# zpool import -T 16900879 -f -F -m -d /dev/disk/by-partuuid imdata
cannot import 'imdata': no such pool or dataset
Destroy and re-create the pool from
a backup source.
Jimmyisme
6 天前
@ZGeek
root@truenas[~]# zpool import
pool: imdata
id: 5789171728369314650
state: UNAVAIL
status: One or more devices are faulted.
action: The pool cannot be imported due to damaged devices or data.
config:

imdata UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
de0eab4e-4d20-4d2c-9858-62bd172010b8 FAULTED too many errors
61e72697-2487-4c81-8134-4b3c83392fc2 FAULTED too many errors
06c808ba-f0fa-4ec4-80f8-ef7d1583898a ONLINE
3288161652282183282 UNAVAIL

这个好像能看到 imdata ?
1298098
6 天前
这不是已经有两块盘 gg 了,raidz1 两块盘有问题是要完了
ZGeek
6 天前
您好,这个最新的测试结果非常关键,它彻底改变了情况!

好消息是,您的 ZFS 元数据**没有**像我们担心的那样完全丢失。系统现在能看到池的结构了。
坏消息是,这个池处于一个非常危险的状态,有多块硬盘出现了问题。

### 问题诊断 - 解读 `zpool import` 输出

让我们来逐行分析这个输出:

```
pool: imdata
id: 5789171728369314650
state: UNAVAIL
status: One or more devices are faulted.
action: The pool cannot be imported due to damaged devices or data.
config:

imdata UNAVAIL insufficient replicas
raidz1-0 UNAVAIL insufficient replicas
de0eab4e-4d20-4d2c-9858-62bd172010b8 FAULTED too many errors (硬盘 1)
61e72697-2487-4c81-8134-4b3c83392fc2 FAULTED too many errors (硬盘 2)
06c808ba-f0fa-4ec4-80f8-ef7d1583898a ONLINE (硬盘 3)
3288161652282183282 UNAVAIL (硬盘 4)
```

1. **`state: UNAVAIL`**:这是最严重的状态,意味着池目前完全不可用。
2. **`status: insufficient replicas`**:“副本不足”。这是核心原因。您使用的是 `raidz1-0`,这是一个 RAIDZ1 阵列。
* **RAIDZ1**:允许**最多 1 块**硬盘离线或故障。
* **您当前的状态**:
* 有 **2 块**硬盘被标记为 `FAULTED` (故障)。
* 有 **1 块**硬盘被标记为 `UNAVAIL` (不可用,可能意味着系统找不到它或无法读取它)。
* 只有 **1 块**硬盘是 `ONLINE` (在线) 的。
* **结论**:您总共丢失了 3 块硬盘的访问权限,远远超过了 RAIDZ1 所能容忍的 1 块硬盘的上限。因此,ZFS 判定数据完整性已无法保证,拒绝导入该池。

### 修复步骤 - 尝试抢救数据

现在的情况非常危急,我们的首要目标不是“修复”池,而是**尝试以只读模式导入,尽最大可能把数据抢救出来**。请严格按照以下步骤操作,不要轻易尝试有写入风险的操作。

#### 第 1 步:尝试只读强制导入

这个命令会尝试忽略一些错误,以只读模式挂载池。这不会对池造成任何进一步的写入损坏,是目前最安全的数据抢救方法。

```bash
zpool import -f -o readonly=on imdata
```

* `-f`:强制导入,忽略一些非致命错误。
* `-o readonly=on`:以只读模式挂载。

**执行后,请观察结果:**

* **如果成功导入**:恭喜您!您的池现在应该是 `ONLINE` 或 `DEGRADED` 状态,并且是只读的。**请立即开始将所有重要数据复制到其他安全的存储位置(另一个硬盘、另一台电脑等)!** 这是您抢救数据的黄金时间窗口。
* **如果依然失败**:请将报错信息发给我。我们可能需要尝试更“暴力”的方法。

#### 第 2 步:如果第 1 步失败,尝试更强的恢复模式导入

**警告:此步骤有微小风险,但鉴于目前情况,这是必要的尝试。** 它会尝试回滚到池中最后一个一致的事务组( TXG ),可能会丢失最后几秒或几分钟的写入数据,但这通常是让池重新上线的唯一方法。

```bash
zpool import -f -F -o readonly=on imdata
```

* `-F`:尝试恢复到一个更早的、健康的时间点。

**再次观察结果:**

* **如果成功导入**:太好了!立即开始抢救数据,将所有文件复制出来。
* **如果仍然失败**:那么池的损坏程度可能已经非常严重,通过标准命令恢复的可能性已经很低了。

### 后续步骤和建议

1. **识别物理硬盘**:
* `06c808ba-f0fa-4ec4-80f8-ef7d1583898a` 是您唯一健康的硬盘。
* 另外三块盘(两个`FAULTED`,一个`UNAVAIL`)都是有问题的。您需要检查它们的物理连接( SATA 线和电源线),并查看硬盘的 S.M.A.R.T.状态。在 TrueNAS UI 的 **Storage -\> Disks** 界面,您可以尝试找出这些硬盘对应的是哪个 `/dev/sdX` 设备。
2. **做好最坏的打算**:
* 一个 4 盘 RAIDZ1 阵列坏了 3 块盘,数据完全丢失的风险极高。
* 如果上述导入命令全部失败,数据很可能已无法通过 ZFS 命令恢复。
3. **恢复大于修复**:
* 即使您成功以只读模式导入并救出了数据,这个池也已经不再可靠。**不要**尝试向其中写入任何新数据。
* 在救出数据后,您应该销毁( destroy )这个池,检查并更换所有故障硬盘,然后用新硬盘重建一个新的、健康的存储池,最后将您抢救出来的数据复制回去。

**请立即行动,先尝试第 1 步的命令 (`zpool import -f -o readonly=on imdata`),并告诉我结果。**
ZGeek
6 天前
老哥可以加我微信,一起看 yzq62792 @Jimmyisme
1298098
6 天前
试下 zpool status imdata -v 看看输出什么
root@truenas[~]# zpool status pool -v
pool: pool
state: ONLINE
scan: scrub repaired 0B in 06:04:27 with 0 errors on Sun Jun 15 06:04:40 2025
expand: expanded raidz1-0 copied 14.3T in 11:23:00, on Sat May 17 05:34:39 2025
config:

NAME STATE READ WRITE CKSUM
pool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
68e916c3-b66d-466a-91d4-6ba519278b74 ONLINE 0 0 0
3207be18-961e-4d44-86a4-bd654f750ca3 ONLINE 0 0 0
d1e90726-114c-4703-b46c-7fc9fce01830 ONLINE 0 0 0
c4a4b439-b25b-446f-b3bf-965bf72341b1 ONLINE 0 0 0
baf31dab-7bc6-4aa6-9cb6-9881f6cb46d8 ONLINE 0 0 0
271d914a-eb10-439f-ad2e-e42c77bed625 ONLINE 0 0 0
8af1e6ab-c956-488e-92e4-f38625f1e590 ONLINE 0 0 0
8ec4d50f-6a87-4e6b-9ad9-e88dfb258ba2 ONLINE 0 0 0
f5013e86-1b25-48d2-8ea0-92ef730ce1bc ONLINE 0 0 0
05e09024-c462-4a6f-89cb-3a4837f692c8 ONLINE 0 0 0
cache
9d5946a1-0012-498f-8129-c8fd10621bdc ONLINE 0 0 0
386abd0c-e95a-4690-a9e7-ec443daf164d ONLINE 0 0 0

errors: No known data errors
ZGeek
6 天前
试下这两个,看是否能执行成功
zpool import -f -o readonly=on 5789171728369314650
zpool import -f -F -o readonly=on 5789171728369314650
HTravel
6 天前
321 才能确保数据不丢,RAID 确保不了。真喜欢 RAID ,就自己写一个 web 版的,没几行代码。你自己写的,断电只会导致一个正在上传的文件受损,其他文件完全不影响。

说实话,RAID 这么简单的玩意,为什么上古程序员能实现成断电全损。那 RAID 了个啥?明明实践下来稳定性连单个二手盘都拼不过,却有一大堆程序员坚信存数据可靠性更高

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1141940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX