Установка в Proxmox в KVM + trim дисков

Все остальные вопросы
Ответить
Lotus
Сообщения: 43
Зарегистрирован: Вт авг 29, 2017 6:49 am

Установка в Proxmox в KVM + trim дисков

Сообщение Lotus » Пн мар 02, 2020 10:31 am

Расскажу про свой опыт установки панели в Proxmox в KVM и задействовании режима trim для дисков.
Как говорит документация по Proxmox нужно с дисках включать режим discard, делать тип контроллера -VirtIO SCSI, а диски не VirtIO Block, а SCSI !
Опция discard включается галочкой (в русской версии называется "Отклонить"!).
Также я на всякий случай включил галочку "SSD emulation".
1. Сделал 2 диска: 80 под систему, 300 под папку /home
2. Ставил с CentOS-7-x86_64-Minimal-1908.iso
Выбрал ручное разбиение. LVM, Автоматическое разбиение, потом руками подправлял. Сделал 2 VirtualGroup по каждому диску в группе.
Ставил на ext4.

Переходим к предварительной настройке ОС.
3. Обновил систему
4. Установить qemu-guest-agent
5. Включить trim
5.1 По инструкции

Код: Выделить всё

systemctl enable fstrim.timer
systemctl start fstrim.timer
systemctl status fstrim.timer
Далее по инструкции
5.2 Добавил опцию discard в каждый диск (включая swap) в /etc/crypttab (он у меня пустой, поскольку шифрование не включал) и /etc/fstab
по принципу:
/dev/sda1 /boot ext4 defaults,discard 1 2
5.3 Установил issue_discards = 1 в /etc/lvm/lvm.conf
5.4 Перестроил initramfs

Код: Выделить всё

# RHEL 6 & 7: Rebuilding the initramfs
# ------------------------------------------------------------------------------------------
cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut -f
ПЕРЕГРУЗИТЬСЯ.
Настройка trim завершена. Проверял - работает.
Вручную перед бекапом делать обязательно.

Код: Выделить всё

fstrim -av
и будет вам счастье.

Можно включить почасово

Код: Выделить всё

echo -e "fstrim -a" > /etc/cron.hourly/fstrim
или каждый день

Код: Выделить всё

echo -e "fstrim -a" > /etc/cron.daily/fstrim
По умолчанию trim будет делаться каждую неделю

6. Удалил старые ядра
2-е добавилось после начального обновления системы. Т.е. я старое удалил, новое оставил.

Код: Выделить всё

rpm -q kernel
yum remove kernel-3.10.0-1062.el7.x86_64
Установил в /etc/yum.conf installonly_limit=2 на будущее.

7. Удалить неиспользуемые локали, перестроить архив локалей

Код: Выделить всё

localedef --list-archive >> ~/locale_list.txt
localedef --list-archive | grep -E -v "^en_US|^ru|^uk_UA" | xargs localedef --delete-from-archive
localedef --list-archive >> ~/locale_list_new.txt
mv -y /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
build-locale-archive
При этом консоли ssh закроются.
Подождать немного, что бы архив локалей перестроился и перегрузить.
Таким образом /usr/lib/locale/locale-archive уменьшается с 105мб до 5,5мб.

8. Я еще ставил себе ncdu - полезная утилита для просмотра размеров папок. Ну это кому нужно:

Код: Выделить всё

wget https://dev.yorhel.nl/download/ncdu-1.14.2.tar.gz
tar -xzvf ncdu-1.14.2.tar.gz
Для исключения ошибок (которые будут на этом этапе), установите gcc и ncurses

Код: Выделить всё

yum -y install gcc ncurses ncurses-devel
Войдите в папку ncdu-1.14.2 и выполните:

Код: Выделить всё

./configure --prefix=/usr
Далее

Код: Выделить всё

make
make install
При желании вы можете удалить ncdu-1.14.2.tar.gz файл и каталог, в который были извлечены исходные файлы, так как они вам больше не нужны.

9. Установить brainycp
После установки всего-всего панель с системой у меня заняла 5,8Гб.
(правда я немного jail_skeleton подрезал)

Все.
Надеюсь, кому-то поможет.
Я с этим trim'ом день промучался и наэкспериментировался, но именно так все работает.

Lotus
Сообщения: 43
Зарегистрирован: Вт авг 29, 2017 6:49 am

Re: Установка в Proxmox в KVM + trim дисков

Сообщение Lotus » Пт мар 27, 2020 9:59 am

Добавлю еще свои фичи по настройке.
1) Со временем обнаружилось, что atop, как сервис, пишет много логов.
Отключил:

Код: Выделить всё

systemctl disable atop
2) Далее возникла проблема с тем, что trim дисков делается, но на разделе swap все равно есть занятые блоки и он в бекап proxmox'a попадает, как занятое пространство.Для справки: proxmox считает блок на диске гостевой kvm пустым, если там записаны нули. Если не нули - блок занят.
trim на дисках работает, поэтому их не нужно забивать нулями, а со swap такое не проходит.
Поэтому перед бекапом я делал:

Почистил руками все архивные старые логи. Оставил только последние, без дат.
Не забываем проверить и удалить старые ядра. См. предыдущий пост. Если вы установили опцию installonly_limit=2 в /etc/yum.conf, то больше 2-х не будет.
Потом чистка неиспользуемых блоков на swap-разделе.

Код: Выделить всё

swapoff -a
dd if=/dev/zero of=/dev/dm-1  bs=1024K
mkswap /dev/dm-1
swapon -a
fstrim -av
Соответственно подправьте для своих разделов /dev/dm-1 - у меня swap (узнать это можно через swapon -s)

Забивать нулями для swap нужно, поскольку я думаю, что swapoff только отключает и не очищает.
Раздел swap после забития нулями перестает быть разделом swap поэтому его нужно заново пересоздать mkswap.
После этого бекап в proxmox минимален.

Ответить