Постинсталляционное конфигурирование. Тюнинг файловых систем

Алексей Федорчук

Действия, описанные в этом эссе, более чем опциональны и, возможно, многим покажутся лишними. Однако если их выполнять (а я, как правило, выполняю, хотя не все и не всегда) — делать это надо в числе прочих первоочередных настроек, причины чего будут ясны из описания.

Тюнинг файловых систем

Избавление от кириллических имён

Не знаю, кого как, а меня так страшно раздражают имена подкаталогов в моём домашнем каталоге, самопроизвольно появляющиеся в любой локализованной системе для удовлетворения представлений Freedesktop.org о том, «как правильно». Вы меня поняли — речь идёт о подкаталогах с именами типа Видео, Документы и так далее, в ряду которых особенно блистает Рабочий стол.

И дело не в только неприятии кириллицы в именах элементов файловой иерархии как класса. Хотя и это есть: как сказал бы в наши дни академик Крылов, юзер, дающий своим файлам кириллические имена, заслуживает четвертования на Дворцовой площади. Однако имена «по стандарту» доставляют и практические неудобства: при работе в командной строке мало того что требуется лишний раз нажимать Shift (этого как раз можно избежать настройками, например, Zsh), так ещё и не забыть переключиться перед этим на кириллицу.

Не один раз я писал на эту тему, и каждый раз не обходилось без комментариев типа

консолью пользуюсь ОЧЕНЬ редко

Да, бывает и такое. Но я-то так называемой «консолью» (а на самом деле интерфейсом командной строки) пользуюсь довольно часто. И подозреваю, что в этом я не одинок. А тем, кто «консолью» не пользуется, лучше пропустить этот раздел.

Ну так вот, избавиться от кириллических имён в домашнем каталоге на самом деле очень просто — командой

$ LANG=C xdg-user-dirs-gtk-update --force

где в качестве значения LANG вместо C можно задать значение POSIX или C.UTF-8 (но не en_US — как ни странно, такой локали в русифицированной установке LMDE нет). В любом случае ответом будет появление такой панели:

config_101
С предложением на ней следует согласиться, не забыв отметить боксик, чтобы эта панель не маячила более при каждом старте системы. В результате все пустые каталоги с кириллическими именами будут переименованы в свои латинские аналоги:

$ ls -1
Desktop/
Documents/
Downloads/
lost+found/
Music/
Pictures/
Public/
Templates/
Videos/

Для каталогов же с каким-либо содержимым будут созданы копии — почему эту команду и следует выполнить как можно скорее после установки, пока в Закачки не было что-либо закачано, а в Изображения не попали какие-нибудь скриншоты.

Отключение резерва

При создании файловых систем любым методом (как специальными утилитами, так и средствами инсталлятора) некоторый объём дискового пространства (по умолчанию 5 %) резервируется — он доступен только администратору. И предназначен для того, чтобы избежать переполнения файловых систем — для корня файловой иерархии это может иметь неприятные последствия.

Всё это было актуально во времена, когда диски были маленькие и дорогие. Да и то только для корневой файловой системы. И уж во всяком случае такой резерве не нужен нужен для файловых систем, лежащих на SSD. Так что резервирование дискового пространства можно безболезненно отключить такой командой:

$ sudo tune2fs -r 0 /dev/sd?#

где sd?# — имя файла дискового устройства и его раздела (например, /dev/sda3). Ответ на неё, в виде

tune2fs 1.42.12 (29-Aug-2014)
Setting reserved blocks count to 0

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

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

Кстати, резервирование можно отключить и при создании файловой системы:

$ sudo mkfs.ext4 -m 0 /dev/sd?#

И очевидно, что всё сказанное имеет силу только для файловых систем семейства ext2/3/4.

Отключение журналирования для ext4

Для файловой системы ext4 доступна ещё и возможность отключения журналирования, что, теоретически, способствует как быстродействию при файловых операциях, так и уменьшению износа SSD. Насколько то и другое имеет место быть на практике — вопрос спорный. Но, поскольку необходимости в журналировании в настольных условиях я не вижу (особенно при использовании бесперебойника), а процедура его отключения не сложна — почему бы и не избавиться от лишней сущности?

