LINUX.ORG.RU
решено ФорумAdmin

Proxmox backup server хранилище забилось на 100%

 ,


1

4

Добрый день.Есть datastore на pbs ver. 3.1-2, размером в 14 тб zfs, и вот случилось так, что забился под завязку.

NAME               USED  AVAIL  REFER  MOUNTPOINT
rpool             14.4T     0B    96K  /rpool
rpool/ROOT        14.4T     0B    96K  /rpool/ROOT
rpool/ROOT/pbs-1  14.4T     0B  14.4T  /

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

unable to start garbage collection job on datastore repository - mkstemp "/var/log/proxmox-backup/tasks/42/UPID:pbs:0000041E:00000C42:00000005:6836BCAC:garbage_collection:repository:root@pam:.tmp_XXXXXX" failed: ENOSPC: No space left on device (400)

Какие могут быть варианты освобождения места в zfs? Хотя бы совсем немного, чтобы запустить GC и удалить индексы. удалять полностью совсем не хочется, ибо много ценных данных.



Последнее исправление: sedrak (всего исправлений: 1)

Какие могут быть варианты освобождения места в zfs?

Я думаю нужно искать именно в этом направлении и переименовать топик. Насколько я помню: никаких вариантов, кроме как добавить дисков в пул и потом с этим жить… Но, подпишусь на тред.

DALDON ★★★★★
()
Последнее исправление: DALDON (всего исправлений: 1)

Сервер физически доступен?

Можно добавить ещё блочное устройство в пул (флешку, например), потом удалить его.

Если физически не доступен, то можно перекинуть часть файлов в tmpfs (или создать добавить блочное устройство в tmpfs и добавить в пул, но это рискованно - вырубят электричество и часть данных пула может потеряться).

На будущее:

  • ставьте квоту на rpool/ROOT/pbs-1 (например, 13 Тб)
  • ставьте reservation на rpool/ROOT
Harliff ★★★★★
()
Ответ на: комментарий от Harliff

Странно, конечно, почему ребята из Proxmox Server Solutions GmbH из коробки не настраивают защиту от «бэкапы забили /».

Впрочем, они и LVM thin pool в Proxmox VE без лимитов пихают по дефолту.

Получаются решения, которые нужно «доработать зубилом и напильником»(*), что бы они нормально работали.


(*) был такой анекдот

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 3)
Ответ на: комментарий от Harliff

Можно добавить ещё блочное устройство в пул (флешку, например), потом удалить его.

Имеется в виду: расширить пул, освободить место, удалить устройство из пула, потом уже физически его извлекать.

Harliff ★★★★★
()
Последнее исправление: Harliff (всего исправлений: 1)
Ответ на: комментарий от Harliff

Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 32G 0 32G 0% /dev tmpfs tmpfs 6.3G 9.4M 6.3G 1% /run rpool/ROOT/pbs-1 zfs 15T 15T 0 100% / tmpfs tmpfs 32G 0 32G 0% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock rpool zfs 128K 128K 0 100% /rpool rpool/ROOT zfs 128K 128K 0 100% /rpool/ROOT tmpfs tmpfs 6.3G 0 6.3G 0% /run/user/0

sedrak
() автор топика
Ответ на: комментарий от Harliff
Filesystem       Type      Size  Used Avail Use% Mounted on
udev             devtmpfs   32G     0   32G   0% /dev
tmpfs            tmpfs     6.3G   18M  6.3G   1% /run
rpool/ROOT/pbs-1 zfs        15T   15T     0 100% /
tmpfs            tmpfs      32G     0   32G   0% /dev/shm
tmpfs            tmpfs     5.0M     0  5.0M   0% /run/lock
rpool            zfs       128K  128K     0 100% /rpool
rpool/ROOT       zfs       128K  128K     0 100% /rpool/ROOT
tmpfs            tmpfs     6.3G     0  6.3G   0% /run/user/0
sedrak
() автор топика
Ответ на: комментарий от sedrak

