Краткий ответ
Выберите 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 swap на / 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"
gdisk
&grub 2.0.x
, (я думаю, кто-то упомянул об этом ниже в ответе), а MBR - это устаревший метод, использующий старыйgrub 0.9.7
иfdisk
.. вы можете найти больше здесь: wiki.archlinux.org/index.php/Solid_State_Drives