SSD диски стали во многих случаях практичными заменами жестких дисков. Существуют важные отличия от обычных жестких дисков, и тщательная настройка будет окупаться в долгосрочной перспективе.
Эти инструкции написаны для FreeBSD 10.X и более поздних версий.
AHCI | Advanced Host Controller Interface – является стандартом для дисководов и контроллеров. Он предлагает расширенные функции, но для наших целей важной частью является то, что включение AHCI в BIOS обычно дает 5-15% увеличения производительности. Не все контроллеры предлагают AHCI; проверьте свой набор микросхем и BIOS. |
TRIM | Большинство SSD поддерживают функцию TRIM. TRIM – это просто обновление статуса: когда файловая система удаляет блок, он также уведомляет устройство о том, что блок больше не используется. Затем прошивка SSD может выполнять выравнивание в фоновом режиме. Без TRIM он не сможет определить, все еще используется этот блок. TRIM не требует AHCI. |
Предупреждения
Не включайте TRIM, если SSD не поддерживает его. Еще лучше, избегайте SSD, которые не поддерживают TRIM.
Включение AHCI в BIOS после установки операционной системы может изменить способ, которым операционная система или другие видят прикрепленные диски. Это особая проблема с FreeBSD, установленным в системе с несколькими загрузками. Включите AHCI перед установкой операционных систем или временно отключите его для обновления драйверов на тех, которые не видят диск при включенном AHCI.
Версия gpart (8), которая поставлялась с FreeBSD 9.0, не выполняла ожидаемого, когда использовались оба варианта -a и -b. Это было исправлено FreeBSD 9.1, но чтобы оставаться совместимым с 9.0, приведенные здесь команды используют тот или иной.
Используемые здесь функции были протестированы, но не с любой возможной конфигурацией FreeBSD. Включение аварийных дампов, но замена их в файле, вероятно, является ошибкой. Разделение MBR может потребоваться, когда несколько операционных систем загружаются с одного диска. Рассмотрите эти предложения и приспосабливайтесь к своему использованию.
Краткое резюме
Для удобства ознакомления, здесь описаны шаги разбиения и форматирования, которые описаны более подробно ниже.
# gpart create -s gpt ada0
# gpart add -t freebsd-boot -s 512k -a4k -l ssdboot ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i1 ada0
# gpart add -t freebsd-ufs -l ssdrootfs -b 1m -s 2g ada0
# gpart add -t freebsd-ufs -l ssdvarfs -a 1m -s 2g ada0
# gpart add -t freebsd-ufs -l ssdusrfs -a 1m ada0
# newfs -U -t /dev/gpt/ssdrootfs
# newfs -U -t /dev/gpt/ssdvarfs
# newfs -U -t /dev/gpt/ssdusrfs
Разделение SSD
Первые шаги: создать схему разделов GPT, раздел для хранения загрузчика FreeBSD и установить код загрузки. Загрузочный раздел – 512 КБ, самый большой безопасный размер из-за ограничений кода в загрузчике. В то время как загрузочный код в настоящее время намного меньше 512K, нет никакой реальной причины уменьшить размер раздела. И если в будущем размер загрузочного кода будет больше, как и раньше, разделы не будут переупорядочены.
Раздел загрузки здесь 4K-выровненный, но это действительно не имеет значения. Загрузочный раздел редко читается или записывается редко, а код настолько мал, что выравнивание не требуется. Здесь он выравнивается в любом случае, просто для согласованности.
# gpart create -s gpt ada0
# gpart add -t freebsd-boot -s 512k -a4k -l ssdboot ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i1 ada0
По моему опыту, корневой раздел 2G достаточно велик для хранения традиционной конфигурации и позволяет пространство для текущего ядра и kernel.olddirectory, созданного при создании нового ядра.
Ярлыки GPT назначаются для каждого раздела GPT, чтобы сделать диск легко переносимым на другой контроллер или компьютер. Пожалуйста, старайтесь, чтобы ваши метки дисков были уникальными. Идентичные этикетки на разных дисках могут привести к неожиданному и, вероятно, неутешительному результату.
# gpart add -t freebsd-ufs -l ssdrootfs -b 1m -s 2g ada0
Обратите внимание, что раздел начинается с 1M. Зачем это? Расположение 1M выравнивается по 4K. Он также выровнен по 128К и 1М, что может быть важно для некоторых твердотельных накопителей. Начиная с Windows Vista, Microsoft запустила разделы данных на 1M. И некоторые RAID-контроллеры также используют размер полосы 1 М или меньше. Используя это местоположение, более вероятно, что работа над секцией диска без использования FreeBSD GPT или, по крайней мере, менее вероятно, приведет к уничтожению данных, которые находятся в том, что контроллер видит в качестве области метаданных.
Там действительно нет никаких недостатков. 492K Впустую, в обмен на соблюдение де-факто стандарта.
Начальная точка и размер этого раздела уже выровнены. Поэтому нет необходимости использовать -a здесь, и, оставив его, избавляемся от проблемы с более ранними версиями gpart (8), упомянутыми выше.
После корневого раздела находится раздел 2G для / var и остальная часть SSD для / usr. На самом деле, 1G / var часто достаточно велик. Они выровнены с шагом 1 М, снова четным кратным размеру блока 4 КБ.
# gpart add -t freebsd-ufs -l ssdrootfs -b 1m -s 2g ada0
# gpart add -t freebsd-ufs -l ssdvarfs -a 1m -s 2g ada0
# gpart add -t freebsd-ufs -l ssdusrfs -a 1m ada0
Здесь некоторые вещи отсутствуют. Нет разделов для swap или / tmp. Мы установим их немного, воспользовавшись функциями SSD.
Файловые системы и TRIM
Файловая система UFS FreeBSD поддерживает TRIM. Это будет включено с -t при форматировании файловых систем.
Также доступны soft обновления. Журналы с soft-обновлениями (SUJ) не используются по двум причинам: были проблемы с SUJ, которые предотвращают использование дампа (8) для резервного копирования файловых систем, а функция SUJ значительно снижается fsck (8) раз. Но SSD обеспечивают значительно уменьшенный fsck (8) раз в любом случае.
# newfs -U -t /dev/gpt/ssdrootfs
# newfs -U -t /dev/gpt/ssdvarfs
# newfs -U -t /dev/gpt/ssdusrfs
Восстановление данных
Если вы установите новую версию FreeBSD на SSD, это может быть newfs (8) файловыми системами без TRIM. Загрузитесь в однопользовательский режим и используйте tunefs (8) -t, чтобы включить его в каждую файловую систему. |
Не используйте dd (1) или другие программы, которые непосредственно записывают блоки на SSD. Он копирует каждый блок, независимо от того, используются они или нет. С точки зрения SSD, каждый блок используется, а выравнивание износа становится медленным или невозможным. Тогда SSD становится медленным. |
Процедура, показанная здесь, копирует данные с существующего системного диска на SSD.
# mount /dev/gpt/ssdusrfs /mnt
# dump -C16 -b64 -0aL -f - /usr | (cd /mnt && restore -rf -)
# umount /mnt
# mount /dev/gpt/ssdvarfs /mnt
# dump -C16 -b64 -0aL -f - /var | (cd /mnt && restore -rf -)
# umount /mnt
# mount /dev/gpt/ssdrootfs /mnt
# dump -C16 -b64 -0aL -f - / | (cd /mnt && restore -rf -)
# umount /mnt
Редиктируем /etc/fstab and /tmp
/etc/fstab редактируется для обращения к SSD. В то же время будет добавлен недостающий / tmp.
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/ssdrootfs / ufs rw 1 1
/dev/gpt/ssdvarfs /var ufs rw 2 2
tmpfs /tmp tmpfs rw,mode=01777 0 0
/dev/gpt/ssdusrfs /usr ufs rw 2 2
tmpfs (5) используется для / tmp. Он использует систему виртуальной памяти для создания эффективной файловой системы памяти. Если система работает с низким объемом памяти, она будет перемещена для замены места. Этот пример не ограничивает объем свободного места в / tmp, но tmpfs (5) дает подробную информацию об этом.
Это временная файловая система. Он будет очищен при перезапуске.
SWAP
Файл подкачки редко используется, но нужно его иметь. Выделение раздела постоянно связывает пространство подкачки, а данные, записанные для обмена, не будут использовать TRIM. Поэтому мы будем использовать файл подкачки. Поскольку данные передаются через файловую систему, TRIM будет использоваться, и файл подкачки может быть изменен без переделки SSD.
Создайте файл подкачки с помощью dd (1). В этом примере создается файл подкачки 4G. 2G достаточно часто и может быть более подходящим для небольшого SSD.
# mkdir /usr/swap
# dd if=/dev/zero of=/usr/swap/swap bs=128k count=32768
Измените файл /etc /fstab, чтобы использовать файл подкачки. Это использует новую поддержку файлов подкачки, добавленных во FreeBSD 10 и описанных в fstab (5).
# Device Mountpoint FStype Options Dump Pass#
md99 none swap sw,file=/usr/swap/swap,late 0 0