Коллеги, давайте варианты решения накидывать:

  • удалить ненужные файлы
  • расширить пул с помощью доп. накопителя (флешки) и сделать prune + GC
  • расширить пул с помощью образа в tmpfs и сделать prune + GC

Что ещё можно предложить?

Harliff ★★★★★
()
Ответ на: комментарий от Harliff

ZFS это CoW, т.е. при удалении происходит запись, а у него места нет.

Золотое правило для работы с CoW ФС: ВСЕГДА ДЕЛАЕТСЯ РЕЗЕРВ!

zfs create -o refreservation=5g zpool/reserved

а потом просто

zfs destroy zpool/reserved
anonymous
()
Ответ на: комментарий от anonymous

ZFS это CoW, т.е. при удалении происходит запись, а у него места нет.

Зато получится сделать echo "" > BIGFILE, освобождал место на заполненном на 100% пуле лет 12 назад так.

Dimez ★★★★★
()
Ответ на: комментарий от Harliff

Можно добавить ещё блочное устройство в пул (флешку, например), потом удалить его.

А разве так можно? Насколько я понимаю, то, что было добавлено в пул, без разрушения пула убрать не выйдет.

DALDON ★★★★★
()
Ответ на: комментарий от DALDON

Без проблем убралось, пул цел и невредим.

        NAME                                            STATE     READ WRITE CKSUM
        rpool                                           ONLINE       0     0     0
          scsi-36b083fe0d789a8002d38de79057a3d18-part3  ONLINE       0     0     0

errors: No known data errors
Filesystem        Size  Used Avail Use% Mounted on
udev               32G     0   32G   0% /dev
tmpfs             6.3G  1.5M  6.3G   1% /run
rpool/ROOT/pbs-1   15T   14T  1.1T  93% /
tmpfs              32G     0   32G   0% /dev/shm
tmpfs             5.0M     0  5.0M   0% /run/lock
rpool             1.1T  128K  1.1T   1% /rpool
rpool/ROOT        1.1T  128K  1.1T   1% /rpool/ROOT
tmpfs             6.3G     0  6.3G   0% /run/user/0

И спасибо за подсказку, квоты тоже поставил, чтобы на будущее легче было.

sedrak
() автор топика
Ответ на: комментарий от DALDON

Раньше было нельзя, теперь если место в пуле на остальных устройствах хватает - удалить отдельный vdev/часть зеркала точно можно(если свободного места в пуле хватает). А вот девайсами в составе RAIDz/dRAID такой фокус как я понимаю не пройдет.

Собственно это один из способов shrink-нуть ZFS-пул(из одного устройства или зеркальный) - добавить еще один vdev меньшего размера, а потом попросить удалить исходный и подождать пока данные переедут.

Из недостатков такого подхода - zpool status -v будет «помнить» удаленные устройства(строчки вида «indirect-0»), ибо не затирает до конца данные об удаленном из пула устройстве(по заявлениям разработчиков - это не баг, а фича).

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 4)
Ответ на: комментарий от DALDON

Судя по man, zpool remove научился удалять что-то кроме hot spare начиная с версии 2.0

В man на версию 2.2 ограничение на удаление девайсов выглядит следующим образом:

Removes the specified device from the pool. This command supports removing hot spare, cache, log, and both mirrored and non-redundant primary top-level vdevs, including dedup and special vdevs.

Top-level vdevs can only be removed if the primary pool storage does not contain a top-level raidz vdev, all top-level vdevs have the same sector size, and the keys for all encrypted datasets are loaded.
Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Собственно это один из способов shrink-нуть ZFS-пул(из одного устройства или зеркальный) - добавить еще один vdev меньшего размера, а потом попросить удалить исходный и подождать пока данные переедут.

Интересная мысль, спасибо! Я до такого не додумался.

Harliff ★★★★★
()