V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
Jimmyisme
V2EX  ›  NAS

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

  •  
  •   Jimmyisme · 5 天前 · 7024 次点击

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

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

    有兄弟知道该怎么办吗?

    https://i.imgur.com/LoECOr1.png

    44 条回复    2025-07-02 11:55:30 +08:00
    Jimmyisme
        1
    Jimmyisme  
    OP
       5 天前
    ```
    root@truenas[~]# zpool import -o readonly=on -f imdata
    cannot import 'imdata': no such pool or dataset
    Destroy and re-create the pool from
    a backup source.
    root@truenas[~]# zpool import -o readonly=on -f imdata
    root@truenas[~]# zpool import -f -F -m imdata
    cannot import 'imdata': no such pool or dataset
    Destroy and re-create the pool from
    a backup source.
    root@truenas[~]# zdb -e -d imdata
    zdb: can't open 'imdata': No such file or directory
    root@truenas[~]# zpool import -f -F -o readonly=on -R /mnt/imdata_bk imdata
    cannot import 'imdata': no such pool or dataset
    Destroy and re-create the pool from
    a backup source.
    root@truenas[~]# zdb -e -C imdata
    zdb: can't open 'imdata': No such file or directory
    root@truenas[~]# zpool import -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
    ```

    试了一下几种导入,好像都不行。真没招了
    usamimizugi
        2
    usamimizugi  
       5 天前
    执行下
    zpool list
    zpool status
    ooxxcc
        3
    ooxxcc  
       5 天前
    看一下 zpool status -v

    z1 允许少一块盘,少的那块盘你重新插拔试一下,说不定又可用了
    usamimizugi
        4
    usamimizugi  
       5 天前
    看起来是 sda 这个盘挂掉了,看下能不能恢复读盘。不能的话,如果不是组的 raid ,能恢复的概率很小。
    wuruxu
        5
    wuruxu  
       5 天前
    zfs 怎么会这么弱,直接断电就鸡了
    nuk
        6
    nuk  
       5 天前
    zdb 看一下 disk 的 metadata ,会不会已经损毁了,可以先把那块坏掉的硬盘拔掉再试试 import
    qxmqh
        7
    qxmqh  
       5 天前
    这么脆弱? 我自己组的 装的飞牛 os ,我儿子一天给我开关好几遍。都没事。
    R1ta
        8
    R1ta  
       5 天前
    只能要识别,Ufsexplorer 挂一下,看看能不能读取,一般不会有能识别关系都不大吧
    kur0d3s
        9
    kur0d3s  
       5 天前
    仅提供保底的部分数据恢复的方法(建议看下原文)

    原理回滚到指定的事务组,然后把数据备份出来, 然后销毁 zpoo 并重建

    找到 TXG
    zdb -eul -p [/path/to/your/disks] [your_zpool_name]

    挂载只读,用于 rsync 导出数据
    zpool import -T [txg_number] -o readonly=on -d [/path/to/your/disks]


    https://www.reddit.com/r/zfs/comments/s8pmba/cannot_import_zpool_io_error_destroy_and_recreate/
    gigishy
        10
    gigishy  
       5 天前 via iPhone
    实话说,我的 nas ,是一本正经插在 ups 上的。就是为了防止这种情况。
    YsHaNg
        11
    YsHaNg  
       5 天前
    @qxmqh 什么 fs 阵列组建方式?
    xwit
        12
    xwit  
       5 天前
    @qxmqh #7 数据在内存里面
    luojianxhlxt
        13
    luojianxhlxt  
       5 天前
    @gigishy #10 家人拔电源,除非你是 nas 内嵌的 ups ,不然就是没戏
    tcpdump
        14
    tcpdump  
       5 天前
    省电不省钱啊
    avrillavigne
        15
    avrillavigne  
       5 天前
    叫肇事者买硬盘🤡😀
    luodan
        16
    luodan  
       5 天前
    ups+raid 是好兄弟,一个都不能省。
    nkidgm
        17
    nkidgm  
       5 天前
    机器和 ups 一起锁在机柜里,家人拉电闸或者停电都没影响。。。
    gunner168
        18
    gunner168  
       5 天前
    @nkidgm 你这 ups 是核聚变电池吗,拉总闸或停电了能撑多久。。。
    poxiaogg
        19
    poxiaogg  
       5 天前   ❤️ 1
    @gunner168 ups 可以通知 nas 准备关机的,而不是断电突然关机
    gigishy
        20
    gigishy  
       5 天前 via iPhone   ❤️ 2
    @gunner168 可能你没用过 nas➕UPS……
    外面电源切断电时,UPS 会通知 nas 断电了,关机吧。15 分钟足够 nas 安全关闭了。
    gigishy
        21
    gigishy  
       5 天前 via iPhone
    @luojianxhlxt 家人不会弯着腰,戴着眼镜去 UPS 上找 nas 的插头拔下来断电的,一般都是拔掉的是 UPS 的插头。
    当然,故意,专门、特地去 UPS 上寻找到并拔掉 nas 的插头,那是没办法了,但这个不是事故,而是故事了。
    QAZXCDSWE
        22
    QAZXCDSWE  
       5 天前
    此时就需要一台大疆 2 度电镇压机柜
    Donahue
        23
    Donahue  
       5 天前
    说个跟主题无关的,我自己电脑 ubuntu+ext4, 因为 nvidia 驱动原因有时候休眠显卡没唤醒,硬重启好多次了,几年都没一点问题
    EJW
        24
    EJW  
       5 天前
    我的 ps5 待机状态也被家里人直接拔过电源,还好没啥事儿
    goodryb
        25
    goodryb  
       5 天前
    习惯性关插头电源 , 这个习惯一点也不好
    ZGeek
        26
    ZGeek  
       5 天前
    给一下 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
        27
    Meld  
       5 天前
    @gunner168

    UPS 会和 NAS 通信,通知 NAS 准备安全关机,很常见
    gunner168
        28
    gunner168  
       5 天前
    @gigishy 嗯,我发帖子的时候脑子秀逗了,发完才想起这是 ups ,但是没法删帖,哈哈
    MRG0
        29
    MRG0  
       5 天前
    @ZGeek #26
    我有种不好的预感
    Jimmyisme
        30
    Jimmyisme  
    OP
       4 天前
    @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
        31
    Jimmyisme  
    OP
       4 天前
    @avrillavigne 我外公,人家也不懂这些。我爸妈倒是知道不能断电
    Jimmyisme
        32
    Jimmyisme  
    OP
       4 天前
    @ZGeek 问过 grok 和 gemini 试了一圈没什么用
    Jimmyisme
        33
    Jimmyisme  
    OP
       4 天前
    @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
        34
    Jimmyisme  
    OP
       4 天前
    @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
        35
    1298098  
       4 天前
    这不是已经有两块盘 gg 了,raidz1 两块盘有问题是要完了
    ZGeek
        36
    ZGeek  
       4 天前
    您好,这个最新的测试结果非常关键,它彻底改变了情况!

    好消息是,您的 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
        37
    ZGeek  
       4 天前
    老哥可以加我微信,一起看 yzq62792 @Jimmyisme
    1298098
        38
    1298098  
       4 天前
    试下 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
        39
    ZGeek  
       4 天前
    试下这两个,看是否能执行成功
    zpool import -f -o readonly=on 5789171728369314650
    zpool import -f -F -o readonly=on 5789171728369314650
    HTravel
        40
    HTravel  
       4 天前
    321 才能确保数据不丢,RAID 确保不了。真喜欢 RAID ,就自己写一个 web 版的,没几行代码。你自己写的,断电只会导致一个正在上传的文件受损,其他文件完全不影响。

    说实话,RAID 这么简单的玩意,为什么上古程序员能实现成断电全损。那 RAID 了个啥?明明实践下来稳定性连单个二手盘都拼不过,却有一大堆程序员坚信存数据可靠性更高
    z742364692
        41
    z742364692  
       4 天前
    我放冰箱顶上的,不爬梯子拔不了插头
    jinjiang2024
        42
    jinjiang2024  
       4 天前
    嗯 专门搞个房间搞这些,平时锁起来
    Jimmyisme
        43
    Jimmyisme  
    OP
       4 天前
    @HTravel 是的,另外一个二手的 HC550 反而坚挺
    ZGeek
        44
    ZGeek  
       4 天前   ❤️ 1
    @HTravel #40 看需求,比如我,我也用 raidz1 ,但是我的核心诉求是解决位反转问题,数据每周远程备份一次,本地硬盘想起来后插进去备份一次,就这样就足够了,raid 从一开始就不是保证大规模数据损坏而生的,而是解决读写速度和透明条带化(普通 raid ),而 zfs 的 raid 只是为了解决条带化和单块损坏,少量数据的位反转,raid 没错,但是要定位清晰。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2459 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:39 · PVG 12:39 · LAX 21:39 · JFK 00:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.