如果当前池是根池,如何向 ZFS 添加新磁盘并使其可用现有挂载点?

如果当前池是根池,如何向 ZFS 添加新磁盘并使其可用现有挂载点?

我的S11服务器配置如下:

磁盘#1 用于 rpool,它是根池,我想添加磁盘#2 来增加已安装文件夹的可用大小,但我无法将磁盘添加到现有的 rpool,因为它是根池。

有没有办法让新磁盘可用于“/”文件夹?我唯一的选择是创建一个新的 zpool 并将其挂载到新文件夹下吗?

谢谢。

拉米


 root@raamee:~# zpool status
  pool: rpool
 state: ONLINE
 status: The pool is formatted using an older on-disk format. The pool can
         still be used, but some features are unavailable.
 action: Upgrade the pool using 'zpool upgrade'. Once this is done, the
         pool will no longer be accessible on older software versions.
  scan: none requested
 config:

         NAME        STATE     READ WRITE CKSUM
         rpool       ONLINE       0     0     0
           c4t0d0s0  ONLINE       0     0     0

root@raamee:~# zfs list
NAME                       USED  AVAIL  REFER  MOUNTPOINT
rpool                      130G  4.18G  4.59M  /rpool
rpool/ROOT                 101G  4.18G    31K  legacy
rpool/ROOT/S11-GA          152M  4.18G  7.33G  /
rpool/ROOT/S11-GA/var     17.4M  4.18G  5.20G  /var
rpool/VARSHARE             180K  4.18G   180K  /var/share
rpool/dump                8.25G  4.43G  8.00G  -
rpool/guests                31K  4.18G    31K  /guests
rpool/scratch             2.52M  4.18G  2.52M  /scratch
rpool/swap                20.6G  4.81G  20.0G  -

root@raamee:~# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c4t0d0 <FUJITSU-MBB2147RCSUN146G-0505 cyl 17845 alt 2 hd 255 sec 63>
          /pci@7b,0/pci1022,7458@11/pci1000,3060@2/sd@0,0
          /dev/chassis/SYS/HD0/disk
       1. c4t1d0 <FUJITSU-MBB2147RCSUN146G-0505-136.73GB>
          /pci@7b,0/pci1022,7458@11/pci1000,3060@2/sd@1,0
          /dev/chassis/SYS/HD1/disk

答案1

将第二个磁盘作为第一个磁盘的镜像,等待重新镀银,移除第一个磁盘,将属性设置为自动扩展。不要忘记设置启动代码或类似的东西。示例:

zpool attach rpool olddisk newdisk
...wait, check using zpool status rpool
zpool detach rpool olddisk
zpool set autoexpand=on rpool

答案2

如前所述,您不能通过将一个磁盘附加到另一个磁盘 (raid 0) 来“扩展”rpool 大小,但是正如 Chris S 在下面提到的那样,您可以将更大的磁盘附加为镜像,然后,一旦数据同步 (重新切片完成),就分离较小的磁盘。 (哎呀,现在我也看到了 Chris 的回应)

以下是镜像根磁盘的过程... http://constantin.glez.de/blog/2011/03/how-set-zfs-root-pool-mirror-oracle-solaris-11-express

遵循这一点,除非他们这样做:

prtvtoc /dev/rdsk/c7t0d0s0 | fmthard -s - /dev/rdsk/c7t1d0s0

... 您将需要运行 format 并增大切片 0 的大小,可能是整个磁盘

# format /dev/rdsk/c4t1d0s0

(我不会详细介绍交互式格式命令)

# zpool attach rpool c4t0d0s0 c4t1d0s0

# zpool status rpool

等待直到显示“重新镀银完成”(继续检查zpool status rpool

确保您可以启动到第二个磁盘

然后分离较小的 rpool 镜像并重新启动,确保您可以再次启动。

# zpool detach rpool c4t0d0s0

利润!?

参考:http://docs.oracle.com/cd/E19963-01/html/821-1448/gjtuk.html#gjtui


上一个答案:

使用他指定的命令创建池后:

zpool create mypool c4t1d0

创建文件系统,例如:

zfs create mypool/home

...将数据复制到新磁盘...(重新)从 rpool 磁盘移动数据,然后将挂载点设置为适当的位置,例如:

zfs set mountpoint=/export/home mypool/home

当然,这是假设 /export/home 是所有空间被使用的地方。您可能必须在“单用户”模式下执行此操作,或者创建一个不属于主目录的用户来/export/home完成此操作。

顺便提一下,您的 zfs list 输出看起来很奇怪,好像缺少了什么东西。rpool/ROOT显示已使用 101GB,但其下的文件系统仅显示约 12.5GB REF,USED 则少得多。您是否碰巧在 rpool/ROOT 下有其他引导环境,而您已将其从 zfs list 输出中“删减”掉?您是否可以销毁这些 bootenv 或至少销毁 zfs 文件系统以重新获得 rpool/ROOT 中使用的空间?

~汤米

答案3

是的,我相信你唯一的选择是使用第二个磁盘创建一个新池。你对 rpool 唯一能做的事情就是镜像磁盘 - 这不会提供更多可用空间。rpool 不支持条带化,因为它会给启动带来困难。

zpool create mypool c4t1d0

相关内容