Случилось прекрасное. Вы обладатель SSD накопителя, на который установили систему ALT k/Workstation или Simply, тем самым подняв ее быстродействие до запредельных высот. Все хорошо, вот только настоящее устройство обладает ограниченным количеством раз записи информации. А Linux, как и многие другие ОС, весьма часто обращается к накопителям читая и сохраняя временные файлы, журналы работы и различные кэши. В принципе, ничего особо страшного – внутренние механизмы последних ядер скидывают данные на носители реже, предпочитая держать их в памяти, для ускорения доступа. Тем не менее, обмен информацией все же идет.
Будет рассмотрен комплексный подход для ALT Linux 9, позволяющий снизить нагрузку на SSD диск. И начнем мы со свопа. Последний нужен только в тех случаях, когда информация не помещается в памяти. Используется он и для обеспечения быстродействия работы, то есть отключать его совсем нельзя. Но можно перенести своп в память, держа его там упакованным, при помощи программы zram. В ALT установку ее можно произвести через Synaptic или воспользовавшись командной строкой. Понадобится два пакета: alterator-zram-swap и zram-swap. Итак, для консоли:
su -
<вводите пароль root>
apt-get install zram-swap alterator-zram-swap
После, заходим в «Центр управления системой» из главного меню рабочего стола. Ищем «Настройка zram-swap». Кликаем по пункту и в открывшемся окне устанавливаем флажок на «включить модуль zram-swap». Следом «применить» и можно закрывать окно.
Теперь правим подключение физических накопителей. Нужно вначале выяснить, на каком из них находиться SSD. Смотрим командой lsblk. Выдается список всех разделов и их UUID. Вот последние нам и нужны. У меня на представленной картинке «/» и «home» висят на SSD.
Открываем файл /etc/fstab в текстовом редакторе конкретной системы. В Workstation это xed, в той что с индексом k вначале — kwrite, для Simply — mousepad.
Находим все упоминания swap в файле и удаляем содержащие их строки целиком.
Находим записи, относящиеся к SSD, и в конце каждой из них, но перед последними двумя цифрами добавляем опции «,data=writeback,delalloc,nobarrier». Пример:
Идем дальше. Папку /tmp запихиваем в память, и вносим аналогичную запись для /home/tmp. Последнего каталога не существует, но он нужен (честно скажу — хз зачем, но файлы в нем появляются) и мы создадим его вручную позже. Итак, что добавить в конец /etc/fstab:
tmpfs /tmp/ tmpfs nosuid,nodev 0 0
tmpfs /home/tmp tmpfs nosuid,nodev,size=128M 0 0
Обратите внимание, что размер /tmp мной не задан. Система сама разберется сколько нужно. Но ручное ограничение может сыграть плохую шутку в случаях сборок из исходных кодов крупных проектов.
Можно перекинуть аналогично в память /var/log, но некоторым пользователям бывают нужны журналы выполняемых программ. Если все же возникла такая идея, то добавляем в fstab:
tmpfs /var/log tmpfs nosuid,nodev,noexec,size=64M 0 0
Сохраняем, введя пароль администратора и закрываем kwrite.
Подождите перегружаться, еще не все.
Если приведенная настройка выполнялась для раздела «/», – требуется об этом напрямую проинформировать ядро. Открываем через kwrite (или иной текстовой редактор) файл /etc/sysconfig/grub2
Находим строчку, начинающуюся с GRUB_CMDLINE_LINUX_DEFAULT. Перед splash размещенном в одинарных кавычках, указываем « rootflags=data=writeback » (с пробелами до и после). Сохраняем.
Теперь путь наш лежит в консоль. В ней:
su -
<вводим пароль рута>
update-grub
Здесь же создаем точку монтирования tmp в home:
mkdir -pv /home/tmp
Если выкинули в память /var/log, то требуется после перезагрузки восстанавливать его каталоги. Нужно для некоторых программ (Не помню, какая ругалась, но было. Вроде rpc bind). Создаем файл /etc/rc.d/rc.local следующего содержания:
#!/bin/sh
mkdir -p /var/log/ahttpd \
/var/log/audit \
/var/log/chrony \
/var/log/cups \
/var/log/journal \
/var/log/mysql \
/var/log/ppp \
/var/log/private \
/var/log/samba/old \
/var/log/wpslog
Сохраняем, делаем исполняемым из консоли:
su -
<вводим пароль рута>
chmod +x /etc/rc.d/rc.local
Примечание: человек, администрирующий ваш компьютер (если это не вы) может сильно огорчиться узнав, что логи вы держите в памяти и обновляете их с нуля при каждом запуске машины. Ведь они показывают и неисправности. Я крайне не рекомендую помещать в tmpfs /var/log. Но каждый сам кузнец своего счастья.
Ок, первая часть мерлезонского балета окончена. Приступаем ко второй, и сразу поговорим о кэшах браузеров. Запись их на диск выполняется постоянно, что весьма бесит и вредит накопителю SSD. Нужны эти файлы зачастую только в течение текущей сессии работы. Перекидывание кэшей в память решит проблему. К сожалению, прямая установка доступна только Firefox. В отношении остальных придется заняться правкой системного .desktop файла.
Firefox:
Открываем браузер, в строке адреса набираем about:config. Соглашаемся с тем, что мы можем повредить программе.
Находим и меняем параметры:
browser.cache.disk.enable и ставим его в false
browser.cache.memory.enable в True (если не установлен)
browser.cache.offline.enable в false
browser.cache.memory.capacity устанавливаем в -1
Chrome, Edge, Chromium, Yandex browser.
Первое, что нужно сделать найти содержащий их запускающий файл .desktop. Выполняем в консоли:
cd /usr/share/applications
grep -l 'yandex-browser' *.desktop
grep -l 'chrome' *.desktop
grep -l 'chromium' *.desktop
grep -l 'edge' *.desktop
Результат - список .desktop содержащих командные строки запуска браузеров.
Во всех найденных файлах, в конце строчки Exec= добавляем « -disk-cache-dir=/tmp». Сделать это можно при помощи того же kwrite. Внимание! В файле .desktop может быть несколько таких строк. Везде требуется вписать добавочные параметры.
Побочным действием будет некоторое ускорение работы интернет-браузера.
Вот и все!
UPD: Чуть не забыл. В crontab от рута нужно добавить /sbin/fstrim -A на то время, когда машина точно включена. К примеру, у меня строка имеет вид:
0 5 * * * /sbin/fstrim -A
Компьютер работает круглосуточно и в пять утра проходит операция пометки удаленных файлов для отмены их последующего физического сохранения. Процедура ускоряет работу SSD.
UPD2: В связи с частым вопросом зачем нужно размещать своп в память и использовать zram, объясняю в комментарии https://pikabu.ru/story/alt_linux_p9_i_diski_ssd_7914443?cid=188141077
Оговорка: все действия аналогичны производимыми для моей рабочей машины и выполняются на собственный страх и риск. Приведенная инструкция большей частью подходит и для других Linux, естественно с поправкой на расположение файлов и пакетный менеджер.