Короткий ответ
Выберите ext4 и либо смонтируйте его с опцией discard
для поддержки TRIM , либо используйте FITRIM (см. Ниже). Также используйте опцию noatime
если вы боитесь "износа SSD".
Не изменяйте планировщик ввода-вывода по умолчанию (CFQ) на серверах с несколькими приложениями , поскольку он обеспечивает справедливость между процессами и имеет автоматическую поддержку SSD. Тем не менее, используйте Deadline на настольных компьютерах, чтобы получить лучшую отзывчивость под нагрузкой.
Чтобы легко гарантировать правильное выравнивание данных, начальный сектор каждого раздела должен быть кратным 2048 (= 1 МиБ). Вы можете использовать fdisk -cu /dev/sdX
для их создания. В последних выпусках он автоматически позаботится об этом за вас.
Подумайте дважды, прежде чем использовать своп на SSD. Вероятно, он будет намного быстрее по сравнению со свопом на жестком диске, но он также будет быстрее изнашивать диск (что может быть не актуально, см. Ниже).
Длинный ответ
Ext4 - самая распространенная файловая система Linux (в хорошем состоянии). Он обеспечивает хорошую производительность с SSD и поддерживает функцию TRIM (и FITRIM), чтобы поддерживать хорошую производительность SSD с течением времени (это очищает неиспользуемые блоки памяти для быстрого последующего доступа к записи). NILFS разработан специально для накопителей флэш - памяти, но не на самом деле лучше , чем ext4 на тестах. Btrfs все еще считается экспериментальным (и на самом деле не работает лучше , либо).
- Производительность SSD и TRIM:
Функция TRIM очищает блоки SSD, которые больше не используются файловой системой. Это оптимизирует долгосрочную производительность записи и рекомендуется для SSD из-за их дизайна. Это означает, что файловая система должна иметь возможность сообщать накопителю об этих блоках. Параметр discard
монтирования ext4 будет выдавать такие команды TRIM, когда блоки файловой системы освобождаются. Это онлайн сброс.
Однако такое поведение подразумевает небольшую потерю производительности. Начиная с Linux 2.6.37, вы можете избегать использования discard
и иногда вместо этого делать периодический пакетный сброс с FITRIM (например, из crontab). Это делает утилита fstrim
(онлайн), а также опция -E discard
в fsck.ext4
. Однако вам понадобится "недавняя" версия этих инструментов.
Возможно, вы захотите ограничить записи на вашем диске, так как SSD имеют ограниченный срок службы в этом отношении. Не беспокойтесь слишком сильно : современные жесткие диски емкостью 128 ГБ могут поддерживать не менее 20 ГБ записанных данных в день в течение более 5 лет (1000 циклов записи на ячейку). Лучшие (а также большие) могут длиться гораздо дольше: вы, вероятно, замените его к тому времени.
Если вы хотите использовать своп на SSD, ядро заметит невращающийся диск и будет случайным образом использовать своп (выравнивание уровня износа ядра): вы увидите SS
(Solid State) в сообщении ядра, когда своп включен:
Добавление 2097148k своп на /dev /sda1. Приоритет:-1 экстенты:1 через:2097148k SS
- Планировщики ввода / вывода:
Кроме того, я согласен с большинством ответов aliasgar (даже если большая их часть была незаконно скопирована с этого веб-сайта), но я должен частично не согласиться с частью планировщика . По умолчанию срок планировщик оптимизирован для вращения дисков , как он реализует алгоритм лифта . Итак, давайте уточним эту часть.
Длинный ответ по планировщикам
Начиная с ядра 2.6.29, SSD-диски автоматически обнаруживаются, и вы можете проверить это с помощью:
cat /sys/block/sda/queue/rotational
Вы должны получить 1
для жестких дисков и 0
для SSD.
Теперь планировщик CFQ может адаптировать свое поведение на основе этой информации. Начиная с linux 3.1, в документации ядра cfq-iosched.txt
говорится:
CFQ имеет некоторые оптимизации для твердотельных накопителей, и если он обнаруживает невращающиеся носители, которые могут поддерживать большую глубину очереди (несколько запросов в полете за раз), [...].
Кроме того, планировщик Deadline пытается ограничить неупорядоченные движения головки на вращающихся дисках, основываясь на номере сектора. Цитирование ядра doc deadline-iosched.txt
, описание опции fifo_batch
:
Запросы сгруппированы в «пакеты» определенного направления данных (чтение или запись), которые обслуживаются в порядке возрастания сектора.
Однако настройка этого параметра на 1 при использовании SSD может быть интересной:
Этот параметр настраивает баланс между задержкой на запрос и совокупной пропускной способностью. Когда первостепенное значение имеет низкая задержка, чем меньше, тем лучше (где значение 1 соответствует поведению «первым пришел - первым обслужен»). Увеличение fifo_batch обычно улучшает пропускную способность за счет изменения задержки.
Некоторые тесты показывают, что разница в производительности между разными планировщиками невелика. Тогда почему бы не порекомендовать справедливость? когда CFQ редко бывает плохим на скамейке запасных. Тем не менее, при настройке настольного компьютера вы, как правило, будете лучше реагировать на использование Deadline под нагрузкой из-за его дизайна (хотя, возможно, с более низкой пропускной способностью).
Тем не менее, лучший тест будет использовать Deadline с fifo_batch=1
.
Чтобы использовать Deadline на твердотельных накопителях по умолчанию, вы можете создать файл, скажем /etc/udev.d/99-ssd.rules
следующим образом:
# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"