суббота, 3 января 2015 г.

SSD в Linux (обновлено)

Несколько советов для правильной и оптимизированной работы SSD-накопителей в Linux. Или готовимся к переходу на SSD...




Твердотельные SSD-накопители потихоньку уже начинают вытеснять жесткие диски HDD, оно и понятно, ведь преимуществ перед HDD достаточно много. Для начала отметим достоинства и недостатки данных дисков.


Достоинства

  • Скорость работы
Это как закись азота для старого мусклкара или новая жизнь для вашего ПК. Действительно, если скорость чтения у HDD в среднем 50-60 Mb/s, то у SSD-дисков она достигает до 512Mb/s и выше. Про скорость записи и говорить не стоит.
  • Долговечность
1 миллион часов на отказ по словам разработчиков! Серьезное утверждение - 114 лет работы :) Конечно это все маркетинговый ход и теоретический подход, но достаточно подсчитать количество циклов перезаписей, чтобы узнать срок службы. Если взять, к примеру 3000 то, примерный срок службы составит 8 лет, при перезаписи 12 Гб/день.
  • Энергопотребление
В среднем SSD расходует около 2Вт против 6Вт у HDD. Если для стационарных ПК это не показатель, то для мобильных систем это весьма весомый аргумент. Тем самым нагрузка на систему ниже, а устройство практически не нагревается.
  • Бесшумность
Абсолютная бесшумность работы. Никаких парковок головок, раскручиваний, тиканий и т.д.
  • Вес
Средний вес SSD 77 грамм, вместо 750 грамм у HDD. Такой диск можно в карман с собой прихватить и поделиться данными со своими друзьями.

Недостатки

  • Цена
Если стоимость гигабайта у HDD примерно 8 рублей, то у SSD примерно 22 рубля.
За прогресс нужно платить :(
  • Проверка временем
И все равно, что бы не говорили разработчики и какие бы баснословные нам цифры не приводили, до конца еще неизвестно о стабильности и долговечности данных накопителей. Время покажет и расставит все на свои места.

И все-таки я думаю, что рискнуть стоит. Для системного диска это самый оптимальный вариант, ведь за частую HDD - это самое медленное устройство в ПК. 60 Гб будет вполне достаточно для нужд системы, а остальное можно хранить на старичке HDD :) В качестве файловой системы рекомендуется использовать EXT4, также вы должны убедиться, что в BIOS включен режим работы AHCI.
Если вы являетесь обладателем ноутбука и вам не хочется отказываться от HDD, но хочется иметь и SSD, то советую вам пробрести адаптер Caddy SATA, который заменяет родной DVD-Rom. На китайских площадках стоит в пределах 300 рублей.


Теперь поговорим об оптимизации SSD.

TRIM

Перед покупкой диска обязательно убедитесь, что в диске присутствует технология TRIM. Для достоверности можно проверить данный параметр из Терминала:
sudo hdparm -I /dev/sda | grep "TRIM supported"
Где /dev/sda SSD-накопитель. Что бы узнать имя накопителя в системе выполните команду:
sudo fdisk -l
TRIM позволяет операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления. Говоря простым языком накопители «не знают», какие секторы действительно используются, а какие могут считаться незанятыми и чем меньше записывается и стирается в один и тот же сектор, тем выше скорость работы и долговечность накопителя. И потому периодически нужно запускать TRIM, для правильной работы SSD. Начиная с версии Kubuntu 14.04 TRIM автоматически включается по расписанию, но только для накопителей Samsung и Intel. Для обладателей других SSD-накопителей можно запустить TRIM по расписанию. И в этом нам поможет планировщик cron и fstrim.
Создаем правило для ежедневного запуска с выводом лога:
kdesudo kate /etc/cron.daily/trim
И добавляем команду для запуска:
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
/sbin/fstrim -v / >> $LOG

Делаем файл исполняемым:
sudo chmod +x /etc/cron.daily/trim
Для проверки работоспособности TRIM выполните команду в Терминале:
sudo fstrim -v /

Бережем диск

