У меня есть пул ZFS, который в настоящее время занимает 100 ГБ. Я увеличил размер диска до 150 ГБ, но мне не удалось заставить ZFS использовать весь диск.
Вчера у меня была такая же проблема с другим сервером, и там определенная смесь zpool set autoexpand=on
, zpool export|import
, zpool online -e
и перезагрузки позволили мне это исправить. Но что бы я ни делал, на текущем сервере это не работает
Устройство с проблемой - sdb, из lsblk ниже видно, что раздел занимает только 100 ГБ из доступных 150 ГБ.
# 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
ОБНОВИТЬ
больше данных:
список 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 -
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
авторасширение
# zpool get autoexpand
NAME PROPERTY VALUE SOURCE
lxd autoexpand off default
zdata autoexpand on local
расширять
# zpool get expandsize zdata
NAME PROPERTY VALUE SOURCE
zdata expandsize - -
fdisk
# 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
Я нахожусь в облаке Google, и это экземпляр виртуальной машины ubuntu, zfs находится на втором диске, который я подключил к серверу через «Google Cloud Platform - Compute Engine».
Как правильно в этом случае расширить раздел ZFS?
В конце концов, я заставил его работать после ответа @ewwhite ниже. Вот как удалить лишний раздел # 9 для полноты картины:
parted /dev/sdb rm 9
parted /dev/sdb resizepart 1 100%
а затем связка zpool online -e => пул экспорта => пул импорта. и это сработало!
Наличие в ZFS раздела 1/9 - это нормально. Если ZFS считает, что использует «весь диск», то создаются разделы. Так следует обращаться с полными дисками, не имеющими нескольких путей.
Причина этого 8-мегабайтного буферного пространства заключается в том, чтобы позволить использовать немного отличающуюся емкость диска при физической установке. Это не то, о чем вам нужно беспокоиться при использовании 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
Порядок должен быть примерно таким:
echo 1 > /sys/block/sdb/device/rescan
.partprobe
zpool online -e poolname sdb
zpool list
EXPANDSZ
.zpool online -e poolname sdb
Если эта последовательность не работает, просто удалите раздел № 9 и повторите описанное выше.