Меню Закрыть

Linux лучшая файловая система для ssd

Содержание

Ни одна файловая система не может гарантировать 100% защиту данных от повреждения или потери (например, в случае сбоя), однако наши участники неодинаковы по стабильности и надежности.

ext4 по умолчанию использует барьеры записи, что помогает добиться стабильной структуры диска, даже если файловая система была неправильно размонтирована. XFS не уступает ext4 в зрелости и надежности; за ней водились серьезные ошибки, когда, например, пользовательские файлы после отказа в работе заполнялись нулями, однако эти ошибки уже несколько лет как исправлены. Надежность btrfs по-прежнему вызывает вопросы, хотя ситуация постоянно улучшается; мы бы советовали использовать с btrfs самую свежую версию ядра. Несмотря даже на тот факт, что некоторые разработчики на предприятиях считают btrfs стабильной, это не означает, что она готова для производства. Reiser4 отправила нас в нокаут паникой ядра (‘not syncing’) при отключении устройства без раз-монтирования, и теперь мы сумеем сломать любую систему Linux, подготовив USB-флэшку-убийцу. И всё же Reiser4 хорошо работает для раздела root. ZFS знаменита непоколебимой надежностью, что и неудивительно — ведь она применяется на предприятиях, где безопасность данных—один из главных приоритетов. Есть даже руководство по установке Ubuntu на раздел ZFS (http://bit.ly/1s9Q4Cx), основная цель которого— добиться максимальной целостности и безопасности данных. ZFS демонстрирует свою мощь, объединяя несколько физических устройств в один пул.

Общая проблема дисков SSD в Linux — поддержка TRIM. Она позволяет SSD справиться с издержками очистки памяти, что в противном случае приведет к замедлению операций записи и к ускоренному износу SSD. XFS, ext4 и btrfs поддерживают TRIM, но иногда вам нужно предпринять некие дополнительные меры, чтобы он заработал корректно: например, ext4, XFS и btrfs включают TRIM после добавления discard в свои опции монтирования в /etc/fstab (многие современные дистрибутивы используют discard с SSD автоматически). В btrfs вы также можете использовать discard по запросу, с помощью команды fstrim.

ZFS не сильно выигрывает от работы со всем пулом на диске SSD, однако SSD может увеличить производительность пула в реальной реализации ZFS на нескольких физических дисках. ZFS использует механизм журналирования для хранения синхронных записей. По умолчанию этот журнал хранится вместе с другими данными в пуле, однако если его перенести на SSD, производительность пула в целом увеличится. Что пригодится в домашних решениях NAS.

До 2014 Reiser4 долго считалась несовместимой из-за исключительных потерь производительности по причине журналирования и отсутствия поддержки TRIM. Однако Reiser4 выпустила заплатки для решения обеих проблем, и последний код поддерживает монтирование в режиме copy-on-write (опция txmod=wa) и правильно обрабатывает параметр discard в /etc/fstab. Эти функции поддерживаются в версиях ядра Linux 3.14 и новее.

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

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

4 ответа

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

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

SWAP-раздел:

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

Разделение разделов:

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

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

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

Выберите ext4 и установите его с помощью опции discard для TRIM или используйте FITRIM (см. ниже). Также используйте опцию noatime , если вы боитесь «износа SSD».

Не изменяйте планировщик ввода-вывода по умолчанию (CFQ) на серверах нескольких приложений , поскольку он обеспечивает справедливость между процессами и поддерживает автоматическую SSD-поддержку , Однако используйте Deadline на десктопах , чтобы получить лучшую отзывчивость при загрузке.

Чтобы легко гарантировать правильное выравнивание данных, начальный сектор каждого раздела должен быть кратным 2048 (= 1 MiB). Вы можете использовать fdisk -cu /dev/sdX для их создания. В последних дистрибутивах он автоматически позаботится об этом для вас.

Читайте также:  Ccleaner для очистки компьютера

Подумайте дважды, прежде чем использовать swap на SSD. . Это, вероятно, будет намного быстрее по сравнению с swap на HDD, но он также будет быстрее носить диск (что может быть не актуально, см. ниже ).

  • Файловые системы:

Ext4 — самая распространенная файловая система Linux (в хорошем состоянии). Он обеспечивает хорошую производительность с помощью SSD и поддерживает функцию TRIM (и FITRIM), чтобы поддерживать хорошую производительность SSD с течением времени (это позволяет удалить неиспользуемые блоки памяти для быстрого доступа к записи). NILFS специально разработан для флеш-накопителей, но не действительно работает лучше, чем ext4 в тестах. Btrfs по-прежнему считается экспериментальным (и на самом деле не работает лучше либо ).

  • Производительность SSD и amp; TRIM:

Функция TRIM очищает блоки SSD, которые больше не используются файловой системой. Это позволит оптимизировать долговременную производительность записи и рекомендуется на SSD из-за их дизайна. Это означает, что файловая система должна быть способна сообщить диску об этих блоках. Опция discard для ext4 выдаст такие команды TRIM , когда блоки файловой системы будут освобождены. Это онлайн-сброс .

Однако это поведение подразумевает небольшие накладные расходы. Начиная с Linux 2.6.37, вы можете избежать использования discard и выбрать вариант batch discard вместо FITRIM (например, из crontab). Утилита fstrim делает это (онлайн), а также параметр -E discard fsck.ext4 . Однако вам понадобится «последняя» версия этих инструментов.

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

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

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

  • Планировщики ввода /вывода:

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

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

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

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

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

CFQ имеет некоторые оптимизации для SSD и если он обнаруживает невращательную которые могут поддерживать более высокую глубину очереди (несколько запросов в полет за раз), [. ].

Кроме того, планировщик Deadline пытается ограничить неупорядоченные движения головы на вращающихся дисках, основываясь на номере сектора. Цитирование ядра doc deadline-iosched.txt , fifo_batch описание опции :

Запросы сгруппированы в «пакеты» определенного направления данных (чтение или запись), которые обслуживаются в порядке увеличения сектора.

Однако настройка этого параметра на 1 при использовании SSD может быть интересной:

Этот параметр настраивает баланс между задержкой между запросами и совокупная пропускная способность. Когда низкая латентность является основной проблемой, чем меньше (где значение 1 дает первостепенное значение поведение). Увеличение fifo_batch обычно повышает пропускную способность, при стоимость изменения латентности.

Некоторые предложить , что мало разница в производительности между разными планировщиками. Тогда почему бы не рекомендовать справедливость ? когда CFQ редко работает на скамейке . Тем не менее, на настольных настройках вы обычно будете испытывать лучшую отзывчивость с использованием Deadline под нагрузкой, из-за своей конструкции (возможно, при более низкой пропускной способности).

Тем не менее, лучший тест попытается использовать Deadline с fifo_batch = 1 .

Чтобы использовать Deadline на SSD по умолчанию, вы можете создать файл, например /etc/udev.d/99-ssd.rules , как показано ниже:

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

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

Читайте также:  Почему не работает ориджин

Ext4
Ext4 — это еще одна файловая система, поддерживающая SSD. Он считается стабильным с 2.6.28 и достаточно зрелым для ежедневного использования. В отличие от Btrfs, ext4 автоматически не определяет природу диска; пользователи должны явно включить поддержку команды TRIM, используя disard 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 не является основанием не использовать эту зрелую и отличную файловую систему.

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

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

Твердотельные накопители удивительно быстры и лишены каких-либо механических частей, мобильны, что делает их бесшумными, поддерживают гораздо лучшую вибрацию и удары и не затрагивают (или почти не затрагивают) такие проблемы, как фрагментация файловой системы. Но, конечно, необходимо учитывать ряд особенностей, чтобы максимально увеличить пользу и продлить их жизнь.

Размеры разделов

Размеры разделов должны быть кратны 512 МБ. Кроме того, настоятельно рекомендуется создать раздел на жестком диске для хранения данных в /home. А также наличие как минимум двух разделов, где в одном мы будем хранить /boot, а остальное будет /.

Мы поставим /home на жесткий диск, из-за некоторых недостатков, которые приходят с дисками SSD, т.к. они теряют скорость записи, когда место на диске подходит к концу. Эта проблема исправляется с выходом новых драйверов, которые лучше управляют очисткой данных, но на данный момент она все еще существует.

Форматирование разделов

Более целесообразными являются следующие форматы:

  • ext4 (рекомендуется)
  • btrfs
  • f2fs
  • xfs
  • jfs

Все эти форматы поддерживают TRIM. Зачем так важен TRIM? Потому что он позволяет операционной системе сообщать какие блоки данных не используются и могут быть удалены. Это имеет особое значение в случае твердотельных накопителей, поскольку флэш-память типа NAND, которые используют в SSD, не может перезаписать существующие данные. Прежде чем записывать новые данные поверх существующих, необходимо сначала их удалить. Эта проблема усугубляется тем, что минимальной единицей стирания является блок, так как единицей минимальной записи является страница (блок-64 страницы).

Это означает, что с течением времени диск SSD будет, определенным образом фрагментироваться внутри (не так, как традиционные жесткие диски), являясь страницами с пустыми блоками, которые в какой-то момент, даже когда у вас есть свободное пространство на SSD, не будут пустыми страницами для записи. Это снизит производительность, за счет которой для записи новых данных будет та группа блоков, которая рассредоточена, копируя их в буферную память, стирая и собирая вместе с ними все снова на одной странице.

При удалении файла ОС помечает его как удаленный в файловой системе, но не переданный на твердотельный диск. Именно поэтому TRIM, который, как мы уже говорили, отвечает за информирование твердотельного диска, который удаляется, помогает нам избежать вышеупомянутых проблем.

Конфигурация отделки

Сначала мы проверим, поддерживает ли наш SSD TRIM следующей командой:

# hdparm -I /dev/sdX | grep TRIM

Где X-буква вашего SSD. Ответ команды будет ясен, если он показывает вам что-то подобное, как на следующем скриншоте есть поддержка TRIM, если ничего не появляется у вас её нет.

Вы можете настроить TRIM тремя способами: вручную, настроив fstab и запланировав выполнение fstrim с помощью cron или systemd.

Читайте также:  Загудел ноутбук что делать

Вручную

Мы установим пакет fstrim:

# aptitude install fstrim

Выполните следующую команду, чтобы включить TRIM:

# fstrim -v [Точка монтирования]

В точке монтирования вы указываете, где монтируется наш SSD. Можно указать просто / (Root).

Настройка /etc/fstab

С помощью опции discard в файле fstab мы можем настроить наш SSD для использования TRIM. Просто добавить опцию как показано в примере ниже:

Планирование выполнения fstrim

Наиболее эффективным методом является запланированное выполнение fstrim, которое позволяет нам пользоваться его преимуществами без какого-либо влияния на производительность.

С помощью cron

Создаём следующий файл /etc/cron.daily/trim и добавляем в него:

Предоставление прав для выполнения:
# chmod +x /etc/cron.daily/trim

С использованием systemd

Если ваш Linux использует systemd, вы можете сделать это следующим образом. Сначала мы создаем файл в /lib/systemd/fstrim.service который содержит следующее:

Примечание: где / точка монтирования корня (root).

Используем systemctl для запуска службы:

# systemctl start fstrim

Монтирование разделов

Еще одна вещь, которую мы рассмотрим, это монтирование разделов. В конфигурационном файле /etc/fstab есть опция noatime для повышения производительности диска.

Использование параметров noatime, nodiratime или relatime может повысить производительность диска. По умолчанию Linux хранит запись (записывает на диск) каждого чтения, сделанного atime. Это полезно при использовании Linux для серверов, но не имеет большого значения при использовании для рабочего стола. Недостатком опции по умолчанию atime является то, что даже чтение файла из кэша памяти (чтение из памяти, а не с диска напрямую), даже в этом случае, он будет зарегистрирован! Использование параметра noatime полностью отключает обновление времени доступа к файлам при каждом чтении файла. Мы не добавляем два варианта noatime и nodiratime, потому что noatime уже включает nodiratime.

Временные каталоги

Также настройки временных каталогах (для/tmp, /VAR и/boot, в папке /var/lock и /var/log) в оперативной памяти, чтобы избежать записи на диск. Если у вас мало оперативной памяти, еще лучше иметь раздел на жестком диске на всю жизнь. Параметры монтирования noatime,nodiratime, nodev и nosuid.

Настройка GRUB: вход/выход планировщика

В целом, подавляющее большинство Linux используют CFQ для планирования устройств ввода / вывода. Однако для дисков SSD есть и другие варианты, которые являются более удачными:

  • noop (рекомендуется)
  • deadline

Если SSD будет единственным носителем информации компьютера, мы настроим GRUB изменяя файл /etc/default/grub.

Мы будем искать в файле что-то вроде «GRUB_CMDLINE_LINUX=»» и оставим его так же:

Сохраните изменения и обновите grub с помощью этой команды:

# update-grub

SWAP или без SWAP?

Если не волноваться за срок полезного использования, мы все равно можем настроить своп (в том случае, если у нас очень мало оперативной памяти) но с несколькими нюансами:

  • Уменьшить процент использования SWAP/RAM 1%
  • Уменьшить значение блоков данных кэша со 100 до 50
  • Изменить частоту обращений к диску от 500 до 1500

Для этого мы модифицируем следующий файл /etc/sysctl.conf и меняем или добавляем эти значения:

Сокращение количества проверок файловых систем

Как известно, каждый раз при запуске система автоматически выполняет проверку файловых систем на предмет того, все ли в порядке.

Поскольку мы стремимся ограничить использование диска на SSD, было бы неплохо сделать чтобы эти проверки происходили реже, изменяя интервал времени или количество перезапусков, которые проходят между одним и другим.

С помощью tune2fs вы можете изменить это значение, а также сделать много других вещей, всегда указывая на раздел, на котором мы хотим действовать:
# tune2fs -c 80 /dev/sda1 (каждые 80 перезагрузок)
# tune2fs -i 2m /dev/sda1 (каждые 2 месяца)
# tune2fs -i 2w /dev/sda3 (каждые 2 недели)
# tune2fs -i 2d /dev/sda1 каждые 2 дня)
# tune2fs -l /dev/sdb1 (просмотр полной записи раздела)
# tune2fs -l /dev/sda3 | grep ‘Last checked’ (просмотр даты последнего сканирования)
# tune2fs -l /dev/sda3 | grep -i check (время проверки)
# tune2fs -i 0 /dev/sda3 (отключить проверку)

Испытание Скорости

С помощью команды hdparm-Tt /dev/sdX , мы можем сделать тест скорости записи, так что вы можете увидеть разницу я сделал два теста, один на SSD и другой на жестком диске. Вот результат:

/dev/sdb:
Timing cached reads: 2070 MB in 2.00 seconds = 1034.96 MB/sec
Timing buffered disk reads: 646 MB in 3.00 seconds = 215.11 MB/sec

/dev/sda:
Timing cached reads: 28842 MB in 2.00 seconds = 14435.64 MB/sec
Timing buffered disk reads: 1232 MB in 3.01 seconds = 409.76 MB/sec

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.