Правильное отключение SWAP раздела в Linux Mint

Зайчатки разума

Записная книжка айтишника

Правильное отключение SWAP раздела в Linux Mint

2019-04-04 02:20:12 — Evgeniy Shumilov

  До того, как я купил себе ноутбук, я предварительно искал информацию о том, с какими проблемами мне придётся столкнуться при установке линукса. Судя по тому, что я нашёл, мне светило пропатчить модуль ядра для того, чтобы заработал тачпад и собрать модуль драйвера Wi-Fi из исходников. Это конечно, совершенно не rocket science, но со временем начинаешь ценить время и удобство, хочется побольше вещей, которые просто работают, работают хорошо и из коробки.

  Последние лет шесть я работал на самосборном дистрибутиве на базе debian. И всё было бы ничего, но поддержка этого дистрибутива в актуальном состоянии требовала периодических усилий и существенных затрат времени. Так как debian stable имеет далеко не самую свежую пакетную базу, то заморочек с железом ожидалось больше, чем обычно. Так как у меня уже был положительный опыт установки Linux Mint, я взял последнюю версию 19.1 Tara с xfce4, накатил на ноутбук и - о чудо - всё заработало. Абсолютно всё - тачпад, звук, wi-fi, видео. При всём этом установка заняла в общей сложности всего минут пять. 


  Так как заморачиваться действительно не хотелось, а попользоваться новым ноутбуком напротив - хотелось очень, то разбивать жёсткий диск я не стал и оставил настройку разделов в таком виде, в котором её предлагает программа установки по умолчанию, только дополнительно включил шифрование.  После установки я решил отключить swap, так как во-первых, 8Гб оперативной памяти мне скорее всего должно хватить на все мои нужды, а держать swap раздел на ssd категорически не рекомендуется. Постоянная перезапись одних и тех же блоков намного быстрее исчерпает ресурс ssd диска.

  Отключить swap - несложно, но есть несколько тонкостей. Например, отключение приводит к тому, что ноутбук начинает загружаться в несколько раз дольше, так как скрипты в initrd пытаются найти swap раздел и проверить, нет ли там данных для восстановления из режима гибернации. На ожидание раздела есть таймаут в 30 секунд и несколько попыток, в результате чгео время загрузки увеличивается примерно на полторы минуты или даже больше. 

  Для начала отключаем swap и убираем его автоматическое подключение из fstab:

sudo swapoff -a
sudo sed -i '/vg-swap/s/^/#/' /etc/fstab

  Затем запускаем команду lvm, с её помощью смотрим список активных lvm вольюмов, удаляем вольюм свопа, проверяем размер вольюма root, расширяем root на всё доступное пространство и снова проверяем размер вольюма:

lvm> lvscan 
ACTIVE '/dev/mint-vg/root' [<110.09 GiB] inherit
ACTIVE '/dev/mint-vg/swap_1' [7.91 GiB] inherit

lvm> lvremove /dev/mint-vg/swap_1
Do you really want to remove and DISCARD active logical volume mint-vg/swap_1? [y/n]: y
Logical volume "swap_1" successfully removed

lvm> vgs
VG #PV #LV #SN Attr VSize VFree
mint-vg 1 1 0 wz--n- 118.02g <7.94g

lvm> lvextend -l +100%FREE /dev/mint-vg/root
Size of logical volume mint-vg/root changed from <110.09 GiB (28182 extents) to 118.02 GiB (30214 extents).
Logical volume mint-vg/root successfully resized.

lvm> lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root mint-vg -wi-ao---- 118.02g

  С помощью resize2fs увеличиваем размер раздела на всё доступное пространство:

resize2fs /dev/mint-vg/root 
resize2fs 1.44.1 (24-Mar-2018)
Filesystem at /dev/mint-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 14, new_desc_blocks = 15
The filesystem on /dev/mint-vg/root is now 30939136 (4k) blocks long.

  Проверяем:

df -h /dev/mapper/mint--vg-root 
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/mapper/mint--vg-root 116G 8.6G 102G 8% /

  Всё прошло вполне успешно. Но как я уже писал выше, нам нужно обновить initrd, чтобы он не пытался каждый раз искать swap при старте. Причину и метод устранения проблемы я нашёл не сразу, поэтому просто поделюсь простым и правильным способом:

sudo rm /etc/initramfs-tools/conf.d/resume
sudo update-initramfs -u

  Всё, после ребута перезагрузка будет занимать примерно то же время, что и до удаления свопа.

  Также нужно заметить, что при работе без свопа нужно следить, чтобы приложения не скушали всю доступную оперативную память. В Linux для этого существует так называемый OOMKiller (OOM = Out Of Memory) - это часть ядра linux, призванная убивать приложения в ситуации критической нехватки оперативной памяти с целью предотвращения полного зависания. На своей машине пока ещё соответствующие настройки не менял, но могу поделиться парой полезных ссылок, где написано о том, как это сделать: раз и два.

Теги: linux, админское

comments powered by Disqus