Как наиболее удобно создать резервный образ системы с использованием ZFS?

Добрый день! <br/> <br/> У меня есть сервер виртуальных машин Proxmox версии 7.x, который я планирую обновить до 8.x. Учитывая ограниченное время на обновление, я хотел бы заранее подготовить наиболее быстрый вариант отката. Как правильно и проще всего создать образ системы (пул с данными я планирую отключить во время обновления), чтобы, в случае возникновения проблем с новой версией, можно было восстановить систему с флешки (у меня есть большая быстрая флешка, на которую поместится система)? Я установил систему на ZFS в зеркале, и его конфигурация выглядит следующим образом: <br/> <br/> <pre><code>pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 00:02:14 with 0 errors on Sun Oct 13 00:26:22 2024
config:

        NAME                                                       STATE     READ WRITE CKSUM
        rpool                                                      ONLINE       0     0     0
          mirror-0                                                 ONLINE       0     0     0
            ata-Patriot_Burst_Elite_120GB_PBEIIBB2211183212-part3  ONLINE       0     0     0
            ata-Patriot_Burst_Elite_120GB_PBEIIBB2211183435-part3  ONLINE       0     0     0</code></pre> <br/> <br/> Также я вижу, что структура системы выглядит следующим образом: <br/> <pre><code>root@pvebackup:~# mount | grep rpool
rpool/ROOT/pve-1 on / type zfs (rw,relatime,xattr,noacl)
rpool on /rpool type zfs (rw,relatime,xattr,noacl)
rpool/ROOT on /rpool/ROOT type zfs (rw,relatime,xattr,noacl)
rpool/data on /rpool/data type zfs (rw,relatime,xattr,noacl)
root@pvebackup:~# df
Filesystem             1K-blocks       Used  Available Use% Mounted on
udev                    32885540          0   32885540   0% /dev
tmpfs                    6583808       1864    6581944   1% /run
rpool/ROOT/pve-1       112732672   30482944   82249728  28%</code></pre> 

Какую стратегию отката вы бы посоветовали в данной ситуации?
  • 23 октября 2024 г. 13:03
Ответы на вопрос 2
Для создания резервного образа системы на базе ZFS и обеспечения возможности восстановления после обновления Proxmox, вы можете использовать следующие подходы:

### 1. Создание снимка (snapshot)

ZFS позволяет создать снимок вашей текущей файловой системы, который можно использовать для отката:

```bash
zfs snapshot rpool/ROOT/pve-1@pre-upgrade
```

Это создаст снимок состояния вашей системы на момент выполнения команды. Вы можете создать несколько снимков, если нужно, например:

```bash
zfs snapshot rpool/ROOT/pve-1@before_upgrade
```

### 2. Копирование данных на флешку

Для создания резервного образа на флешке вы можете использовать команду `zfs send` для отправки снимка на файловую систему, которая присутствует на флешке. Сначала убедитесь, что флешка отформатирована и смонтирована, например под `/mnt/usb`.

Выполните следующие команды:

```bash
zfs send rpool/ROOT/pve-1@pre-upgrade | gzip > /mnt/usb/pve-backup.img.gz
```

Это создаст сжатый образ вашего снимка на флешке.

### 3. Восстановление системы

Если во время обновления возникли проблемы, вы можете восстановить систему из созданного образа. Сначала загрузитесь с флешки (убедитесь, что установочный носитель Proxmox поддерживает загрузку в вашем сервере). После загрузки выполните следующие команды:

1. Импортируйте пул:
   ```bash
   zpool import rpool
   ```

2. Восстановите систему с резервного снимка:
   ```bash
   gunzip -c /mnt/usb/pve-backup.img.gz | zfs receive rpool/ROOT/pve-1
   ```

### 4. Убедитесь в успешности операций

После завершения этих шагов всегда полезно проверить целостность данных и провести тестирование системы, чтобы убедиться, что восстановление прошло успешно.

### 5. Дополнительные рекомендации

- Убедитесь, что ваш вышестоящий сервер имеет доступ к серверу Proxmox и выполнены все необходимые права.
- Рассмотрите вариант автоматизации создания снимков и резервных копий с помощью cron или других инструментов.
- Помните, что периодические снимки могут занимать много места, поэтому оптимизируйте использование дискового пространства.

Эта стратегия поможет вам подготовиться к обновлению и обеспечит возможность быстрого восстановления системы в случае возникновения ошибок.
Проще всего на случай отката при неудачном обновлении сделать снапшот: 
zfs snapshot -r rpool@backup

Для резервного копирования всей ФС существуют zfs send / zfs receive . Потребуется другой ZFS-пул для приёма (теоретически можно и в файл, но не могу рекомендовать из-за риска потери данных). Плюс все другие «стандартные» возможности резервного копирования никто не запрещает применять.
Похожие вопросы