какая файловая система linux лучше всего работает с ssd

<p>из вики:</p><blockquote> <p>жизненно важная функция trim поддерживается ос linux, начиная с ядра 2.6.33 (доступно в начале 2010 года). тем не менее, поддержка среди различных файловых систем все еще противоречива или отсутствует. правильное выравнивание разделов также не выполняется установочным программным обеспечением.</p> </blockquote><p>итак, какая файловая система лучше всего работает для ssd и поддерживает выравнивание разделов trim + во время установки и доступна в ubuntu?</p>

<p><strong> файловая система ext4 + trim: </strong></p><ul> <li>ext4 с trim повышает производительность за счет сокращения ненужных циклов записи на накопитель ssd, поскольку они ограничивают циклы записи-перезаписи.</li> <li>ubuntu и некоторые другие версии linux поддерживают ext 4 с trim из коробки.</li> </ul><p><strong> раздел swap: </strong></p><ul> <li>убедитесь, что у вас нет пространства swap на ssd, чтобы уменьшить циклы записи.</li> <li>если у вас есть механический привод, вы должны создать пространство swap на механическом диске и избегать его на ssd.</li> </ul><p><strong> выравнивание раздела: </strong></p><ul> <li>раздел должен начинаться с чистой границы в 1 мб, чтобы размер блока файловой системы совпадал с размером блока ssd.</li> </ul><p>поэтому используйте<strong> ext4 + trim </strong>с swap на механическом жестком диске или без swap на ssd.</p><p>вышесказанное можно реализовать, обратившись к источнику: <a href="http://apcmag.com/how-to-maximise-ssd-performance-with-linux.htm">как максимизировать производительность ssd</a> .</p>

