Реализуем в 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 оптимизация.
# 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
Удачи!
/dev/ada3s1 is not clean — run fsck. tunefs: trim: (-t) disabled
SSD Gigabyte 240 Gb
FreeBSD 13
разобрался
И в чем проблема была?