Замена системного диска в зеркале ZFS на Proxmox VE

В этой статье будет описано как происходит замена системного диска, то есть диска на котором находится система и загрузчик, на сервере Proxmox Virtual Environment 8.3, если сервер был установлен на ZFS зеркало.

Введение

Я уже писал статью про установку сервера Proxmox VE на зеркало ZFSздесь, а в этой статье опишу как происходит замена диска, если это потребуется.

После установки Proxmox VE на зеркало ZFS, в web-интерфейсе вы увидите такую схему разметки диска:

Просмотр дисков в web-интерфейсе Proxmox

Оба диска: sda и sdb имеют по 3 раздела:

  • 1 Раздел (BIOS boot). Это раздел mbr для загрузки с BIOS Legacy.
  • 2 Раздел (EFI). Это раздел для загрузки с EFI.
  • 3 Раздел (ZFS). Этот раздел с файловой системой ZFS находится в ZFS пуле (в зеркале).

Давайте откроем терминал, и получим информацию по ZFS пулу, и разметкам дисков. Кстати, эту информацию лучше сохранить на будущее в какую-нибудь заметку по серверу.

Посмотрим статус ZFS пула (zpool):

# zpool status
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:00:07 with 0 errors on Sun Sep  8 00:24:08 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           ONLINE       0     0     0
          mirror-0                                      ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3  ONLINE       0     0     0

Убедимся что раздел scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3 это sda3. И scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3 это sdb3:

# ls -l /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi*-part3
lrwxrwxrwx 1 root root 10 Dec 20 13:41 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Dec 20 13:41 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3 -> ../../sdb3

Посмотрим на разметку обоих дисков:

# fdisk -l /dev/sda
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 65789228-2164-40AB-9580-63F10B8EC4E0

Device       Start      End  Sectors  Size Type
/dev/sda1       34     2047     2014 1007K BIOS boot
/dev/sda2     2048  1050623  1048576  512M EFI System
/dev/sda3  1050624 67108830 66058207 31.5G Solaris /usr & Apple ZFS

# fdisk -l /dev/sdb
Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3825FA51-5AD1-4A0D-A746-59503E8C4842

Device       Start      End  Sectors  Size Type
/dev/sdb1       34     2047     2014 1007K BIOS boot
/dev/sdb2     2048  1050623  1048576  512M EFI System
/dev/sdb3  1050624 67108830 66058207 31.5G Solaris /usr & Apple ZFS

Замена диска

Итак, вынимаем 1 диск, после чего ломается ZFS массив, то есть zpool переходит в состояние DEGRADED:

# zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices has been removed by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using zpool online' or replace the device with
        'zpool replace'.
  scan: scrub repaired 0B in 00:00:07 with 0 errors on Sun Sep  8 00:24:08 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           DEGRADED     0     0     0
          mirror-0                                      DEGRADED     0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3  REMOVED      0     0     0

Затем вставляем новый диск и видим что в системе появился новый пустой диск sdb:

# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   32G  0 disk 
├─sda1   8:1    0 1007K  0 part 
├─sda2   8:2    0  512M  0 part 
└─sda3   8:3    0 31.5G  0 part 
sdb      8:16   0   32G  0 disk 

Копируем таблицу разделов с размеченного диска на новый:

# sfdisk --dump /dev/sda | sfdisk /dev/sdb

# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   32G  0 disk 
├─sda1   8:1    0 1007K  0 part 
├─sda2   8:2    0  512M  0 part 
└─sda3   8:3    0 31.5G  0 part 
sdb      8:16   0   32G  0 disk 
├─sdb1   8:17   0 1007K  0 part 
├─sdb2   8:18   0  512M  0 part 
└─sdb3   8:19   0 31.5G  0 part

Устанавливаем загрузчик на новый диск, для этого используем специальный инструмент от proxmox — proxmox-boot-tool:

# proxmox-boot-tool format /dev/sdb2
# proxmox-boot-tool init /dev/sdb2
# proxmox-boot-tool refresh

Заменяем диск в rpool:

# zpool replace rpool /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part3

Проверяем rpool:

# zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 3.47G in 00:00:13 with 0 errors on Fri Dec 20 14:56:24 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           ONLINE       0     0     0
          mirror-0                                      ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part3  ONLINE       0     0     0

Тестирование

Пробуем перезагрузить сервер с двумя дисками. После перезагрузки ещё раз посмотрим zpool status:

# zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 8.02M in 00:00:00 with 0 errors on Fri Dec 20 15:28:26 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           ONLINE       0     0     0
          mirror-0                                      ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3  ONLINE       0     0     0
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part3  ONLINE       0     0     0

Вынимаем старый диск и ещё раз перезагружаемся с 1 новым диском. Получилось! Вот статус zpool после перезагрузки:

# zpool status
  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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-4J
  scan: resilvered 3.47G in 00:00:13 with 0 errors on Fri Dec 20 14:56:24 2024
config:

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           DEGRADED     0     0     0
          mirror-0                                      DEGRADED     0     0     0
            515864871608353605                          UNAVAIL      0     0     0  was /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3
            scsi-0QEMU_QEMU_HARDDISK_drive-scsi2-part3  ONLINE       0     0     0

Если понравилась статья, подпишись на мой канал в VK.

1 комментарий к “Замена системного диска в зеркале ZFS на Proxmox VE”

Оставьте комментарий