ZFS 按 id 替換磁碟
偶然地,我創建了一個 zpool 使用
/dev/sda
等等。我知道這是個壞主意。我只是想測試我的設置。事實證明它執行得很好,我忘記了設備名稱並開始使用我的 zpool 作為 NAS,仍然使用sda
,sdb
和. 我的作業系統從. 所以我的 zpool 已經充滿了一些數據,準確地說大約 16 TB。所以我想知道是否可以修改現有池以通過 id 使用磁碟,而不是通過它們的名稱?sdc``sdd``sde``sd*X*
我的 NAS 已經連續執行了大約 1 年,而且我從未重新啟動過。如果我現在重新啟動並且某些磁碟名稱會更改,我的 zpool 會被破壞嗎?(例如,因為我後來添加了一些新磁碟)
我讀到有可能使用
zpool export
andzpool import -d /dev/disk/by-id
。這會導致一些重新同步開始,或者當我導出和導入時究竟會發生什麼?由於它有很多數據,如果我不必複製我的數據,我會更喜歡。這實在是太多了,需要幾天的時間。我的 zpool 在 raidz2 配置下執行,作業系統是 Debian。這就是我得到的
zfs list all
:root@pve:~# zfs get all NAME PROPERTY VALUE SOURCE tank type filesystem - tank creation Sat May 12 15:22 2018 - tank used 1.00T - tank available 4.26T - tank referenced 981G - tank compressratio 1.02x - tank mounted no - tank quota none default tank reservation none default tank recordsize 128K default tank mountpoint /tank default tank sharenfs off default tank checksum on default tank compression lz4 local tank atime off local tank devices on default tank exec on default tank setuid on default tank readonly off default tank zoned off default tank snapdir hidden default tank aclinherit restricted default tank createtxg 1 - tank canmount on default tank xattr on default tank copies 1 default tank version 5 - tank utf8only off - tank normalization none - tank casesensitivity sensitive - tank vscan off default tank nbmand off default tank sharesmb off default tank refquota none default tank refreservation none default tank guid 18018951160716445859 - tank primarycache all default tank secondarycache all default tank usedbysnapshots 100M - tank usedbydataset 981G - tank usedbychildren 47.5G - tank usedbyrefreservation 0B - tank logbias latency default tank dedup off default tank mlslabel none default tank sync standard default tank dnodesize legacy default tank refcompressratio 1.02x - tank written 0 - tank logicalused 1004G - tank logicalreferenced 997G - tank volmode default default tank filesystem_limit none default tank snapshot_limit none default tank filesystem_count none default tank snapshot_count none default tank snapdev hidden default tank acltype off default tank context none default tank fscontext none default tank defcontext none default tank rootcontext none default tank relatime off default tank redundant_metadata all default tank overlay off default tank@zfs-auto-snap_monthly-2019-05-13-1847 type snapshot - tank@zfs-auto-snap_monthly-2019-05-13-1847 creation Mon May 13 20:47 2019 - tank@zfs-auto-snap_monthly-2019-05-13-1847 used 0B - tank@zfs-auto-snap_monthly-2019-05-13-1847 referenced 953G - tank@zfs-auto-snap_monthly-2019-05-13-1847 compressratio 1.01x - tank@zfs-auto-snap_monthly-2019-05-13-1847 devices on default tank@zfs-auto-snap_monthly-2019-05-13-1847 exec on default tank@zfs-auto-snap_monthly-2019-05-13-1847 setuid on default tank@zfs-auto-snap_monthly-2019-05-13-1847 createtxg 6244379 - tank@zfs-auto-snap_monthly-2019-05-13-1847 xattr on default tank@zfs-auto-snap_monthly-2019-05-13-1847 version 5 -
我嘗試使用 掛載它
zfs mount -a
,但由於目錄/tank
不為空而失敗 - 其他 ZFS 數據集在那裡……root@pve:~# zpool list -v NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT tank 5.44T 987G 4.47T - 1% 17% 1.00x ONLINE - ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M1KZNLPE 1.81T 326G 1.49T - 1% 17% ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M1YV1ADT 1.81T 329G 1.49T - 1% 17% ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M2CE10DJ 1.81T 332G 1.49T - 1% 17%
如果磁碟名稱更改,zpool 不會被破壞。池很可能不會自動導入,但不應破壞數據。除非有一個腳本或機制在塊設備和路徑上做事
/dev/sda
是硬編碼的,並且事情在沒有健全性檢查的情況下執行。但通常您的數據是安全的。導入池
zpool import -d /dev/disk/by-id <pool-name>
也可以保存使用。不需要重新同步,據我所知,/etc/zfs/zpool.cache文件已更新為新路徑和磁碟元數據。