我有一个当前占用 100Gb 的 ZFS 池。我将磁盘大小增加到 150Gb,但似乎无法让 ZFS 使用整个磁盘。
我有一个完全相同的问题,昨天与另一台服务器,并有有一定的混合物zpool set autoexpand=on
,zpool export|import
,zpool online -e
和重启让我来解决它。但是无论我做什么,在当前服务器中都不起作用
有问题的设备是 sdb,您可以从下面的 lsblk 中看到,可用 150Gb 中的分区只有 100Gb。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 150G 0 disk
??sdb1 8:17 0 100G 0 part
??sdb9 8:25 0 8M 0 part
root@http-server-2:/home# parted -l
Model: Google PersistentDisk (scsi)
Disk /dev/sdb: 161GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 107GB 107GB zfs zfs-01a59d03c9294944
9 107GB 107GB 8389kB
Run Code Online (Sandbox Code Playgroud)
更新
更多数据:
zpool列表
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
lxd 13.9G 394K 13.9G - 0% 0% 1.00x ONLINE -
zdata 99.5G 82.7G 16.8G - 49% 83% 1.00x ONLINE -
Run Code Online (Sandbox Code Playgroud)
zpool 状态
# zpool status
pool: lxd
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
lxd ONLINE 0 0 0
/var/lib/lxd/disks/lxd.img ONLINE 0 0 0
errors: No known data errors
pool: zdata
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zdata ONLINE 0 0 0
sdb ONLINE 0 0 0
Run Code Online (Sandbox Code Playgroud)
自动展开
# zpool get autoexpand
NAME PROPERTY VALUE SOURCE
lxd autoexpand off default
zdata autoexpand on local
Run Code Online (Sandbox Code Playgroud)
扩大规模
# zpool get expandsize zdata
NAME PROPERTY VALUE SOURCE
zdata expandsize - -
Run Code Online (Sandbox Code Playgroud)
磁盘
# fdisk -l /dev/sdb
Disk /dev/sdb: 150 GiB, 161061273600 bytes, 314572800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0DA2A1D7-9A44-2E4C-856A-BB9EAEB283E0
Device Start End Sectors Size Type
/dev/sdb1 2048 209696767 209694720 100G Solaris /usr & Apple ZFS
/dev/sdb9 209696768 209713151 16384 8M Solaris reserved 1
Run Code Online (Sandbox Code Playgroud)
我在谷歌云上,这是一个 ubuntu VM 实例,zfs 位于我通过“谷歌云平台 - 计算引擎”附加到服务器的第二个磁盘上。
在这种情况下,扩展 ZFS 分区的正确方法是什么?
最终,我按照下面的@ewwhite 回答让它开始工作。为了完整起见,这里是如何删除额外的分区#9:
parted /dev/sdb rm 9
parted /dev/sdb resizepart 1 100%
Run Code Online (Sandbox Code Playgroud)
然后一堆zpool online -e => export pool => import pool。它奏效了!
尝试命令
sudo partprobe
Run Code Online (Sandbox Code Playgroud)
我相信partprobe也能解决你的问题。https://linux.die.net/man/8/partprobe
您也可以随时在池上启用自动扩展,以避免需要执行 sudo zpool online -e my-pool sdb
zpool get autoexpand my-pool
sudo zpool set autoexpand=on my-pool
Run Code Online (Sandbox Code Playgroud)
可能有用的完整命令
sudo partprobe -s
sudo partprobe
lsblk
zpool list
sudo zpool online -e <POOL NAME> <DEVICE NAME>
# zpool online -e mypoolname sdb
zpool list
Run Code Online (Sandbox Code Playgroud)
ZFS 中有 1/9 分区是正常的。如果 ZFS 认为它正在使用“整个磁盘”,则会创建分区。这是处理非多路径完整磁盘的方式。
这个 8MB 缓冲区空间的原因是允许在物理设置中使用略有不同的磁盘容量。这不是您在使用该zpool online -e
实用程序时需要担心的事情,因为它会在扩展期间重写分区表。
Disk /dev/nvme0n1: 960.2 GB, 960197124096 bytes, 1875385008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: E63B403D-D140-A84B-99EB-56DEDC8B91E4
# Start End Size Type Name
1 2048 1875367935 894.3G Solaris /usr & zfs-aaba011d48bf00f6
9 1875367936 1875384319 8M Solaris reserve
Run Code Online (Sandbox Code Playgroud)
顺序应该是这样的:
echo 1 > /sys/block/sdb/device/rescan
.partprobe
zpool online -e poolname sdb
zpool list
EXPANDSZ
。zpool online -e poolname sdb
如果此顺序不起作用,只需删除分区 #9 并重复上述操作。
归档时间: |
|
查看次数: |
10614 次 |
最近记录: |