Отключение журнала в некоторых системах (например, в LM) можно выполнить на смонтированной файловой системе. Однако в LMDE такая попытка вызовет сообщение об ошибке. Так что проще всего проделать эту операцию в однопользовательском режиме, перейти в который можно двумя способами. Первый — при старте системы следует выбрать в меню GBUB пункт recovery mode:

config_102
А затем ввести пользовательский пароль, после чего система будет загружен административный аккаунт, символом чего будет приглашение командной строки в виде «решётки».

Второй способ — в текущем сеансе дать команду

$ sudo init 1

Она вызовет закрытие сеанса Иксов (внимание — со всеми их приложениями!) и то же самое предложение ввести пароль, что и в первом случае. Хотя в Jessie (и, соответственно, в Betsy) и используется Systemd, но команда /sbin/init (пока?) работает.

Теперь остаётся только размонтировать файловые системы, для которых будет отключаться журналирование:

# umount /dev/sda2
# umount /dev/sda3

И прибегнуть к той же команде tune2fs в следующей форме:

# tune2fs -O ^has_journal /dev/sda2
# tune2fs -O ^has_journal /dev/sda3

Чтобы убедиться в успехе операции, можно выполнить такую команду:

# sudo tune2fs -l /dev/sda2 | grep journal

Что должно вернуть пустую командную строку.

Запретить использование журнала можно и при создании файловой системы ext4:

$ sudo mkfs.ext4 -O ^has_journal /dev/sd?#

Теоретически ничто не препятствует отключить журнал и на корневой файловой системе. Однако я этого не делаю: хотя при использовании UPS (да и просто хорошего современного блока питания, переносящего кратковременное пропадание электричества без вреда для здоровья системы) вероятность повреждения файловой системы мала, она всё же есть. И тогда перед загрузкой системы потребуется довольно долгая и нудная процедура проверки её целостности утилитой fsck.

Редактирование /etc/fstab

Не выходя из однопользовательского режима, можно проделать и ещё одну операцию — настроить автоматическое монтирование файловой системы в оперативной памяти, tmpfs, в точку /tmp. Это опять может способствовать повышению быстродействия, сохранности SSD, а также гарантирует очистку указанного каталога при перезагрузке системы. И делается это так. Сначала удаляются имеющиеся временные файлы:

# rm -rf /tmp/*

Для чего, собственно, и нужен однопользовательский режим — в системе с запущенными Иксами очистить каталог /tmp не получится.

Затем нужно с помощью привычного текстового редактора отредактировать файл /etc/fstab, внеся в него такую строку:

tmpfs   /tmp    tmpfs   defaults,noatime        0       0

Опцию noatime (или, по желанию, relatime) можно добавить и в параметры монтирования всех остальных файловых систем. А для систем, расположенных на SSD, не лишней будет и опция discard, которая задействует для них команду TRIM.

На этом необходимость в однопользовательском режиме заканчивается — собственно, и для редактирования /etc/fstab он нужен только на этапе включения tmpfs. Так что можно возвращаться к нормальной работе с помощью команды

$ sudo init 2

Или просто перезагрузив систему.

Заключение

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

Предварительное оглавление

Постинсталляционное конфигурирование. Тюнинг файловых систем: 2 комментария

  1. Пожалуй, в командах отключения журналирования при помощи tune2fs пропущен символ каретки перед has_journal:

    # tune2fs -O ^has_journal /dev/sda2
    # tune2fs -O ^has_journal /dev/sda3

    Судя по ‘man tune2fs’ указание фичи (feature) с кареткой (^) очищает ее в суперблоке ФС, использование с плюсом (+) или само по себе — включает.

    А ещё в этом месте потерялось форматирование как кода (возможно, вместе с символом каретки).

  2. Да, действительно, куда-то делись и pre, и ^.
    Спасибо, поправил.

Добавить комментарий