Настройка диска ssd в ubuntu в связке с hdd

Хочу поделиться опытом настройки диска ssd в Ubuntu. А также развеять мифы оптимизации. К тому же расскажу о монтировании дополнительного диска hdd, чтобы хранить большие объемы информации.

На свой ноутбук купил ssd диск, к тому же вместо оптического привода вставил hdd диск на 500 гигабайт, чтобы хранить фильмы, музыку, фотки.

1. Выравнивание диска ssd.

Итак, хотелось бы сказать про то, что на многих сайтах советуют выравнивать диски ssd. Хочу вас уверить, что и fdisk и gparted и стандартный менеджер разбивки дисков при установке ubuntu автоматически выравнивают разделы.

Вот таким образом я разбил свой диск ssd:


Для корневого раздела "/" выделил стандартно 40 гигабайт.
Для "swap" 4 гигабайта. (swap это хорошее дело на ssd, дальше опишу почему)
Для "/home" домашнего каталога - все остальное.

(Первый раздел это 200 мегабайт - загрузочный раздел для uefi. 
В следующей статье расскажу как легко и просто поставить ubuntu на uefi)

Так вот, проверяется диск на выравнивание выполнением следующей команды в консоле: sudo parted /dev/sda align-check opt 1
Если будет выдано следующее сообщение:

"aligned", то значит ваш диск выравнен.
И не надо читать кучу форумов об этом, сидеть с калькулятором и вымерять, все делается автоматически, при использовании популярных программ, таких как gparted, gdisk, fdisk или менеджер дисков установщика.

2. Swap раздел нужен на ssd.

Работа со swap в Ubuntu идёт примерно ~40:1 чтение:запись.
Поэтому не нужно объяснять, что чтение с ssd диска будет идти быстрее, чем с hdd.
Единственное, что нужно сделать, это изменить параметр swappiness на значение 10. О том, как это можно сделать, написано в этой моей статье:


3. Настройка Trim.

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

Если TRIM не работает, накопитель узнает об удалении файла только в тот момент, когда ОС прикажет ему перезаписать LBA, покрывающий ставший ненужным файл.

Вся суть сводится к тому, чтобы включить это.
Для начала нужно проверить, поддерживает ли ваш ssd Trim, делается это выполнение следующей команды в терминале: sudo hdparm -I /dev/sda | grep "TRIM supported"
Если в результате будет сообщение "Trim supported":


То можно перейти к самой настройке включения.

Можно запускать в ручную командой:sudo fstrim / -v
Выполнение может занять какое-то время, в случае успешности операции, вы увидите следующее сообщение:


То значит Trim был успешно выполнить.

Автоматическое включение можно настроить добавление discard в опции монтирования fstab, об этом расскажу ниже. (Но многие говорят, что это плохой способ)
Либо создав задачу в Cron (менеджере задач по расписанию):
Создаем ежедневную задачу с именем "trim" следующей командой:sudo gedit /etc/cron.daily/trim 
И в открывшийся текстовый файл вставляем следущее:
#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG
После чего, сохраняем и закрываем.
Теперь сделаем данный файл исполняемым следующей командой:sudo chmod +x /etc/cron.daily/trim
Теперь ubuntu будет каждый день выполнять trim.
Не советую добавлять параметр discard в опции монтирования fstab.

Стоит упомянуть, что Trim в linux работает только со следующими файловыми системами: ext4 и btrfs.

4. Монтирование разделов в fstab.
При загрузке системы, у вас монтируются диски и разделы, которые указаны в файле:
/etc/fstab
В принципе, если у вас один жесткий диск ssd, то можете смело им пользоваться без тех настроек, что описаны в данном пункте.
Я в данном файле примонтировал второй жесткий диск, для того, чтобы примонтировать каталоги Музыка, Видео и Изображения, которые будут весить много места и на sdd они все не поместятся.
Ну и еще можно переместить на hdd с ssd каталог /var, так как в него пишется очень много всякого, например логи и деб пакеты перед установкой программ.

Отредактируем данный файл, выполнив следующую команду в терминале:sudo gedit /etc/fstab
Откроется текстовый файл, где перечислены монтируемые устройства:
У меня он вот такой (кликните по изображению для увеличения):


