Подскажите, пожалуйста - где косяк?
Поставил Debian Bookworm, 3T раздел с данными сделал на zfs (навскидку дало одной командой превратить обычный пул в рейд.)
#zpool status zer0-safe
pool: zer0-safe
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
zer0-safe ONLINE 0 0 0
sda3 ONLINE 0 0 0
errors: No known data errors
Долго чистил 3T диск для рейда.
Подготовил, сказал:
# zpool attach zer0-safe /dev/sda3 /dev/sdc2
Оно мне ответило:
cannot attach /dev/sdc2 to /dev/sda3: can only attach to mirrors and top-level disks
Выпал в осадок, гуглить... Нагуглил только заклинание: -o ashift=9
Исполнил:
#zpool attach -o ashift=9 zer0-safe /dev/sda3 /dev/sdc2
Отработало.
# zpool status zer0-safe
pool: zer0-safe
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Wed Apr 3 00:13:24 2024
133G scanned at 214M/s, 700K issued at 1.10K/s, 2.51T total
0B resilvered, 0.00% done, no estimated completion time
config:
NAME STATE READ WRITE CKSUM
zer0-safe ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sda3 ONLINE 0 0 0
sdc2 ONLINE 0 0 0 block size: 512B configured, 4096B native
errors: No known data errors
Размер блока 512Б (ashift=9), а родной у диска 4096.
Посчитал, задетачил и:
# zpool attach -o ashift=12 zer0-safe /dev/sda3 /dev/sdc2 -f
cannot attach /dev/sdc2 to /dev/sda3: can only attach to mirrors and top-level disks
Та же ошибка... Почему с ashift=9 всё стартует, а с нативным нет?
Есть какие то мысли?
P.S. Пробовал ashift=11,10 - Не взлетело, с 9 опять взлетело и серебрится...
P.P.S. Обновлю старт топика. Такой вот косяк у zfs. При создании пула - каким то образом выбирается определенный ashift (В зависимости от накопителя) и при добавлении другого накопителя в пул - используется ashift другого накопителя. Если они не совпадают - zfs выдаёт совершенно бредовую диагностику: «cannot attach /dev/sdc2 to /dev/sda3: can only attach to mirrors and top-level disks» не имеющую ни чего общего с сутью проблемы.
Я пока вижу два решения... Или писать меньшими блоками на устройство с большими блоками или писать большими блоками на устройство с меньшими блоками.
Решение пока не ясно. На устройство с меньшими блоками (ashift=9) писать большими блоками? (ashift=12?)
Но это тогда ещё тот геморрой... Создать на устройстве с ashift=12 - новый пул, рсинкнуть туда 3T данных, удалить старый пул (на современном 4T 7200RPM диске с блоком 512Б) и подключить его с размером блока 4к.
Интересно посмотреть с каким ashift создастся новый зеркальный пул из устройств с разными размерами блоков? ashift 9? 12? Но я этого уже не осилю... Переразбивать, рсинкать, перезаливать....