<h1>короткий ответ</h1><ul> <li> <p><strong> выберите <em>ext4</em> </strong>и либо<strong> смонтируйте его с параметром <code>discard</code> для <a href="http://en.wikipedia.org/wiki/trim">trim</a> support, либо используйте fitrim </strong>(см. ниже). также используйте опция <code>noatime</code>, если вы боитесь "износ ssd".</p> </li> <li> <p><strong> не изменяйте свой планировщик ввода/вывода по умолчанию (cfq) <em>на серверах с несколькими приложениями</em> </strong>, поскольку он обеспечивает справедливость между процессами и имеет автоматическую поддержку ssd. тем не менее,<strong> используйте deadline <em>на рабочих столах</em> </strong>, чтобы улучшить отзывчивость под нагрузкой.</p> </li> <li> <p>чтобы легко гарантировать правильное выравнивание данных,<strong> начальный сектор каждого раздела должен быть кратным 2048 </strong>(= 1 миб). вы можете использовать <code>fdisk -cu /dev/sdx</code> для их создания. в последних выпусках он автоматически позаботится об этом за вас.</p> </li> <li> <p><strong> дважды подумайте, прежде чем использовать своп на ssd. </strong>вероятно, он будет намного быстрее по сравнению со свопом на жестком диске, но он также изнашивает диск быстрее (что может быть не актуально, см. ниже).</p> </li> </ul><h1>длинный ответ</h1><ul> <li>файловые:</li> </ul><p><em>ext4</em> - самая распространенная файловая система linux (в хорошем состоянии). он обеспечивает хорошую производительность с ssd и поддерживает функцию <em>trim</em> (и fitrim), чтобы поддерживать хорошую производительность ssd с течением времени (это очищает неиспользуемые блоки памяти для быстрого последующего доступа к записи). <em> <a href="http://en.wikipedia.org/wiki/nilfs">nilfs</a> </em> специально разработан для флэш-накопителей, но <a href="http://www.phoronix.com/scan.php?page=article&item=linux\_32\_nilfs2">не</a> <a href="http://www.phoronix.com/scan.php?page=article&item=ext4\_btrfs\_nilfs2">действительно</a> работает лучше, чем <em>ext4</em>) \_ в тестах производительности. <em>btrfs</em> все еще считается экспериментальным (и на самом деле не работает лучше <a href="http://www.mayrhofer.eu.org/ssd-linux-benchmark">либо</a> ).</p><ul> <li>производительность ssd и trim:</li> </ul><p>функция <em>trim</em> очищает блоки ssd, которые больше не используются файловой системой. это оптимизирует долгосрочную производительность записи и рекомендуется для ssd из-за их дизайна. это означает, что файловая система должна иметь возможность сообщать накопителю об этих блоках. параметр монтирования <code>discard</code> в <em>ext4</em> будет выдавать такие команды {<em>trim</em>, когда блоки файловой системы освобождаются. это <em>онлайн-сброс</em>.</p><p>однако такое поведение подразумевает небольшую потерю производительности. начиная с linux 2.6.37, вы можете избегать использования <code>discard</code> и выбирать случайное <em>пакетное удаление</em> вместо fitrim (например, из crontab). утилита <code>fstrim</code> делает это (онлайн), а также опция <code>-e discard</code> <code>fsck.ext4</code>. однако вам понадобится «недавняя» версия этих инструментов.</p><ul> <li>износ ssd:</li> </ul><p>возможно, вы захотите ограничить записи на вашем диске, так как ssd имеют ограниченный срок службы в этом отношении. <em>не беспокойтесь слишком много</em>, современные жесткие диски на 128 гб могут поддерживать<strong> по крайней мере </strong>20 гб записанных данных в день в течение более 5 лет (1000 циклов записи на ячейку). лучшие (а также большие) могут длиться гораздо дольше: вы, вероятно, замените его к тому времени.</p><p>если вы хотите использовать <em>swap</em> на ssd, ядро заметит невращающийся диск и <em>рандомизирует использование свопа</em> (выравнивание уровня износа ядра): вы увидите <code>ss</code> <a href="http://apcmag.com/how-to-maximise-ssd-performance-with-linux.htm">solid) состояние) в сообщении ядра, когда включен обмен:</p><blockquote> <p>добавление 2097148k swap на/dev/sda1. приоритет: -1 экстенты: 1 через: 2097148k ss</p> </blockquote><ul> <li>планировщики ввода/вывода:</li> </ul><p>кроме того, я согласен с большинством ответов <em>aliasgar</em> (даже если большая его часть была нелегально?) скопирована с \_ (этот веб-сайт</a> ), но я должен частично не согласиться с <em>планировщик</em> часть. по умолчанию планировщик крайнего срока<strong> is </strong>оптимизирован для вращающихся дисков, так как он реализует <a href="http://en.wikipedia.org/wiki/elevator\_algorithm">алгоритм лифта</a> . итак, давайте проясним эту часть.</p><h2>длинный ответ по планировщикам</h2><p>начиная с ядра 2.6.29, ssd-диски автоматически обнаруживаются, и вы можете проверить это с помощью:</p><pre><code>cat /sys/block/sda/queue/rotational </code></pre><p>вы должны получить <code>1</code> для жестких дисков и <code>0</code> для ssd.</p><p>теперь планировщик cfq может адаптировать свое поведение на основе этой информации. начиная с linux 3.1, документация ядра <code>cfq-iosched.txt</code> file <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/documentation/block/cfq-iosched.txt?id=v3.1#n77">говорит</a> :</p><blockquote> <p>cfq имеет некоторые оптимизации для твердотельных накопителей, и если он обнаруживает невращающиеся носители, которые могут поддерживать большую глубину очереди (несколько запросов в полете за раз), [...].</p> </blockquote><p>кроме того, планировщик deadline пытается ограничить неупорядоченные движения головок на вращающихся дисках на основе номера сектора. цитирование ядра doc <code>deadline-iosched.txt</code>, <code>fifo\_batch</code> <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/documentation/block/deadline-iosched.txt?id=v3.1#n33">описание опции</a> :</p><blockquote> <p>запросы сгруппированы в «пакеты» определенного направления данных (чтение или запись), которые обслуживаются в порядке возрастания сектора.</p> </blockquote><p>однако настройка этого параметра на 1 при использовании ssd может быть интересной:</p><blockquote> <p>этот параметр настраивает баланс между задержкой на запрос и совокупной пропускной способностью. когда первостепенное значение имеет низкая задержка, чем меньше, тем лучше (где значение 1 соответствует поведению «первым пришел - первым обслужен»). увеличение fifo\_batch обычно улучшает пропускную способность за счет изменения задержки.</p> </blockquote><p>некоторые <a href="http://www.danielscottlawrence.com/should-i-changing-my-disk-scheduler-to-noop-from-cfq-for-my-ssd/">тесты</a> <a href="http://www.phoronix.com/scan.php?page=article&item=linux\_iosched\_2012">предполагают</a> <a href="http://www.velobit.com/storage-performance-blog/bid/126135/effects-of-linux-io-scheduler-on-ssd-performance">что</a> существует небольшая разница в производительности между различными планировщиками. тогда, почему бы не рекомендовать <em> <a href="https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=41647e7a91338dba21773a16af7474ef95e0929e">справедливость</a> </em>? когда<strong> cfq редко на рабочем месте </strong>. однако на настольных установках вы, как правило, будете испытывать<strong> лучшую скорость отклика при использовании deadline </strong>под нагрузкой, из-за его дизайна (хотя, вероятно, с более низкой пропускной способностью).</p><p>тем не менее, лучший тест будет использовать deadline с <code>fifo\_batch=1</code>.</p><p>чтобы использовать deadline на твердотельных накопителях по умолчанию, вы можете создать файл, скажем <code>/etc/udev.d/99-ssd.rules</code>, следующим образом:</p><pre><code># 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" </code></pre>

