偶然地,我创建了一个 zpool 使用/dev/sda
等等。我知道这是个坏主意。我只是想测试我的设置。事实证明它运行得很好,我忘记了设备名称并开始使用我的 zpool 作为 NAS,仍然使用sda
,sdb
和. 我的操作系统从. 所以我的 zpool 已经充满了一些数据,准确地说大约 16 TB。所以我想知道是否可以修改现有池以通过 id 使用磁盘,而不是通过它们的名称?sdc
sdd
sde
sdX
我的 NAS 已经连续运行了大约 1 年,而且我从未重新启动过。如果我现在重新启动并且某些磁盘名称会更改,我的 zpool 会被破坏吗?(例如,因为我后来添加了一些新磁盘)
我读到有可能使用
zpool export
and
zpool 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文件已更新为新路径和磁盘元数据。