我的 Ubuntu 12.04 系统有两个 zpool:rpool(包含根文件系统)和 rdata(包含所有其他数据)。rdata 最初是 2 x 1TB 磁盘镜像。
因为我无法将 rdata 升级到 3TB 磁盘(错误的 ashift),所以我不得不从新的 3TB 磁盘创建一个新的 zpool:最初称为 datapool。然后我对所有数据进行 rsync,导出 rdata,将数据池导入为 rdata,而 Bob 是你的叔叔。然后我关闭电源并移除旧磁盘。然而...
当我重新打开电源时,zpool 状态显示
pool: rdata
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://zfsonlinux.org/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rdata UNAVAIL 0 0 0 insufficient replicas
mirror-0 UNAVAIL 0 0 0 insufficient replicas
scsi-SATA_WDC_WD10EADS-00_WD-WCAU47275172-part1 UNAVAIL 0 0 0
scsi-SATA_WDC_WD10EADS-00_WD-WCAU47283913-part1 UNAVAIL 0 0 0
pool: rpool
state: ONLINE
scan: scrub repaired 0 in 0h23m with 0 errors on Tue Jun 4 11:33:29 2013
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
ata-Maxtor_6Y120L0_Y31J3CLE-part2 ONLINE 0 0 0
errors: No known data errors
Run Code Online (Sandbox Code Playgroud)
如您所见,zpool status 仍然显示旧的 rdata;这是不可用的。
zpool 导入显示
pool: rdata
id: 7033445233439275442
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
rdata ONLINE
mirror-0 ONLINE
scsi-SATA_ST3000DM001-1CH_W1F1EE1G ONLINE
scsi-SATA_ST3000DM001-1CH_W1F25SE2 ONLINE
Run Code Online (Sandbox Code Playgroud)
这是正确的 rdata
问题:如何让 Ubuntu 忘记旧的 zpool?
Jon*_*hon 11
sudo zpool destroy rdata
Run Code Online (Sandbox Code Playgroud)
将破坏旧池(您可能需要 -f 来强制)。
sudo zpool export rdata
Run Code Online (Sandbox Code Playgroud)
将断开池。
sudo zpool import 7033445233439275442
Run Code Online (Sandbox Code Playgroud)
将导入新池。您需要使用 id 号,因为有两个“rdata”池。
当您使用 ZFS 根运行时,剩下要做的就是重建 initramfs 以更新池:
sudo update-initramfs -c -k all
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
重新启动,一切都很好。:)