우연히 /dev/sda
등을 사용하여 zpool을 만들었습니다. 나는 이것이 나쁜 생각이라는 것을 알고 있습니다. 단지 내 설정을 테스트하고 싶습니다. 알고 보니 너무 잘 작동해서 장치 이름을 잊어버리고 zpool을 NAS로 사용하기 시작했는데 여전히 sda
, sdb
및 을 사용하고 있습니다. 내 OS는 에서 실행됩니다. 따라서 내 zpool은 이미 정확히 약 16TB의 일부 데이터로 채워져 있습니다. 그렇다면 이름 대신 ID로 디스크를 사용하도록 기존 풀을 수정하는 것이 가능한지 궁금합니다.sdc
sdd
sde
sdX
내 NAS는 약 1년 동안 계속 실행되어 왔으며 한 번도 재부팅된 적이 없습니다. 지금 재부팅하고 일부 디스크 이름이 변경되면 zpool이 손상됩니까? (예: 나중에 새 디스크를 추가했기 때문에)
zpool export
및 를 사용할 수 있다고 읽었습니다
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%
답변1
디스크 이름이 변경되어도 zpool은 삭제되지 않습니다. 풀은 자동으로 가져오지 않을 가능성이 높지만 데이터가 손상되어서는 안 됩니다. 블록 장치 및 경로에 대해 하드 코딩과 같은 작업을 수행 /dev/sda
하고 런타임 시 온전성 검사 없이 수행하는 스크립트나 메커니즘이 없다면 말이죠 . 그러나 일반적으로 귀하의 데이터는 안전합니다.
가져오기 풀 zpool import -d /dev/disk/by-id <pool-name>
도 드물게 사용할 수 있습니다. 내가 아는 한 재동기화할 필요가 없습니다./etc/zfs/zpool.cache파일은 새 경로 및 디스크 메타데이터로도 업데이트됩니다.