SSD: различия между версиями
(→ext4) |
Нет описания правки |
||
(не показано 5 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
[[Категория:Hardware]] | [[Категория:Hardware]] | ||
[[Категория:Ноутбуки]] | [[Категория:Ноутбуки]] | ||
{{Broken}} | |||
= Использование ALT Linux на твердотельных дисках = | = Использование ALT Linux на твердотельных дисках = | ||
Строка 13: | Строка 13: | ||
== Минимизация записи == | == Минимизация записи == | ||
Количество циклов перезаписи для flash-памяти ограничено, поэтому при всех предпринимаемых производителями мерах по [http://lwn.net/Articles/428793/ wear leveling] стоит по возможности снизить запись на разделы, размещённые на SSD-накопителе (особенно мелкоблочную случайного характера). | Количество циклов перезаписи для flash-памяти ограничено, поэтому при всех предпринимаемых производителями мерах по [http://lwn.net/Articles/428793/ wear leveling] стоит по возможности снизить запись на разделы, размещённые на SSD-накопителе (особенно мелкоблочную случайного характера, для которой ожидаема высокая степень write amplification). | ||
=== временные файлы === | === временные файлы === | ||
Строка 20: | Строка 20: | ||
=== журналы === | === журналы === | ||
* десктоп: рекомендуется отключить ({{cmd|chkconfig syslogd off; service syslogd stop}}) | * десктоп: рекомендуется отключить ({{cmd|chkconfig syslogd off; service syslogd stop}}) | ||
* сервер: стоит пересмотреть конфигурацию syslog (см. {{path|/etc/syslog. | * сервер: стоит пересмотреть конфигурацию syslog (см. {{path|/etc/syslog.*}}). | ||
=== своп === | === своп === | ||
Строка 27: | Строка 27: | ||
== Настройки == | == Настройки == | ||
=== block layer === | === block layer === | ||
Можно выставить планировщик ввода-вывода <tt>noop</tt> или <tt>deadline</tt><ref><tt>deadline</tt> вроде как больше подходит для контроллеров недорогих SSD, которые могут "захлебнуть" запись; <tt>noop</tt> чуть дешевле по CPU</ref>, добавив в {{path|/etc/sysfs.conf}} ({{pkg|sysfsutils}}) строку | |||
block/sda/queue/scheduler = deadline | block/sda/queue/scheduler = deadline | ||
применение «на лету»: | применение «на лету»: | ||
Строка 40: | Строка 40: | ||
=== файловые системы === | === файловые системы === | ||
Некоторые ФС уже обзавелись<ref>Linux 2.6.33++</ref> поддержкой SSD, которую стоит задействовать — сперва проверив при помощи {{cmd|mount -o remount,option=value}} вручную и затем аккуратно зафиксировав в {{path|/etc/fstab}}. | Некоторые ФС уже обзавелись<ref>Linux 2.6.33++</ref> поддержкой SSD, которую стоит задействовать — сперва проверив при помощи {{cmd|mount -o remount,option=value}} вручную и затем аккуратно зафиксировав в {{path|/etc/fstab}}. | ||
В последнее время считается, что рекомендуемым вариантом является периодическое выполнение команды {{cmd|fstrim -a}}, а не применение опций ФС для немедленной отработки TRIM по освобождаемому пространству. Одновременное применение опций ФС и {{cmd|fstrim}} не имеет смысла. | |||
==== общие ==== | ==== общие ==== | ||
Строка 45: | Строка 47: | ||
==== ext4 ==== | ==== ext4 ==== | ||
* желательно: <tt>data=writeback,delalloc,nobarrier</tt> | * желательно: <tt>data=writeback,delalloc,nobarrier</tt> | ||
* при поддержке [[ruwp:TRIM_(команда_SSD)|TRIM]] накопителем: <tt>discard</tt> | |||
* возможно<ref>почитайте {{cmd|man mount}} и подгоните под свою ситуацию!</ref><ref>замечено, что как минимум под 2.6.39-pure-emerald-alt6 <tt>max_batch_time</tt> получает значение <tt>min_batch_time</tt>, см. {{path|/proc/mounts}}</ref>: <tt>stripe=1024,commit=NN,max_batch_time=NNNNN,min_batch_time=NNNN</tt> | * возможно<ref>почитайте {{cmd|man mount}} и подгоните под свою ситуацию!</ref><ref>замечено, что как минимум под 2.6.39-pure-emerald-alt6 <tt>max_batch_time</tt> получает значение <tt>min_batch_time</tt>, см. {{path|/proc/mounts}}</ref>: <tt>stripe=1024,commit=NN,max_batch_time=NNNNN,min_batch_time=NNNN</tt> | ||
для использования опции монтирования data=writeback для корневой файловой системы (/) нужно также добавить в параметры загрузки ядра: | для использования опции монтирования data=writeback для корневой файловой системы (/) нужно также добавить в параметры загрузки ядра: | ||
rootflags=data=writeback | rootflags=data=writeback | ||
==== btrfs ==== | ==== btrfs ==== | ||
* | * <tt>ssd</tt> (btrfs автоматически применяет опцию <tt>ssd</tt>, если видит SSD) | ||
* | * при поддержке TRIM накопителем: <tt>discard</tt> | ||
== Примечания == | == Примечания == | ||
Строка 61: | Строка 63: | ||
== Ссылки == | == Ссылки == | ||
=== обзорные === | === обзорные === | ||
* [[Включение TRIM на (внешнем) SSD]] | |||
* [https://wiki.archlinux.org/index.php/Solid_State_Drives Solid State Drives - ArchWiki] | * [https://wiki.archlinux.org/index.php/Solid_State_Drives Solid State Drives - ArchWiki] | ||
* [http://www.anandtech.com/show/2829 AnandTech - The SSD Relapse: Understanding and Choosing the Best SSD] ([http://www.anandtech.com/show/2738 предшествующая антология]) | * [http://www.anandtech.com/show/2829 AnandTech - The SSD Relapse: Understanding and Choosing the Best SSD] ([http://www.anandtech.com/show/2738 предшествующая антология]) | ||
Строка 69: | Строка 72: | ||
* [http://optimization.hardlinux.ru/?page_id=224 Оптимизация системы под SSD] | * [http://optimization.hardlinux.ru/?page_id=224 Оптимизация системы под SSD] | ||
* [http://blogs.oracle.com/jkshah/resource/pgeast_ssd.pdf Анализ производительности PostgreSQL при использовании SSD/SAS] | * [http://blogs.oracle.com/jkshah/resource/pgeast_ssd.pdf Анализ производительности PostgreSQL при использовании SSD/SAS] | ||
[[Категория:Admin]] | |||
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 16:41, 21 декабря 2023
Использование ALT Linux на твердотельных дисках
SSD (Solid State Drive, твердотельный накопитель) — перспективный вид постоянной памяти, отличающийся высокой скоростью и низкой латентностью доступа, который уже пригоден для использования в десктопных и серверных задачах.
Несмотря на эти достоинства и совместимость с обычными SATA HDD по интерфейсу большинства моделей, начинка радикально отличается по поведению и без учёта этой разницы можно получить снижение производительности и сокращение срока службы.
Выравнивание разделов
Вкратце — как и для HDD с размером сектора более 512 байт или страйповых RAID, для получения разумной производительности необходимо учитывать размер физического блока[1] при разбиении устройства на разделы. Может быть достаточно отделить первые 1—4[2] двоичных (sic!) мегабайта и начинать первый раздел с 2048-го или 8192-го сектора размером в 512 байт; текущий fdisk сделает это автоматически, инсталер 6.0+ — тоже.
Минимизация записи
Количество циклов перезаписи для flash-памяти ограничено, поэтому при всех предпринимаемых производителями мерах по wear leveling стоит по возможности снизить запись на разделы, размещённые на SSD-накопителе (особенно мелкоблочную случайного характера, для которой ожидаема высокая степень write amplification).
временные файлы
Рекомендуется /tmp на tmpfs (по умолчанию в 4.0+) совместно с pam_mktemp. Можно обдумать отключение дискового кэша браузера.
журналы
- десктоп: рекомендуется отключить (chkconfig syslogd off; service syslogd stop)
- сервер: стоит пересмотреть конфигурацию syslog (см. /etc/syslog.*).
своп
При достаточном количестве RAM можно обдумать/проверить работу без раздела/файла подкачки (либо вынести его на HDD).
Настройки
block layer
Можно выставить планировщик ввода-вывода noop или deadline[3], добавив в /etc/sysfs.conf (sysfsutils) строку
block/sda/queue/scheduler = deadline
применение «на лету»:
echo noop > /sys/block/sda/queue/scheduler
VFS
Рекомендуется добавить в /etc/sysctl.conf строку
vm.laptop_mode = 5
применение «на лету»:
sysctl -w vm.laptop_mode=5
файловые системы
Некоторые ФС уже обзавелись[4] поддержкой SSD, которую стоит задействовать — сперва проверив при помощи mount -o remount,option=value вручную и затем аккуратно зафиксировав в /etc/fstab.
В последнее время считается, что рекомендуемым вариантом является периодическое выполнение команды fstrim -a, а не применение опций ФС для немедленной отработки TRIM по освобождаемому пространству. Одновременное применение опций ФС и fstrim не имеет смысла.
общие
- обязательно: noatime[5] или хотя бы relatime (по умолчанию с 4.0+, кажется)
ext4
- желательно: data=writeback,delalloc,nobarrier
- при поддержке TRIM накопителем: discard
- возможно[6][7]: stripe=1024,commit=NN,max_batch_time=NNNNN,min_batch_time=NNNN
для использования опции монтирования data=writeback для корневой файловой системы (/) нужно также добавить в параметры загрузки ядра:
rootflags=data=writeback
btrfs
- ssd (btrfs автоматически применяет опцию ssd, если видит SSD)
- при поддержке TRIM накопителем: discard
Примечания
- ↑ ...даже если про него железка смело врёт, что "512 bytes"!
- ↑ см. тж. flashbench и здесь
- ↑ deadline вроде как больше подходит для контроллеров недорогих SSD, которые могут "захлебнуть" запись; noop чуть дешевле по CPU
- ↑ Linux 2.6.33++
- ↑ также включает nodiratime
- ↑ почитайте man mount и подгоните под свою ситуацию!
- ↑ замечено, что как минимум под 2.6.39-pure-emerald-alt6 max_batch_time получает значение min_batch_time, см. /proc/mounts
Ссылки
обзорные
- Включение TRIM на (внешнем) SSD
- Solid State Drives - ArchWiki
- AnandTech - The SSD Relapse: Understanding and Choosing the Best SSD (предшествующая антология)
- Optimizing Linux with cheap flash drives [LWN.net]