<p>в статье archlinux <a href="https://wiki.archlinux.org/index.php/solid\_state\_drives">твердотельные накопители</a> говорится в разделе <a href="https://wiki.archlinux.org/index.php/solid\_state\_drives#choice\_of\_filesystem">выбор файловой системы</a> :</p><blockquote> <p>существует множество опций для файловых систем, включая ext2/3/4, btrfs и т.д.</p> <p><strong> btrfs </strong><br> поддержка btrfs была включена в основной выпуск 2.6.29 ядра linux. некоторые считают, что он недостаточно зрел для промышленного использования, хотя есть также ранние последователи этого потенциального преемника ext4. пользователям предлагается прочитать статью <a href="https://wiki.archlinux.org/index.php/btrfs">btrfs</a> для получения дополнительной информации.</p> <p><strong> ext4 </strong><br> ext4 - еще одна файловая система, поддерживающая ssd. он считается стабильным с 2.6.28 и достаточно зрелый для ежедневного использования. в отличие от btrfs, ext4 не определяет автоматически характер диска; пользователи должны явно включить поддержку команд trim, используя опцию discard mount в fstab (или с помощью tune2fs -o discard/dev/sdax).</p> </blockquote><p>и btrfs, и ext4 отвечают двум основным требованиям для эффективного использования ssd:</p><ul> <li>файловая система должна иметь возможность выдавать команды ata\_trim на базовый ssd</li> <li>файловая система не должна выполнять ненужные записи на диск</li> </ul><p>для производительности есть два других требования:</p><ul> <li>разделы должны быть выровнены по размеру блока ssd</li> <li>trim должен быть явно включен для каждого отформатированного раздела ext4</li> </ul><p>первый в настоящее время автоматический с большинством установщиков linux. fdisk также создаст разделы на границе 1024 кб, если будет запущен с флагами "-cu".</p><p>второй вариант является автоматическим для btrfs, но для ext4 это делается вручную путем добавления «discard» в список параметров монтирования для каждого раздела ext4 в файле «/ etc/fstab». для получения дополнительной информации см. это <a href="http://lightrush.ndoytchev.com/random-1/howtoconfigureext4toenabletrimforssdsonubuntu">howto</a> .</p><p>на мой взгляд, это потребовало немного возиться с fstab для ext4 - это не причина не использовать эту зрелую и превосходную файловую систему.</p>