Настройка SSD на xubuntu linux
Это вторая часть "разделенной" статьи о покупке ThinkPad и настройки SSD на xubuntu. Первая часть находится тут.
Недавно прикупил себе Intel 310 SSD и хочу рассказать о его установке и настройке более детально. В первую очередь его надо физически установить, делается это так: Service Videos, смотрите раздел "FRU Removals/Replacements" > "WWAN Adapter". Вообще на этом сайте есть всё что надо для того чтобы пересобрать ноутбук ThinkPad.
Далее, нам понадобится утилита для анализа активности работы I/O. Мне понравился iotop:
$ sudo iotop -oa
Где:
- -o - only show processes or threads actually doing I/O
- -a - show accumulated I/O instead of bandwidth
Таким образом мы получим агрегированную информацию по процессам которые активно используют наш SSD.
Сразу скажу, что я использовал Ext4 и журналирование НЕ отключал, а swap я разместил на соседнем HDD, который шёл в комплектации. Статья включающая отключение журналирования находится тут. Там же в комментариях говорится о том, что перестанет работать discard (он же TRIM), если вы отключите журналирование!
Проверить скорость работы накопителя можно так:
$ sudo hdparm -t /dev/sdb1
Настройка fstab и включение TRIM
Будем подключать наш SSD со следующими дополнительными опциями:
- noatime - не записывать access-time для файлов, потому что нам не нужны лишние записи на SSD;
- nodiratime - не записывать access-time для каталогов, потому что нам не нужны лишние записи на SSD;
- discard - включение TRIM. TRIM повысит время жизни нашего SSD накопителя.
TRIM — команда, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных больше не используются и могут быть использованы накопителем для подготовки к записи.Вот срез из статьи Сколько проживет ваш SSD:
TRIM (команда SSD) — Википедия
Флэш-память SSD построена из блоков, которые в свою очередь состоят из страниц. Данные записываются в отдельные страницы блоков, при этом невозможно обновить данные, просто перезаписав старые. Более того, стереть можно только блок целиком!
Поэтому сначала нужные данные перемещаются из страниц одного блока в другой, и только затем стирается весь блок с оставшимися ненужными данными, тем самым освобождаясь для новой записи. Этот процесс называется сбором мусора (garbage collection).
TRIM – это возможность операционной системы, с помощью которой ненужные данные помечаются специальным образом. Поэтому контроллеру не нужно перемещать их, записывая в другие блоки. Это повышает скорость записи, а главное – существенно уменьшает количество циклов перезаписи.
Отредактируйте /etc/fstab до вида:
# My SSD UUID=<ВАШ_UUID> / ext4 noatime,nodiratime,discard,errors=remount-ro 0 1 # My SWAP UUID=<ВАШ_UUID_ДЛЯ_SWAP> none swap sw 0 0 # Memory FS for /tmp and /var/tmp tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/tmp tmpfs defaults 0 0
swap можно вообще отключить через команду swapoff (см. также swapon и их параметры, а для полного отключения закоментируйте определение swap в /etc/fstab), если конечно вам позволяет объем вашей ОЗУ. Я бы рекомендовал именно такой подход: не хватает памяти и активно используется swap - купи памяти, а своп только на аварийный случай.
Для применения настроек необходимо перезагрузиться.
Теперь проверим работает ли TRIM
Смысл проверки в том, чтобы TRIM затёр данные на нашем накопителе, для этого надо создать файл, потом его удалить и проверить сектора данных где был расположен файл.
Создаем файл:
# cd / # dd if=/dev/urandom of=testfile count=10 bs=512k oflag=direct 10+0 records in 10+0 records out 5242880 bytes (5.2 MB) copied, 0.885252 s, 5.9 MB/s # hdparm --fibmap testfile testfile: filesystem blocksize 4096, begins at LBA 2048; assuming 512 byte sectors. byte_offset begin_LBA end_LBA sectors 0 5866496 5876735 10240
Копируем begin_LBA и вставляем в следующей команде:
# hdparm --read-sector 5866496 /dev/sdb /dev/sdb: reading sector 5866496: succeeded 0c0b a504 8ced cbd8 8f18 f667 694d 3ee0 3516 a8fc e4ae 0859 8cd5 01fe 786e 3f84 569b e0db 6aa1 89c3 e617 8ace 30fd 9a7d 5d2a 51f6 3419 77d8 060f c540 a42b 2219 cecb 2c36 12ec d875 d2ba e86a 4e99 6b89 a84c e40d bf0e aea4 dfcc 72e0 2f46 9200 c449 f8d2 34b5 7018 372c c704 6d49 6cef 8fad ed14 4e39 486c 09e9 8e67 a086 bbad b229 8d79 0be2 6bef 950e 9089 a95e b633 d1e6 8bca 01dc 0054 7302 9f38 6b93 e09a 7cff 4a08 c017 0a21 6f43 6710 31df 3392 0f8f ed46 4e4b b0d9 5415 9f5e 9d32 fe10 3423 beda bd5a 981b 0fd9 985d 16fe 3b92 79c0 7b8c a220 3bc0 1458 0645 5aa3 5ff9 bd28 8a0d f280 a3ab b3d7 ca05 4d22 312e 43ce 5f3b 9d7b d66b ba35 d257 7be1 6ecd afc8 205a 36c3 f6e1 743d df89 7373 9a95 7aea 091c 7986 58bc 169c c3dc 794d a613 157e 51ad e5fe e91b a3e1 d40c d0f2 2626 5643 3ec9 006c 68e4 947a bec7 29b4 077e c79b 9195 fd8f bb06 2cd1 6aad 5ffb 23d9 aefb 52a8 0a55 94e3 4da1 2ce3 06bc 249f a428 66b1 4530 690f c744 3a23 6237 2043 4759 d5c6 8020 2689 f0fd b046 34f8 8e0d 4c63 e760 0f0b 0264 02cc 8faf f2fa ce82 6e1e 7410 2ee7 f838 99f6 dd73 fccb 4164 3120 35e0 a388 da2c 655d c140 42bd 1569 87ab 9d83 9f75 eb7e e8d1 61ed b24f 0f09 c454 4c35 006d e831 67cd 0161 a6a6 fb25 79db b76c eeb1 21fb a15f 8756 f35b 5ffe 7111 7b58 5453 37f3 32d1 2d92 3f37 b4c5 7982 884b 1c63 8488 0f67 8f5f 2fa5 30ad
Ага, всё хорошо, данные в секторах есть, теперь удалим файл и узнаем сработает ли TRIM:
# rm testfile # sync # hdparm --read-sector 5866496 /dev/sdb /dev/sdb: reading sector 5866496: succeeded 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Если у вас получились все нули, то TRIM работает,
Если нет, то проверяйте ваш fstab и пиши комментарии, помогу.
Настройка grub
Добавьте в файл "/etc/default/grub" -> "elevator=noop". Эта опция нужна для отмены режима парковки HDD (которая включена по дефолту), так как SSD-накопителю этого не надо делать по физическим причинам, то будем отключать:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"
Для того чтобы изменения вступили в силу выполните:
$ sudo update-grub
Настройка отложенной записи на диск
Так как я не отключаю журналирование, то надо настроить систему так, чтобы она больше копила данных в буфере и скидывала на диск реже информацию. Это более экономично для времени автономной работы ноутбука (так как диск будет простаивать некоторое время) и времени жизни самого SSD. Отредактируйте "/etc/sysctl.conf" до следующего вида:
# Включаем режим vm.laptop_mode = 5 # Устанавливаем таймаут, по истечении которого будут сбросаны данные на диск (6000 == 60 секунд, по умолчанию этот параметр равен 500, т.е. 5 секунд) vm.dirty_writeback_centisecs = 6000
Насколько я понимаю, то "vm.dirty_writeback_centisecs" это одно и тоже что и "commit" в fstab, если я ошибаюсь - поправьте меня.
Для того чтобы изменения вступили в силу выполните:
$ sudo sysctl -p
Более подробно об этом и много другом в Disks and Filesystems / Tips & Tricks / LessWatts.org.
Настройка SWAP
Сам я не пользуюсь этой настройкой, о причинах я говорил уже выше, но для полноты статьи приведу всётаки. Есть настройка "vm.swappiness", в которой задается некий коэффициент, если он большой, то своп используется активно, если он маленький то будет редко использоваться, более подробно тут What Is the Linux Kernel Parameter vm.swappiness?. Отредактируйте "/etc/sysctl.conf":
# По умолчанию этот параметр равен "60" vm.swappiness = 10
Для того чтобы изменения вступили в силу выполните:
$ sudo sysctl -p
Использовать zRAM вместо SWAP
Рекомендую вообще избавится от дискового SWAP и использовать только zRAM для SWAP
Настройка FireFox
Для того чтобы увеличить жизнь SSD я решил отключить кеш браузера (только на диске, кеша в памяти это не касается), для этого заходим в "about:config" и редактируем следующие опции:
browser.cache.disk.enable -> false browser.cache.disk_cache_ssl -> false
Статистику кеша браузера можно наблюдать если войти в "about:cache", также там будут локейшены до кеша и т.д. Также доступны два параметра для этой статистики:
- "about:cache?device=memory" — список для кеша в памяти;
- "about:cache?device=disk" — список для кеша на диске.
Комментарии
В избранное. От покупки SSD останавливала цена, но на фоне выросших цен на HDD, решил я приобрести это чудо.
Ну раз в первой статье написал, кто тебе подтолкнул к x220, так и тут бы написал, с чего вдруг начал в новый ноут сразу ssd загонять ;)
А от себя добавлю:
1. Ставьте s.m.a.r.t. смотрелку:
sudo apt-get install smartmontools gsmartcontrol
вторая просто гуйня к первой. Про технологию, естественно читать тут - http://ru.wikipedia.org/wiki/S.M.A.R.T.
/usr/bin/chromium-browser --disk-cache-dir="/tmp/chromium/" --disk-cache-size=104857600 %U
/tmp/ естественно у меня тоже в tmpfs
Ну и я не понял - ты не вместо hdd, а вместо беспроводного адаптера что ли ставил?
Да я так и так хотел брать с ssd ноут (air), но ты да, несомненно мне подсказал что можно его и так засунуть в ноут :)
Ну да, в x220 можно туда засунуть либо WWAN, либо mSATA, так как мне WWAN не нужен встроенный, то я решил туда SSD сунуть :)
А зачем тебе hdd с 120 граммами веса?
Я не троллю, просто для себя думаю, может мне как у тебя сделать?
Ну у меня на HDD торренты всякие, Music, Downloads, Backups. А на SSD все остальное...
я тоже думал "зачем", но вынимал его и понимал что я не вижу разницы "на ощупь". С учетом того что при ношении его у меня в рюкзаке лежат книги, зарядка и еще всякой ерунды, то 100 грамм кажутся мелочью...
Вчера прикупил ещё 4Гб памяти, теперь у меня их целыхз 6-ть! Тутже вырубил своп :)
Спасибо, что собираешь свой опыт! Вот мне в очередной раз пригодилось
И тебе, за отзыв, спасибо!
У меня вопрос следуещий: elevator=noop целесообразно использовать только если в системе установленs только SSD диски, это так?
А если установлено несколько винтов: SSD под систему, а под логи, swap, почту HDD тогда какой планировщик?
Если честно не знаю, почитайте о других режимах elevator для grub в google
Промежуточный результат, может кому пригодится костыль:
TRIM не работает. Минт 14. ядро 3.5
Видимо вы что-то сделали не так. Я могу вас интерактивно спрашивать "сделали вы то, сделали вы это", но так мы засорим комментарии. Поэтому опишите все шаги которые вы сделали (только не надо говорить "я сделал всё", не поленитесь и опишите). Ну а есдинственный у меня пока вопрос, вы после изменения fstab перезагружались?
да.много раз перезагружался.
Кроме редактирования файла fstab, делал так:
создал файл /etc/cron.daily/trim
добавил в него строки:
Потом сделал его исполняемым. Перезагрузил.
Тоже не помогло.
Обновил ядро до 3.8.7. Перезагрузил.
testfile:
Покажите вывод:
По поводу скрипта TRIM: тут у вас ошибка.
[>>]- это ведь ни что иное, как [>>].
Замените, пожалуйста. А то эта неправильная копипаста уже прочно осела в Сети.
&_gt HTML сам заменил yf >/;
И да, пардон, скрипт же приведён в коментах.
Почему бы не включить его в текст? Тут мнения же разнятся, что лучше - дискард, или крон.
Жюль,
adw0rd,
Да, собственно тот скрипт для крона, в котором вы поправили символы. И ссылку уже дали.
Я прошу прощения, немного напортачил, когда поясняющий комент оставлял.
Почему включить в текст? Ну, у меня к примеру, TRIM настроен через вышеозначенный скрипт, а не через дискард.
(хотя, не всё так однозначно, наверно))
И ещё: вот не приведу сейчас ссылок на наши и англоязычные источники, но знающие (надеюсь) люди утверждают, что если SSD достаточно объёмен, то трюк с testfile сразу же после настройки TRIM, скорее всего, не прокатит. Вот у маеня,к примеру, пока ни нулей, ни ffffff не наблюдается. Недавно поставил, пока разбираюсь.
Сделал все по статье, на двух разных системах при проверке на нули, тест не проходит, т.е. остаются те же данные. Что только не пробовал. SSD trim поддерживает 100% Куда копать даже ума не приложу. Свяжитесь со мной если есть минутка.
Дмитрий, читайте комментарии. TL;DR так проверить не всегда получается
Жалко буду думать как проверить, не хотелось бы угробить винт раньше времени :) пока решил вопрос тем, что в cron закинул скрипт на выполнение каждый день "ручками". Надеюсь это тоже поможет :)
Ну, кому хочется ручками каждый раз, - это не проблема:
Оставьте свой комментарий