Разберем теперь как примонтировать (подключить) новый жесткий диск к системе.
Это у меня делается следующей строчкой:
UUID="5cfa4dbd-fca2-470a-a785-ebc56cd29387" /diskette ext4 defaults 0 2
Разберем данную команду подробнее.
1 параметр. Это UUID устройства. Увидеть его можно либо в gparted щелкнув по разделу дважды мышкой. Либо выполнив в терминале команду:blkid
И появится весь список устройств с UUID:


Мне нужен выделенный раздел жесткого диска, в этой строчке выделяем наш UUID и прописываем в первом параметре.

2 параметр. Это точка монтирования.
Это папка, через которую будет производиться обращение к разделу. В принципе, может быть любой.
Прежде чем монтировать в какую-либо папку, не забудьте ее создать.
Например в моем случае это sudo mkdir /diskette

3 параметр. Это файловая система. Думаю объяснения не нужно, если не уверены как пишется или не знаете, то для ленивых есть параметр "auto".

4 параметр. Это параметры монтирования. В принципе достаточно defaults.
Вот какие параметры можно использовать:
exec - Разрешение на запуск исполняемых файлов. Опция включена по-умолчанию.
noexec - Запрет на запуск исполняемых файлов.
auto - Раздел будет автоматически монтироваться при загрузке системы. По-умолчанию.
noauto - Раздел не будет автоматически монтироваться при загрузке системы.
ro - Монтирование только для чтения.
rw - Монтирование для чтения и записи. По-умолчанию.
user - Разрешение простым пользователям монтировать/демонтировать этот раздел.
nouser - Запрещает простым пользователям монтировать/демонтировать этот раздел. По-умолчанию.
defaults - Использование всех параметров по-умолчанию.
discard - Включает Trim на раздела с ФС ext4 и btrfs (очень не рекомендуется)

5 параметр. Флаг бэкапа.
Если 1 - то программа dump включит этот раздел при резервном копировании.
Если 0 - то этот раздел не будет включен при резервном копировании.

6 параметр.  Порядок проверки разделов.
Устанавливает порядок проверки раздела при монтировании на наличие ошибок. Если установить один и тот же порядок для двух разделов, они будут проверяться одновременно.
Если 0 - раздел не проверяется.

Таким вот образом можно примонтировать новый жесткий диск к определенному каталогу в систему.

Но если мы выставили параметр монтирования defaults, то на данном жестком диске мы не сможем выполнять операции создания и удаления.
Для этого нам нужно получить права на новый диск, делается это очень просто, выполняем в терминале команду: sudo chmod -R 777 /diskette/
естественно в команде вместо /diskette/ вы указываете свою точку монтирования.


И теперь, когда мы примонтировали жесткий диск, мы можем перегрузиться и проверить что он монтируется.
Теперь вот можно перейти к самому интересному. А именно к монтированию каталогов. Переносу Музыка, Видео, Загрузки на HDD, потому что на нем намного больше места.
Почему не перенести всю папку home? 
Потому что в ней хранятся файлы конфигураций и многое другое, высокая скорость чтения которых обязательна. Иначе зачем вообще покупать ssd?

Монтируются каталоги следующим способом.
В каталоге точки монтирования, у меня это /diskette/ создаем каталоги с такими же названиями Музыка, Видео и тд
После чего прописываем следующую команду:
/diskette/Музыка /home/edward/Музыка none bind 0 0
Разберем данный случай для монтирования каталогов,
первым параметром мы указываем нашу новую папку на HDD, которая монтируется в каталог домашней папки Музыка.
Обязательные параметры none bind 0 0.
Таким образом вы можете прописать и другие каталоги по желанию.

Вот что получилось в моем случае:


В домашний каталог можно записать всего лишь 77 гигабайт, а в папку Видео можно записать почти 500 гигабайт информации.

Вот таким образом можно настроить свою систему.

Больше ничего делать не нужно с ssd. Не нужно настраивать commit, atime и прочую ересь, что несут в других блогах. Это все было актуально на старых моделях ssd, когда они только появились.

Вообще забудьте, что у вас SSD. Просто пользуйтесь им.

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

