如何从 ZFS 中删除池?

Gar*_*eth 9 zfs

我的 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)

重新启动,一切都很好。:)

  • 乔纳森,你是明星! (2认同)