
Я пытаюсь навести порядок в системе сервера Ubuntu 12.04 LTS с использованием ZFS. Вот что показывает статус zpool:
pool: TB2
state: UNAVAIL
status: One or more devices could not be used because the label is missing
or invalid. There are insufficient replicas for the pool to continue
functioning.
action: Destroy and re-create the pool from
a backup source.
see: http://zfsonlinux.org/msg/ZFS-8000-5E
scan: none requested
config:
NAME STATE READ WRITE CKSUM
TB2 UNAVAIL 0 0 0 insufficient replicas
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
sdh ONLINE 0 0 0
sdi ONLINE 0 0 0
sdj ONLINE 0 0 0
sds ONLINE 0 0 0
sdt UNAVAIL 0 0 0
pool: TB4
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 2.52T in 16h41m with 0 errors on Tue Feb 6 09:27:46 2018
config:
NAME STATE READ WRITE CKSUM
TB4 DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
ata-Hitachi_HDS724040ALE640_PK1331PAG9MBVS ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK2311PAG8G71M ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK1331PAGH0LHV ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK2331PAG8MV3T ONLINE 0 0 0
spare-4 DEGRADED 0 0 0
ata-Hitachi_HDS724040ALE640_PK2311PAG614MM UNAVAIL 0 0 0
ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK2331PAGH2XRW ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK1331PAG7TGDS ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK1331PAGG3K0V ONLINE 0 0 0
ata-Hitachi_HDS724040ALE640_PK2311PAG59PYM ONLINE 0 0 0
spares
ata-Hitachi_HDS724040ALE640_PK1331PAGH0EAV INUSE currently in use
errors: No known data errors
Я хочу сделать две вещи: 1. Заменить неисправный диск в пуле TB4. Это я знаю, как сделать. 2. Полностью уничтожить и заново создать пул TB2.
Обычно я бы просто выполнил zpool destroy TB2 и начал бы заново. Однако предыдущий администратор использовал имена sd* для TB2 и идентификаторы дисков для TB4. Просматривая /dev/disk/by-id, я обнаружил, что два диска TB4 (...71M и ...EAV) имеют символические ссылки на /dev/sdj и /dev/sds соответственно. Но эти sdj и sds оба указаны как часть пула TB2. Я боюсь, что выполнение zpool destroy TB2 повредит диски в пуле TB4, поскольку в документации говорится, что destroy записывает данные на диски-участники. Есть ли способ заставить ZFS просто забыть о TB2, не выполняя фактическую запись?
Я спросил предыдущего администратора, почему он использовал два разных метода (/dev/sd* и by-id). Он сказал, что назначение букв дисков определенным жестким дискам, похоже, не повторялось от загрузки к загрузке, поэтому, когда он создал TB4, он использовал by-id. Я думаю, что эта путаница TB2 и TB4 является результатом этого.
Сейчас я думаю сделать следующее:
- выключи машину
- извлеките все диски.
- Перезагрузить.
- zpool уничтожить -f TB2
- выключите и переустановите диски TB4
- переформатируйте диски TB2 на другой машине
- Переустановите диски TB2 и создайте новый пул, используя идентификаторы дисков (не sd*).
Кажется ли это разумным? Есть ли более простой способ?
Спасибо всем, кто может помочь мне выбраться из этой ситуации.
Майкл
решение1
Ваш предложенный метод, кажется, будет работать. Однако, он также неоправданно сложен. Вместо этого я бы предложил:
zpool export TB2
. Это приведет к отключению всех ресурсов, связанных с пулом, и ваша система не будет пытаться перемонтировать их (и, возможно, записывать в них), если выzpool import
сначала не запустите .- Ремонт TB4. (Или вы можете сделать это позже.)
zpool create <new pool> ...
(ссылка на диски по идентификатору, чтобы избежать повторного наложения). Возможно, вам придется принудительно создать, так как может оказаться, что эти диски использовались неимпортированным пулом.
Если вы хотите провести пробный запуск процедуры, я думаю, вы можете создать несколько томов на TB4 ( zfs create -V 5gb TB4/volume1
) и сделать из них два «вложенных пула» ( zpool create testpool1 ...
) с перекрывающимся томом. Все остальное должно работать так же, как указано выше.