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

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

Введение

Я уже писал статью про установку сервера Proxmox VE на зеркало 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
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

errors: No known data errors

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

Убедимся что раздел 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 Aug 19 21:56 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Aug 19 21:56 /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3 -> ../../sdb3

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

Сначала на sda:

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: 0CD42B9A-89D8-4CA7-88FB-9F20592AD2C2

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

Затем на sdb:

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: 6FE1AA45-CBAC-497A-BEF4-23232F0986D7

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 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
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
            9550485036186024522                         UNAVAIL      0     0     0  was /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi1-part3

errors: No known data errors

Затем вставляем новый диск и видим что в системе появился новый пустой диск 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
sr0     11:0    1 1024M  0 rom

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

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
sr0     11:0    1 1024M  0 rom

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

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

Заменяем диск в rpool (вначале укажем неисправный диск, затем новый диск, то есть что и на что заменяем):

zpool replace rpool <id вышедшего из строя диска> <путь к новыому диску>

Пример:

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

Проверяем rpool:

zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 1.74G in 00:00:03 with 0 errors on Wed Aug 20 10:29:39 2025
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

errors: No known data errors

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

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

zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 1.74G in 00:00:03 with 0 errors on Wed Aug 20 10:29:39 2025
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

errors: No known data errors

Вынимаем старый диск и ещё раз перезагружаемся с 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 1.74G in 00:00:03 with 0 errors on Wed Aug 20 10:29:39 2025
config:

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

errors: No known data errors

Таким образом мы проверили загрузку с нового диска. Теперь можем вставлять старый диск и продолжать работать с сервером Proxmox VE.


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

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Отказаться
Политика конфиденциальности