Freebsd

如何恢復我的 ZFS 池,它突然離線並報告它“最後被另一個系統使用”?

  • November 4, 2019

**tl;博士:**我在具有 16GB ECC 記憶體的伺服器上執行帶有 ZFS 的 FreeBSD 11.2 NAS 伺服器。我發現我的主池消失了。ZFS 可以看到該池,但報告錯誤ZFS-8000-EY和它cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019,但是該池從未被另一個系統使用並且nasserver是目前主機。恐怕我的游泳池已損壞。我應該怎麼做才能嘗試恢復它?我有備份,但它們已經過時了,因為我必須手動進行。我還沒有嘗試跑步zpool import -f tank,因為我想小心避免讓事情變得更糟。


完整問題:

我正在執行帶有 ZFS 的 FreeBSD 11.2 NAS 伺服器。我從假期回來尋找伺服器,但無法訪問 NAS 卷。當我 ssh 進入盒子時,我發現我的人池tank不見了:

root@nasserver:/home/root # zpool status   pool: zroot state: ONLINE status: Some supported 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 0 in 0h0m with 0 errors on Sat Mar 23 03:01:44 2019 config:


       NAME                                  STATE     READ WRITE CKSUM
       zroot                                 ONLINE       0     0     0
         mirror-0                            ONLINE       0     0     0
           diskid/DISK-XXXXXXXXXXXXXXXXXXX1  ONLINE       0     0     0
           diskid/DISK-XXXXXXXXXXXXXXXXXXX2  ONLINE       0     0     0


errors: No known data errors

驅動器似乎可用,我嘗試導入它們,但 ZFS 報告它cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019。這很奇怪,因為我從未在另一個系統上使用過這些磁碟,並且報告的主機名是它們所連接的機器的主機名:

root@nasserver:/home/root # zpool import
   pool: tank
     id: 12345678901234567901
  state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
        the '-f' flag.
   see: http://illumos.org/msg/ZFS-8000-EY
config:


        tank                    ONLINE
          raidz1-0              ONLINE
            gpt/tank-1          ONLINE
            gpt/tank-2          ONLINE
            gpt/tank-3          ONLINE
            gpt/tank-4          ONLINE


root@nasserver:/home/root # zpool import tank
cannot import 'tank': pool may be in use from other system, it was last accessed by nasserver (hostid: 0xaaaaaaaa) on Sat Apr 13 04:16:22 2019
use '-f' to import anyway

恐怕我的游泳池可能已損壞。我有備份,但它們有些過時了。我應該怎麼做才能恢復我的游泳池?

zpool import -f tank,就像它在錯誤對話框中所說的那樣。

這是一個相當少見的錯誤,但我以前見過它發生過(在過去十年中,可能在 100 多台機器上發生過一次或兩次);如果主機名和其他一些魔法似乎zfs發生了變化,則不會自動導入池(可能過度)注意這可能不是池所屬的機器。使用-f來覆蓋這種謹慎,並且噗,這是你的游泳池(它應該在下一次循環中自動導入)。

這可能有可能發生在崩潰或斷電導致系統停機而在停機過程中沒有正確導出池之後。

引用自:https://serverfault.com/questions/964075