FreeBSD ssd оптимизация

Дата | 02.08.2015

FreeBSD ssd оптимизация
Реализуем в FreeBSD ssd оптимизация.
У меня есть один из нагруженных вэб проектов.
Решили перейти с hdd на ssd.
При использовании в системе FreeBSD ssd дисков, нужно оптимизировать файловую систему.
Первым делом нужно включить трим.
Диски не отличают нужные и ненужные данные, и расценивают все данные одинаково.
В архитектуре sdd, что бы сделать запись данных, flash-ячейки должны быть очищены.
По этому ячейки очищаются не индивидуально, а блоками (например по 128 kb), предварительное очищение снижает запись.
В итоге trim — это атрибут команд data set management протокола ATA.
Trim дает подсказки контроллеру дисков, что конкретные данные не нужны (например было удаление данных).
В случае ssd, trim позволит дисковому контроллеру запланировать очистку flash-ячеек в свободное от записи время.
Трим дает возможность перетасовывать данные, для более равномерного износа ячеек.
Перед включением/отключением опций нужно отмонтировать диски, на смонтированной файловой системе не выйдет это сделать.

# tunefs -t enable /dev/ada1p3
# tunefs -t enable /dev/ada0s1

Отключаем журналирование в файловой системе.

# tunefs -J disable /dev/ada0s1

Отключаем soft update.

# tunefs -n disable /dev/ada0s1

Отключаем soft update journaling.

# tunefs -j disable /dev/ada0s1

Просмотрим, все ли верно мы сделали.

# tunefs -p /dev/ada0s1
tunefs: POSIX.1e ACLs: (-a)                                disabled
tunefs: NFSv4 ACLs: (-N)                                   disabled
tunefs: MAC multilabel: (-l)                               disabled
tunefs: soft updates: (-n)                                 disabled
tunefs: soft update journaling: (-j)                       disabled
tunefs: gjournal: (-J)                                     disabled
tunefs: trim: (-t)                                         enabled
tunefs: maximum blocks per file in a cylinder group: (-e)  4096
tunefs: average file size: (-f)                            16384
tunefs: average number of files in a directory: (-s)       64
tunefs: minimum percentage of free space: (-m)             8%
tunefs: space to hold for metadata blocks: (-k)            6408
tunefs: optimization preference: (-o)                      time
tunefs: volume label: (-L)

Как видим все в порядке.
Еще один пункт оптимизации, это выведения портации tmp , /var/run , /var/spool , /var/log в оперативную память, что бы меньше была нагрузка и расход ячеек ссд диска.
Но тут тоже нужно понимать, что если место закончиться, то данные перестанут писаться и в связи с этим сервис может остановиться.
Так что вдумчиво делайте.
Есть два варианта запуска tmpfs, запуск посредством самой системы и на уровне ядра системы.
Я запускаю на уровне ядра, для этого пересобираю ядро с таким параметром.

# TMP-FS
options         TMPFS

Как пересобрать ядро в системе FreeBSD.
Если пересобрать ядро не хотим, то можно указать параметр при загрузки системы.

# grep tmp /boot/loader.conf
tmpfs_load="YES"

И после добавляем записи в файл /etc/fstab
rw — Разрешаем чтение и запись.
mode — Если необходимо, то выставляем права на файлы.
size — Размер выделенного пространство в оперативной памяти под диск.

# grep tmp /etc/fstab
tmpfs            /tmp         tmpfs   rw,mode=1777,size=545000000       0       0
tmpfs            /var/run    tmpfs    rw,size=94000000        0    0
tmpfs            /var/spool    tmpfs    rw,size=49000000        0    0
tmpfs            /var/log    tmpfs    rw,size=195000000        0    0

Вот и вся в системе FreeBSD ssd оптимизация.

5 thoughts on “FreeBSD ssd оптимизация

  1. user

    # grep ^tmp /etc/defaults/rc.conf
    tmpmfs=»AUTO» # Set to YES to always create an mfs /tmp, NO to never
    tmpsize=»20m» # Size of mfs /tmp if created
    tmpmfs_flags=»-S» # Extra mdmfs options for the mfs /tmp

    Достаточно добавить в /etc/rc.conf
    tmpmfs=»YES»
    и прописать требуемый размер в «tmpsize», после чего /tmp будет в памяти

    С /var аналогичная ситуация
    # grep ^var /etc/defaults/rc.conf
    varmfs=»AUTO» # Set to YES to always create an mfs /var, NO to never
    varsize=»32m» # Size of mfs /var if created
    varmfs_flags=»-S» # Extra mount options for the mfs /var

    Удачи!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *