Настройка Ubuntu для работы с SSD

Автор: Дмитрий Канн Чтение на 4 мин
Этот пост  на английском

В прошлый раз я рассказывал об установке твердотельного накопителя (SSD) в iMac. Такие накопители характеризуются очень высокой скоростью чтения (~500 МБ/с при условии подключения через 6-гигабитный SATA III) и бесшумностью.

Есть у них и минусы — высокая цена (тут навряд ли можно чем-то помочь) и ограниченный ресурс работы (точнее, количество циклов перезаписи, поскольку в режиме чтения они могут работать сколь угодно долго). И хотя у современных SSD количество циклов перезаписи измеряется миллионами, всё же имеет смысл адаптировать систему к работе с этим типом накопителя, продлив его жизнь и ускорив работу системы в целом.

Image

Довольно много полезных советов дано на сайте Debian, я расскажу о том, что я поменял в своей системе (Ubuntu 14.10 Utopic Unicorn).

1. Используйте ext4

Файловая система ext4 является наиболее стабильной и распространённой в мире Linux. За отсутствием веских причин, используйте её в качестве основной.

2. Объём RAM с хорошим запасом

Достаточное количество оперативной памяти (RAM) является абсолютно необходимым условием, поскольку позволяет:

  • Избежать своппинга
  • Использовать часть в качестве RAM-диска
  • Создать файловый кэш значительного объёма

Я рекомендую установить минимум 8 ГБ физической памяти, а лучше и все 16.

3. Объём SSD с хорошим запасом

Если диск забит «под завязку», системе становится очень трудно, а порой и невозможно, оптимизировать выделение свободных блоков. Это может значительно уменьшить срок службы накопителя из-за эффекта «умножения записи» (write amplification).

4. Специальные опции монтирования SSD

Рекомендую следующие опции монтирования разделов, расположенных на SSD:

  • noatime — запрещает обновление метаданных файла при чтении из него (рекомендуется и для обычных жёстких дисков).
  • nodiratime — аналогично для директорий.
  • commit=60 — устанавливает задержку записи изменений на диск в 60 секунд. Все изменения, накопленные в течение этого времени, будут записаны в один присест. Правда, если система по какой-либо причине зависнет, часть данных может быть потеряна — но со мной такого практически не случалось.

Таким образом, запись для корневого раздела в /etc/fstab будет выглядеть примерно так:

UUID=12345678-90ab-cdef-0123-4567890abcde  /  ext4  errors=remount-ro,noatime,nodiratime,commit=60  0  1

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

5. Еженедельный TRIM

Команда TRIM позволяет поддерживать SSD-накопитель в форме, вовремя помечая неиспользуемые блоки. Ubuntu поставляется уже с прописанной в планировщике еженедельной командой TRIM (/etc/cron.weekly/fstrim). Если у вас другой дистрибутив, проверьте, есть ли у вас что-то подобное.

6. RAM-диск для временных файлов

Каталог /tmp очень часто используется программами для хранения временных файлов; после перезагрузки он всегда автоматически очищается. Это делает его идеальным кандидатом для вынесения в оперативную память. Имейте в виду, однако, что иногда программы пытаются поместить туда файлы очень большого объёма (например, при распаковке архивов .tar.gz) — если места на RAM-диске не хватит, программа может повести себя непредсказуемо.

Чтобы создать RAM-диск, достаточно добавить в /etc/fstab строчку:

tmpfs  /tmp  tmpfs defaults,noatime,nodiratime,mode=1777,size=50%  0  0

Здесь size=50% устанавливает максимальный объём диска в половину всей физической памяти (это также и значение по умолчанию). Изменения вступят в силу после перезагрузки.

7. RAM-диск для лог-файлов

Файлы протоколов программ («лог-файлы») могут обновляться очень часто, приводя к повышенному износу диска. Если вас не беспокоит, что после перезагрузки они бесследно пропадают, их лучше также вынести на RAM-диск. Для этого надо добавить в /etc/fstab строчку:

tmpfs  /var/log  tmpfs  defaults,noatime,nodiratime,size=10000000  0  0

Здесь максимальный размер раздела установлен в 10 МБ, чего обычно хватает.

Кроме того, следующий код, добавленный в /etc/rc.local, создаёт начальную структуру каталогов при каждой загрузке:

for d in fsck apt installer upstart dist-upgrade samba unattended-upgrades cups mpd hp lightdm; do
  [ -d /var/log/$d ] || mkdir /var/log/$d
done

8. Ограничение своппинга

Максимально ограничить использование системой swap-раздела можно, добавив строчку в /etc/sysctl.conf:

vm.swappiness=1

9. Кэш браузера на RAM-диске

Пока вы бродите по Интернету, ваш браузер создаёт очень много маленьких, но очень вредных кэш-файлов. Если вынести его в /tmp, на RAM-диск (созданный нами на шаге 6), после перезагрузки ваш браузер будет всегда начинать с чистого листа — но никаких неудобств это не создаёт.

На примере Google Chrome:

# Создаём каталог кэша в /tmp
mkdir -p /tmp/$USER/google-chrome-cache

# Удаляем с концами оригинальный каталог
rm -rf ~/.cache/google-chrome

# Ставим вместо каталога символьную ссылку на временный каталог
ln -s /tmp/$USER/google-chrome-cache ~/.cache/google-chrome

Чтобы временный каталог автоматически создавался при каждой загрузке, добавьте следующее к /etc/rc.local (заменив alice bob claudia на разделённый пробелами список пользователей):

for u in alice bob claudia; do
  DIR=/tmp/$u/google-chrome-cache
  sudo -u $u -- sh -c "mkdir -p $DIR && chmod -R 700 /tmp/$u"
done

Напоследок

Время от времени стоит также проверять душевное здоровье вашего SSD командой:

sudo smartctl -a /dev/sda

Для этого должен быть установлен пакет smartmontools.

См. также

Подписаться на обновления блога:

Комментарии

Поделиться: