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


119

Из вики:

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

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

Ответы:


89

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

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

SWAP-раздел:

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

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

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

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

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


GPT - это современный метод, использующий gdisk& grub 2.0.x, (я думаю, кто-то упомянул об этом ниже в ответе), а MBR - это устаревший метод, использующий старый grub 0.9.7и fdisk.. вы можете найти больше здесь: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
Нет необходимости указывать, nodiratimeкогда вы также указываете noatime. Согласитесь, это выглядит круто и продвинуто для собратьев, но так как noatimeотключает atime для inode, и каталоги тоже являются inode, это все равно что сказать "мойте руки и мойте большие пальцы тоже". :)
Redsandro

Из опыта могу сказать, что никакой планировщик ("noop") не работает быстрее, чем срок.
барабанная дробь

5
Нет, « разделы подкачки Linux по умолчанию выполняют операции TRIM, когда базовое блочное устройство поддерживает TRIM, с возможностью их отключения или выбора между одноразовыми или непрерывными операциями TRIM». поэтому раздел подкачки должен быть помещен на твердотельный накопитель, чтобы воспользоваться быстрым временем доступа, которое потребует много времени при каждой перестановке страниц
phuclv

2
@aliasgar Является ли F2FS хорошим выбором по сравнению с ext4?
SebMa

67

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

  • Выберите 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:

Возможно, вы захотите ограничить записи на вашем диске, так как 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"

Что вы подразумеваете под тем, что выравнивание разделов автоматически учитывается в последних дистрибутивах? Это применимо также, когда вы используете ручное разбиение, например, во время установки Ubuntu или когда делаете разметку с помощью gparted?
Ярно

2
@jarno в самых последних дистрибутивах (уже несколько лет), инструменты разбиения, начиная с fdisk и заканчивая графическими элементами, имеют тенденцию автоматически по умолчанию создавать выравнивания разделов с кратностью 1 Мб с момента запуска устройства. Это преимущественно выравнивается с 512 байтами, 4k, 8k и половиной миллиарда других размеров блоков / кластеров, которые по природе имеют 2 ^ n. Это делает практически невозможным неправильное выравнивание раздела, если вы не приложите к этому значительных усилий.
убийца

13

В статье archlinux Solid State Drives говорится в разделе Выбор файловой системы :

Существует множество опций для файловых систем, включая 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». Для более подробной информации смотрите это руководство .

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


-2

BTRFS IMO. В Ubuntu 8.04 и более поздних версиях включены версии GRUB, поддерживающие GPT. С GPT и Gdisk он выровняет ваши разделы для вас. Я верю, что fdisk сделает то же самое.

В любом случае, вот ссылка на установку Ubuntu в файловой системе BTRFS.

http://www.linuxbsdos.com/2011/05/05/how-to-install-ubuntu-11-04-on-a-btrfs-file-system/

Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.