27

ALT Linux p9 и диски SSD

Случилось прекрасное. Вы обладатель 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, естественно с поправкой на расположение файлов и пакетный менеджер.

GNU/Linux

1.2K постов15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
4
credo in veritate
Автор поста оценил этот комментарий

Swap используется когда не хватает ОП, поэтому мы запихнем его в ОП ... Гы ... лол ...

Общий посыл статья ясен, для потренироваться вообще хорошо - с технической же точки зрения это всё ненужно и даже вредно, за одни логи можно удушить ...

раскрыть ветку (2)
Автор поста оценил этот комментарий

Хабр:

"zram увеличивает производительность путем предотвращения подкачки страниц на диск, используя сжатое блочное устройство в оперативной памяти, пока не появится необходимость использовать файл подкачки на жестком диске. Скорость обмена с оперативной памятью быстрее, чем с жестким диском, следовательно zRam позволяет Linux производить большее число операций подкачки, особенно на старых компьютерах с малым объемом оперативной памяти."


losst.ru

Работает это так: модуль zRam создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap или монтируется в tmp.

При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти. Сейчас оперативная память стоит не так уж дорого, но использование zRam вместо файла подкачки на диске может быть полезным для старых ноутбуков и компьютеров, а также для виртуализации.


И таких записей миллион. Недостаточно пруфа? Вот с www.kernel.org. Наверное там тоже считают, как и вы:

The zram module creates RAM-based block devices named /dev/zram<id> (<id> = 0, 1, …). Pages written to these disks are compressed and stored in memory itself. These disks allow very fast I/O and compression provides good amounts of memory savings. Some of the use cases include /tmp storage, use as swap disks, various caches under /var and maybe many more. :)


Разве в своей статье я не это самое сделал? А? Или вы безусловно умнее создателей ядра linux?

раскрыть ветку (1)
3
credo in veritate
Автор поста оценил этот комментарий

Учите мат. часть. На заборе тоже написано слово, а там дрова. Какова скорость чтения с HDD на котором традиционно хранится swap и современного SSD? Swap был придуман в те времена когда физического ОЗУ было мало и часть его перемещалось в ПЗУ которого было больше. Позже когда ОЗУ стало больше и уже во всю использовалась виртуальная память необходимость в свопе как методе расширения ОЗУ уменьшилась, однако сама концепция выгрузки мало используемых данных из ОЗУ в swap ни куда не делась. Фикус в том что есть программы которые сами управляют своей памятью и они принудительно используют swap, даже в условиях когда физической ОЗУ в избытке. В этих случаях, когда ОЗУ было в избытке, очевидно было что swap лучше хранить в ОЗУ т.к. скорость обмена данными по шине процессор-ОЗУ быстрее чем по шине процессор-ОЗУ-ПЗУ.

Вторым рождением переноса swap в ОЗУ было появление SSD где пужали снижением ресурса ячеек памяти за счет активной в них записи, народ бросился страдать этой фигней забыв несколько концептуальных вещей:

1. Стоимость ОЗУ.

2. Стоимость ПЗУ.

3. В правильной сконфигурированной системе swap это отдельное ФИЗИЧЕСКОЕ устройство - отдельный накопитель.

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

Сейчас оперативная память стоит не так уж дорого, но использование zRam вместо файла подкачки на диске может быть полезным для старых ноутбуков и компьютеров, а также для виртуализации

А Вы на старый комп много ОЗУ можете поставить? =))) Перемещение swap в ОЗУ это специфическая задача, а в условиях дешевезны памяти - как бы просто не целесеобразная. Моя минтяра - много там свопа используется? =))

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества