我在
Linux上有一个ZFS zpool,内核为2.6.32-431.11.2.el6.x86_64,它有一个vdev. vdev是SAN设备.我扩展了SAN的大小,尽管zpool将autoexpand设置为on,但即使重新启动计算机,导出/导入池,并使用zpool online -e,我也无法让池扩展.我确信vdev更大,因为fdisk显示它已从215GiB增加到250 GiB.以下是我所做的一个示例:
[root@timestandstill ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dfbackup 214G 207G 7.49G 96% 1.00x ONLINE - [root@timestandstill ~]# zpool import -d /dev/disk/by-id/ pool: dfbackup id: 12129781223864362535 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: dfbackup ONLINE virtio-sbs-XLPH83 ONLINE [root@timestandstill ~]# zpool import -d /dev/disk/by-id/ dfbackup [root@timestandstill ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dfbackup 214G 207G 7.49G 96% 1.00x ONLINE - venuebackup 248G 244G 3.87G 98% 1.00x ONLINE - [root@timestandstill ~]# zpool get autoexpand dfbackup NAME PROPERTY VALUE SOURCE dfbackup autoexpand on local [root@timestandstill ~]# zpool set autoexpand=off dfbackup [root@timestandstill ~]# zpool set autoexpand=on dfbackup [root@timestandstill ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dfbackup 214G 207G 7.49G 96% 1.00x ONLINE - venuebackup 248G 244G 3.87G 98% 1.00x ONLINE - [root@timestandstill ~]# zpool status -v dfbackup pool: dfbackup state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM dfbackup ONLINE 0 0 0 virtio-sbs-XLPH83 ONLINE 0 0 0 errors: No known data errors [root@timestandstill ~]# fdisk /dev/disk/by-id/virtio-sbs-XLPH83 WARNING: GPT (GUID Partition Table) detected on '/dev/disk/by-id/virtio-sbs-XLPH83'! The util fdisk doesn't support GPT. Use GNU Parted. WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/disk/by-id/virtio-sbs-XLPH83: 268.4 GB,268435456000 bytes 256 heads,63 sectors/track,32507 cylinders Units = cylinders of 16128 * 512 = 8257536 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/disk/by-id/virtio-sbs-XLPH83-part1 1 27957 225443839+ ee GPT Command (m for help): q [root@timestandstill ~]# zpool online -e dfbackup /dev/disk/by-id/virtio-sbs-XLPH83 [root@timestandstill ~]# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT dfbackup 214G 207G 7.49G 96% 1.00x ONLINE - venuebackup 248G 244G 3.87G 98% 1.00x ONLINE - [root@timestandstill ~]# zpool status -v dfbackup pool: dfbackup state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM dfbackup ONLINE 0 0 0 virtio-sbs-XLPH83 ONLINE 0 0 0 errors: No known data errors
我该如何扩展这个zpool?
解决方法
我在Ubuntu 16.04上运行ZFS,经过多次试验和错误后,这就是扩展磁盘和池大小而无需重启的方法.我的系统托管在Profitbricks的云端,并使用libvirt(而不是SCSI)驱动器.
获取池和设备详细信息:
# zpool status -v ... NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 vdb ONLINE 0 0 0 # zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT pool 39.8G 27.1G 12.7G - 49% 68% 1.00x ONLINE -
激活autoexpand:
# zpool set autoexpand=on pool
现在登录Profitbricks控制面板,将磁盘大小从40GB增加到50GB.
通知系统磁盘大小更改并扩展池:
# partprobe Warning: Not all of the space available to /dev/vdb appears to be used,you can fix the GPT to use all of the space (an extra 10485760 blocks) or continue with the current setting? # zpool online -e pool vdb # partprobe # zpool list NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT pool 49.8G 27.1G 21.7G - 40% 55% 1.00x ONLINE -
我不确定为什么,但有时需要运行partprobe和/或zpool online -e pool vdb两次才能使更改生效.