C TRIM разобрались, теперь перейдем к нашим баранам. Чем меньше будет циклов перезаписей, тем дольше прослужит SSD-диск.
Так как в системе достаточно активно создаются логи, кеши и временные файлы в /tmp и /var, то правильней будет смонтировать эти директории в Tmpfs.
Tmpfs - это файловое хранилище, предназначенное для монтирования файловой системы, но размещающееся в ОЗУ вместо физического диска.
Открываем fstab:
kdesudo kate /etc/fstab
И добавляем нужные директории (Важно заметить, что в некоторых точках монтирования указаны размеры - опция size. Естественно вы сами должны выставить значение с учетом размера вашего ОЗУ):

  • использование при компиляции, временные файлы akonadi, kde и прочего
tmpfs /tmp tmpfs defaults,size=1g 0 0
  •  кеш APT
tmpfs /var/cache/apt/archives tmpfs defaults,size=1g 0 0
  • логи системы
tmpfs /var/log tmpfs defaults,nosuid,nodev,noatime,mode=0755,size=5% 0 0
  • кеш KDE
tmpfs /var/tmp tmpfs defaults 0 0
  • сюда кидают кеш браузеры и другие программы
tmpfs /home/имя_пользователя/.cache tmpfs noatime,nodev,nosuid,size=500M 0 0

Посмотреть смонтированные директории можно через терминал:
df -h
Также для уменьшения количества циклов перезаписей нужно добавить опцию монтирования noatime для SSD-накопителя.
noatime - Во время чтения файлов не будет обновляться поле atime файловой системы, указывающее время последнего доступа к файлу. Важность данного параметра в том, что он убирает необходимость системы производить "ненужные" операции записи когда файл всего-навсего необходимо прочитать. Т. к. эти операции записи могут быть достаточно интенсивными при чтении большого количества файлов, отключение может дать неплохой прирост производительности и срока жизни. Заметьте, что информация о времени последней записи файла будет по-прежнему обновляться каждый раз, когда файл будет изменён.
UUID=xxxxx / ext4 noatime,errors=remount-ro 0 1
Где,
  • UUID=xxxxx - ID вашего SSD-накопителя (смотрите в Терминале: sudo blkid)
  • ext4 - Файловая система раздела
  • noatime -  Отключает запись информации о последнем времени доступа при каждом чтении файла.
  • errors=remount-ro - Перемонтирование раздела при ошибках
Некоторые рекомендуют использовать опцию discard при монтировании, которая является альтернативой fstrim (о которой мы говорили выше), но есть мнение о том, что данная опция еще нестабильна и не рекомендуется для повсеместного использования.
Дополнительно еще можно воспользоваться утилитой Profile Sync Daemon, которая перенесет профиль браузера в tmpfs.
Поддерживаемые браузеры:
  • Chromium
  • Conkeror
  • Epiphany
  • Firefox
  • Google Chrome
  • Icecat
  • Luakit
  • Midori
  • Opera
  • QupZilla
  • Palemoon
  • Rekonq
  • Seamonkey
Установка:
sudo add-apt-repository ppa:graysky/utils
sudo apt-get update
sudo apt-get install profile-sync-daemon
В файле настроек /etc/psd.conf нужно указать текущего пользователя в строчке:
USERS="имя_пользователя"
И указать используемые браузеры, к примеру:
BROWSERS= "firefox chromium"

Запуск сервиса:
sudo service psd start

5 комментариев:

  1. sudo fstrim -v / - Вешает консоль
    При презагрузке системы на сплешскрине надпись "невозможно подключить "/var/spool/postfix"
    И варианты: пропустить и подключить вручную.

    ОтветитьУдалить
  2. Kubuntu 14.04 OCZ Vertex 3
    sudo hdparm -I /dev/sda | grep "TRIM supported"
    * Data Set Management TRIM supported (limit 1 block

    ОтветитьУдалить
  3. Про вешает консоль обманул - просто очень долго триммит -)
    А "невозможно подключить" решил удалением его из fstab.
    Спасибо за статью.

    ОтветитьУдалить
  4. В принципе, можно автозапуск fstrim сделать раз в неделю, если вам неудобен каждодневный запуск.
    Соответственно перенеся скрипт запуска:
    sudo mv /etc/cron.daily/trim /etc/cron.weekly/trim

    ОтветитьУдалить
  5. Статья обовлена:
    - Добавлено логирование при выполнении fstrim.
    - Убрано значение commit=60 из /etc/fstab (возможна потеря данных за последние 60 сек. работы при внезапном выключении питания)
    - Переделаны точки монтирования для tmpfs

    ОтветитьУдалить