43 коммент. :

  1. /home и /swap - тут все понятно! Но /tmp /opt /var каталоги периодически захламляемые многие файлы часто перезаписываются... Их стоит переместить на HDD! Как вы считаете?

    ОтветитьУдалить
    Ответы
    1. Диски ssd сейчас делают настолько надежными, что выработать ресурс очень сложно, к тому же гарантии 3-5 лет дают вам право не ограничивать себя в этом. Но var можно переместить.

      Удалить
    2. делается это довольно просто, копируется папка вар:
      cp -pr /var /diskette/
      вместо /diskette ваша точка монтирования.
      Далее так же как каталог Музыка монтируется с помощью fstab:
      /diskette/var /var none bind 0 0
      как прописали и сохранили, то перезагрузка

      Удалить
  2. "Не советую добавлять параметр discard в опции монтирования fstab." - откуда данные?

    ОтветитьУдалить
    Ответы
    1. На зарубежных сайтах читал довольно неоднозначные суждения об этом. Если Вы меня разубедите в этом, то с удовольствием изменю статью :)

      Удалить
  3. Интересная статья. Спасибо!
    А как быть с программами которые интенсивно что то пишут на диск? Например известно что Google Chrome постоянно пишет что то в свой кеш. Как решать эту проблему?

    ОтветитьУдалить
    Ответы
    1. Он пишет, а потом использует, чтобы снова не тянуть это с инета, тем самым уменьшая запись на диск. Можно разместить в оперативе кэш гугл хрома. В этом особо необходимости нет, поэтому и не описывал в статье. Тем более разместив на hdd кэш гугл хрома, вы тем самым лишаете себя скорости работы браузера. Опять же зачем покупaть ssd и не пользовать его для комфорта?

      И вообще на домашнем пк очень трудно выработать ресурс новых ssd.

      Удалить
  4. Спасибо отличная статья! Все работает, кроме /diskette/var /var none bind 0 0 Перепробовал все варианты, результат один = Ошибка монтирования /var

    ОтветитьУдалить
    Ответы
    1. А вы скопировали правильно, копируется папка вар:
      cp -pr /var /diskette/
      вместо /diskette ваша точка монтирования.
      Далее так же, как каталог Музыка монтируется с помощью fstab:
      /diskette/var /var none bind 0 0
      как прописали и сохранили, то перезагрузка

      В консоле: mount --bind /diskette/var /var
      Что выведет?
      Можно еще права назначить себе на /var
      sudo chmod -R 777 /var

      Удалить
  5. Перенес раздел с системой и часть хомяка с hdd на ssd, немного помучился, там и граб, и права и проч. Дальше все по статье. Спасибо, Edward :)

    ОтветитьУдалить
  6. Edward Kobylyanets здраствуйте, прошу вашей помощи с разметкой SSD на 120гб.Есть комп с 8 гб оперативной памяти, и 2 HDD с виндовыми ntfs разделами (один на 1 тб, и на 500 гб). Планирую поставить систему Pear OS 8 (система на базе Ubuntu 13.04) Хотелось бы иметь максимально быструю систему. планирую разметить: \ в Ext4 и \home на SSD а ntfs разделы винды не трогать. правильно ли я хочу разметить SSD и долго ли он проживёт при такой разметке? и нужен ли мне swap раздел при таком количестве оперативки?

    ОтветитьУдалить
    Ответы
    1. правильно. Можете ничего не трогать. Разбивайте как у меня на рисунке. Вы бы знали как винда жестоко обращается с дисками, пишет темп файлы постоянно. Так что даже не переживайте, сейчас ssd делают очень надежными.
      Трим выполняйте по расписанию и всё. swap делайте на ssd.
      Для ubuntu можете не выделять столько гигов сколько я выделил. Ей и 10 достаточно вполне. / - 10 (до 20 гигов) swap - 4. Все остальное под /home

      Удалить
    2. Огромное спасибо за ответ. позвольте ещё вопрос, по поводу выравнивания ssd:
      1) в Pear OS к сожалению не предусмотренs fdisk и gparted в live CD, смогу ли я правильно разметить(выравнять диск) по средствам стандартного менеджера разбивки дисков во время установки OS?
      2)и нужно ли размечать мои разделы кратно 8 (для корректного выравнивания)? то есть : \ 32768 Гб \home 65536 Гб swap 4096 и 20 Гб неразмеченными для замены секторов.
      3) и нужно ли располагать swap первым в списке разметки?
      заранее большое спасибо!

      Удалить
    3. 1. Да стандартный норм справится, просто на всякий случай после установки проверьте способом описанным в статье, чтобы успокоится.
      2. Не надо ничего кратно 8 делать. Не надо пустое место оставлять.
      3. swap без разницы где делать и каким. Это же не блины HDD :).

      Удалить
    4. спасибо!

      Удалить
  7. Edward Kobylyanets позвольте последний вопрос. нужно ли форматировать только что купленный SSD а только потом ставить на него систему.(вопрос наверно глупый но всё же) заранее спасибо!

    ОтветитьУдалить
    Ответы
    1. Форматируйте, ничего с ним не случится.

      Удалить
  8. папку var так и не удалось переместить.Файлы все скопировал. Но после перезагрузки не стартуют иксы. после авторизации в консоли выдает предупреждения. но если в консоли выполнить mount --bind
    после этого и иксы запускаются через startx
    в fstab правильно добавил?
    /ext-hdd/var /var none bind 0 0

    ОтветитьУдалить
    Ответы
    1. Пришлите сюда весь текст в fstab

      Удалить
    2. у меня на моей системе работает, не понимаю почему у Вас возникают трудности...
      На скриншоте видно, что у меня смонтирована var в моем файле fstab

      Удалить
    3. #
      # / was on /dev/sda1 during installation
      UUID=6925ce56-79ac-498d-9dd4-645a88333d86 / ext4 errors=remount-ro 0 1
      # /home was on /dev/sda6 during installation
      UUID=9d019c76-1f96-4884-80b8-de4ee3e62922 /home ext4 defaults 0 2
      # swap was on /dev/sda5 during installation
      UUID=a26378ff-fe39-4a80-ad54-182c9e75dcb2 none swap sw 0 0
      UUID=c93759fd-094a-49fd-856a-5614b844b372 /ext-hdd ext4 defaults 0 2
      /ext-hdd/Музыка /home/mousesport/Музыка none bind 0 0
      /ext-hdd/Видео /home/mousesport/Видео none bind 0 0
      /ext-hdd/Загрузки /home/mousesport/Загрузки none bind 0 0
      /ext-hdd/var /var none bind 0 0

      Удалить
    4. Если убрать строчку: /ext-hdd/var /var none bind 0 0 , то остальные папки монтируются? Система грузится без ошибок?

      Удалить
    5. Да я разобрался строчку с /var повыше закинул и без ошибок все

      Удалить
  9. Edward Kobylyanets и самый последний вопрос позвольте, Планирую после установки OS произвести следующие действия подскажите стоит ли?
    1)отключу запись времени последнего доступа к файлу (опция монтирования noatime) редактируя sudo nano /etc/fstab
    2)логи и временные файлы вынесу в ОЗУ. Для этого добавлю в /etc/fstab строчки:
    $ sudo nano /etc/fstab
    tmpfs /var/log tmpfs defaults 0 0
    tmpfs /tmp tmpfs defaults 0 0
    tmpfs /var/tmp tmpfs defaults 0 0
    3)для продления жизни SSD добавлю в /etc/sysctl.conf следующие значения:
    $ sudo nano /etc/sysctl.conf
    # Устанавливает период между сбросами измененных данных из ОЗУ на диск в 15 сек. (по умолчанию 5 сек.)
    vm.dirty_writeback_centisecs=1500
    # Включает laptop-mode
    vm.laptop_mode=5
    4) и в конце настрою TRIM как у вас в инструкции.

    ОтветитьУдалить
    Ответы
    1. Что у Вас за SSD?
      1)отключу запись времени последнего доступа к файлу (опция монтирования noatime) редактируя sudo nano /etc/fstab - зло
      3)для продления жизни SSD добавлю в /etc/sysctl.conf следующие значения: - зло :)

      Остальное делайте. Я эти два пункта считаю ненужными абсолютно. У вас сбой произойдет в системе и потеряете данные, зачем это всё?

      Удалить
    2. SSD 2.5" SATA-3 128Gb Plextor M5S

      Удалить
  10. Анонимный5 мая 2014 г., 9:10

    Доброго времени суток! Спасибо автору за этот мануал, всегда им пользовался. Но с выходом Ubuntu 14.04 возникли новые вопросы:

    Заявляется что "Для SSD-накопителей с чипами Intel и Samsung включена по умолчанию операция TRIM в Ubuntu 14.04"

    Вопрос: а что делать пользователям SSD на других чипсетах? Включать вручную как предыдущих релизах или...?

    Заранее большое спасибо за ответ.

    ОтветитьУдалить
  11. Здравствуйте.
    Посоветуйте пожалуйста что мне делать.
    В моем ультрабуке диск ссд 22гб встроен и я не знаю как его лучше метить, чем жертвовать? нужен ли свап? (у меня 4гб рам)
    Спасибо.

    ОтветитьУдалить
  12. Решил что лучше сделать так:
    boot - 190mb
    / - все что осталось
    /home - поставить на 2-ой hdd 500gb
    swap - 4,5gb

    ОтветитьУдалить
  13. Спасибо за прекраснейшую статью, все четко и понятно написано.
    После переноса /var на /hdd/var система прекрасно работает,
    но есть одно НО!
    Как пример: если вводить в терминале команду как суперпользователь "sudo apt-get install wine",
    то в ответ получаю вот это:
    "sudo: /var/lib/sudo доступно для записи не владельцу (040777), разрешения должны иметь вид 0700".
    Дальше все как обычно ввожу пароль и команда исполняется без проблем, программа устанавливается.
    Что это такое, и как можно вылечить?
    Сильно не пинайте, я только-только начал внедрятся в Linux.
    Спасибо!

    ОтветитьУдалить
    Ответы
    1. Заходим под рутом:
      sudo su
      выполняем команду смены владельца:
      sudo chown -R root:root /var/lib/sudo

      И меняем права:
      sudo chmod -R 0700 /var/lib/sudo

      Удалить
    2. Спасибо! Благодаря статьям, мануалам и людям как Вы. Пользоваться системой становится приятно и интересно!

      Удалить
  14. А на скорости и трим это не повлияет?

    ОтветитьУдалить
  15. Я впервые устанавливаю линукс, все эти действия выполняются до установки (из под флешки) или после установки?

    ОтветитьУдалить
    Ответы
    1. Лучше ничего не выполняйте. Просто пользуйтесь, как будто вы установили linux на обычный hdd.

      Удалить
  16. Спасибо за статью. Единственное не стал на SSD Swap делать, т.к. процессор i5 и оперативки 12Гб, соответственно оптимизация с помощью zRAM не очень актуальна. Самое интересное, что делал трижды на Linux Mint, но папки не монтировались :-( Уже думал, что я дебил, но на Ubuntu все с завелось моментально. В чем причина так и не разобрался, ведь разницы быть не должно.

    ОтветитьУдалить
  17. Добрый день. Я бы очень хотел попросить о подсказке. Прикупил SSD, но сделал на нем только раздел под корень, раздел home оставил на жестком диске. В принципе мне не трудно переустановить системку и разбить SSD на два раздела / и /home, но тогда как мне прописать монтирование папок музыка, видео и т.п. из прежнего раздела /home на жестком диске к новому разделу /home на SSD?

    ОтветитьУдалить
  18. Добрый день!Подскажите пожалуйста для терминального сервера на ubuntu 14.04.3 server ,актуально ли проделывание этих операций?

    ОтветитьУдалить
  19. Спасибо за прекрасную статью!
    Подскажите пожалуйста, как сделать, чтобы файлы из примонтированных таким способом каталоги (Музыка, Видео и т.п.) на SSD диске удалялись в "настоящую" Корзину?
    А то, не очень удобно, удалять или восстанавливать файлы из Корзин образующихся в каждом примонтированном каталоге (Музыка, Видео и т.п.).

    ОтветитьУдалить
  20. Правильно/не правильно, сделал так автоматический установщик параметров для SSD, скрипт: https://drive.google.com/file/d/0B5yYOZjNEYKmR1JJWE9pVENMX0U/view?usp=docslist_api
    В придачу, zRAM: https://drive.google.com/file/d/0B5yYOZjNEYKmY0k4UnJyTl9DRkk/view?usp=docslist_api
    И prelink/preload: https://drive.google.com/file/d/0B5yYOZjNEYKmd1ZLOU55YmpYRTQ/view?usp=docslist_api

    Всё это отрабатывалось на Mint 2 Debian x64.

    ОтветитьУдалить
  21. Здравствуйте! Спасибо за статью. Хотелось бы узнать как поступать с винчестерами ssd меньшего объёма? Например 60 Gb. Правильным ли будет вариант: /- 40 Gb, swap- около 6 Gb (потому как память примерно 3 Gb)а весь Hdd отдан на откуп home?

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