Приветствую всех в данном блоге. Я сегодня расскажу, как заменить диск в ZFS!
На данный момент имеется сервер, на котором установлен PROXMOX 4 на 4 диска, два из которых SSD. Дак вот решил заменить SSD — диски на обычные винты.
Приступим!
Вот так выглядит ZFS poll после установки Proxmox:
root@PVE-S60:~# zpool status rpool
pool: rpool
state: ONLINE
scan: resilvered 137G in 1h18m with 0 errors on Sun Jun 26 23:04:21 2016
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda2 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
sdd2 ONLINE 0 0 0
errors: No known data errors
Давайте попробуем заменить один из дисков. Выключаем сервер (если у вас нет возможности горячей замены дисков, а так все ниже описанное можно проделать, не останавливая сервер – если есть контроллер и hotswap)
В моем случае я выключаю сервак
root@PVE-S60:~# poweroff
Вытаскиваем тот диск который нужно заменить.
Вставляю новый диск в тот же слот и включаю сервер.
Смотрим!
root@PVE-S60:~# zpool status rpool
pool: rpool
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 137G in 1h18m with 0 errors on Sun Jun 26 23:04:21 2016
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
1944940033163241752 UNAVAIL 0 0 0 was /dev/sda2
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
sdd2 ONLINE 0 0 0
errors: No known data errors
Наш диск потерялся.
Если вернуть извлеченный диск на место — он прекрасно «встает» обратно в зеркало:
root@PVE-S60:~# zpool status rpool
pool: rpool
state: ONLINE
scan: resilvered 137G in 1h18m with 0 errors on Sun Jun 26 23:04:21 2016
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda2 ONLINE 0 0 3
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
sdd2 ONLINE 0 0 0
errors: No known data errors
Но мы вместо старого диска вставили новый.
Условно неисправный диск у нас /dev/sda и учитывая одинаковую емкость и геометрию копируем таблицу разделов 1:1 с исправного диска /dev/sdb
root@pve1:~# sgdisk -R /dev/sda /dev/sdb
The operation has completed successfully.
Генерируем уникальные UUID для /dev/sda
root@pve1:~# sgdisk -G /dev/sda
The operation has completed successfully.
Ставим загрузчик на замененный диск и обновляем GRUB:
root@pve1:~# grub-install --recheck /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
###############################################
# или такую инфу выдаст #
# grub-install: error: unknown filesystem. #
# продолжаем дальше #
###############################################
root@pve1:~# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.2.3-2-pve
Found initrd image: /boot/initrd.img-4.2.3-2-pve
Found linux image: /boot/vmlinuz-4.2.2-1-pve
Found initrd image: /boot/initrd.img-4.2.2-1-pve
Found memtest86+ image: /ROOT/pve-1@/boot/memtest86+.bin
Found memtest86+ multiboot image: /ROOT/pve-1@/boot/memtest86+_multiboot.bin
done
root@pve1:~# update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.2.3-2-pve
Осталось только заменить сбойный диск в массиве на свежеустановленный.
root@pve1:~# zpool replace rpool /dev/sda2
Make sure to wait until resilver is done before rebooting.
Если на диске уже есть какая нибуть файловая система то надо применить команду
Используйте ключ -f, чтобы удалить хранилище с существующими файловыми файловыми системами.:
root@pve1:~# zpool replace -f rpool /dev/sda2
Make sure to wait until resilver is done before rebooting.
Нас предупредили о необходимости дождаться окончания синхронизации прежде чем перезагружаться. Проверим статус массива:
root@PVE-S60:~# zpool status -v
pool: rpool
state: DEGRADED
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 Mon Jun 27 01:41:21 2016
36.6G scanned out of 661G at 87.0M/s, 2h2m to go
6.16G resilvered, 5.54% done
config:
NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
replacing-0 UNAVAIL 0 0 0
1944940033163241752 UNAVAIL 0 0 0 was /dev/sda2/old
sda2 ONLINE 0 0 0 (resilvering)
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
sdd2 ONLINE 0 0 0
errors: No known data errors
Ждем окончания синхронизации массива.
root@PVE-S60:~# zpool status -v
pool: rpool
state: ONLINE
scan: resilvered 137G in 1h34m with 0 errors on Mon Jun 27 03:15:38 2016
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sda2 ONLINE 0 0 0
sdb2 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
sdd2 ONLINE 0 0 0
errors: No known data errors
Вот и все мы заменили диск в массиве. Наш rpool полностью синхронизирован и готов к труду и обороне…