it-swarm-ru.tech

Какая файловая система Linux лучше всего работает с SSD

Из вики:

Жизненно важная функция TRIM поддерживается ОС Linux, начиная с ядра 2.6.33 (доступно в начале 2010 года). Тем не менее, поддержка среди различных файловых систем все еще противоречива или отсутствует. Правильное выравнивание разделов также не выполняется установочным программным обеспечением.

Итак, какая файловая система лучше всего работает для SSD и поддерживает выравнивание разделов TRIM + во время установки и доступна в Ubuntu?

117
hbt

Файловая система EXT4 + TRIM:

  • EXT4 с TRIM повышает производительность за счет сокращения ненужных циклов записи на накопитель SSD, поскольку они ограничивают циклы записи-перезаписи.
  • Ubuntu и некоторые другие версии Linux поддерживают EXT 4 с TRIM из коробки.

Раздел SWAP:

  • Убедитесь, что у вас нет пространства SWAP на SSD, чтобы уменьшить циклы записи.
  • Если у вас есть механический привод, вы должны создать пространство SWAP на механическом диске и избегать его на SSD.

Выравнивание раздела:

  • Раздел должен начинаться с чистой границы в 1 МБ, чтобы размер блока файловой системы совпадал с размером блока SSD.

Поэтому используйте EXT4 + TRIM с SWAP на механическом жестком диске или без SWAP на SSD.

Вышесказанное можно реализовать, обратившись к источнику: Как максимизировать производительность SSD .

88
aliasgar

Короткий ответ

  • Выберите ext4и либо смонтируйте его с параметром discard для TRIM support, либо используйте 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 discardfsck.ext4. Однако вам понадобится «недавняя» версия этих инструментов.

  • Износ SSD:

Возможно, вы захотите ограничить записи на вашем диске, так как SSD имеют ограниченный срок службы в этом отношении. Не беспокойтесь слишком много, современные жесткие диски на 128 ГБ могут поддерживать по крайней мере 20 ГБ записанных данных в день в течение более 5 лет (1000 циклов записи на ячейку). Лучшие (а также большие) могут длиться гораздо дольше: вы, вероятно, замените его к тому времени.

Если вы хотите использовать swap на SSD, ядро ​​заметит невращающийся диск и рандомизирует использование свопа (выравнивание уровня износа ядра): вы увидите SSSolid) Состояние) в сообщении ядра, когда включен обмен:

Добавление 2097148k swap на/dev/sda1. Приоритет: -1 экстенты: 1 через: 2097148k SS

Кроме того, я согласен с большинством ответов aliasgar (даже если большая его часть была нелегально?) Скопирована с _ (этот веб-сайт ), но я должен частично не согласиться с планировщик часть. По умолчанию планировщик крайнего срока is оптимизирован для вращающихся дисков, так как он реализует алгоритм лифта . Итак, давайте проясним эту часть.

Длинный ответ по планировщикам

Начиная с ядра 2.6.29, SSD-диски автоматически обнаруживаются, и вы можете проверить это с помощью:

cat /sys/block/sda/queue/rotational

Вы должны получить 1 для жестких дисков и 0 для SSD.

Теперь планировщик CFQ может адаптировать свое поведение на основе этой информации. Начиная с linux 3.1, документация ядра cfq-iosched.txt file говорит :

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"
67
Totor

В статье archlinux Твердотельные накопители говорится в разделе Выбор файловой системы :

Существует множество опций для файловых систем, включая Ext2/3/4, Btrfs и т.д.

Btrfs
Поддержка Btrfs была включена в основной выпуск 2.6.29 ядра Linux. Некоторые считают, что он недостаточно зрел для промышленного использования, хотя есть также ранние последователи этого потенциального преемника ext4. Пользователям предлагается прочитать статью Btrfs для получения дополнительной информации.

Ext4
Ext4 - еще одна файловая система, поддерживающая SSD. Он считается стабильным с 2.6.28 и достаточно зрелый для ежедневного использования. В отличие от Btrfs, ext4 не определяет автоматически характер диска; пользователи должны явно включить поддержку команд TRIM, используя опцию discard mount в fstab (или с помощью tune2fs -o discard/dev/sdaX).

И Btrfs, и Ext4 отвечают двум основным требованиям для эффективного использования SSD:

  • Файловая система должна иметь возможность выдавать команды ATA_TRIM на базовый SSD
  • Файловая система не должна выполнять ненужные записи на диск

Для производительности есть два других требования:

  • Разделы должны быть выровнены по размеру блока SSD
  • TRIM должен быть явно включен для каждого отформатированного раздела Ext4

Первый в настоящее время автоматический с большинством установщиков Linux. fdisk также создаст разделы на границе 1024 КБ, если будет запущен с флагами "-cu".

Второй вариант является автоматическим для Btrfs, но для Ext4 это делается вручную путем добавления «discard» в список параметров монтирования для каждого раздела Ext4 в файле «/ etc/fstab». Для получения дополнительной информации см. Это howto .

На мой взгляд, это потребовало немного возиться с fstab для Ext4 - это не причина не использовать эту зрелую и превосходную файловую систему.

13
harrymc