Библиотека сайта rus-linux.net
Какая система партиционирования быстрее работает на дешевой флешке?
Оригинал: What's The Fastest Partition Scheme On Cheap Flash Media?Автор: David North
Дата: 10 ноября 2010
Свободный перевод: Алексей Дмитриев
Дата перевода: 27 ноября 2010
Если вы прочли статью "Какую файловую систему поставить на флешку для Linux", то вы уже знаете, что файловая система Ext4 может сильно увеличить скорость операций с флешкой. Но вы ведь линуксоид, поэтому, как всегда, хотите большего. Чем еще можно ускорить работу?
Ответ: использованием GPT (GUID Partition Table) вместо обычного MBR (Master Boot Record). Это сильно повысит скорость работы флешки практически с любой файловой системой ≈ кроме Ext4.
Начнем с просмотра результатов теста различных файловых систем из упомянутой статьи. Числа означают время в секундах, потребное для записи полной, несжатой директории ядра linux 2.6.34 на новейшую Class 10 SD карту, а затем на считывание ее (после удаления кэшей). Чем число меньше, тем работа быстрее. Вот что происходит с традиционной системой партиционирования MBR:
Ext2 Ext3 Ext4 Reiser3 VFat NTFS Write 368 501 125 582 518 174 Read 53 60 53 72 98 118
А вот тот же тест, но уже с новой системой GPT:
Ext2 Ext3 Ext4 Reiser3 VFat NTFS Write 346 433 113 725 512 123 Read 51 55 53 64 68 113
Почти все ФC дали прибавку скорости! Ext4 по-прежнему легко лидирует, но уже не с таким отрывом. NTFS заметно ускорила запись, а VFat прибавила при чтении (хотя почти не ускорила при записи). Что до Reiser, то она худшая по записи, но прибавила при чтении. Флешки непредсказуемы, но, похоже, Reiser еще непредсказуемей.
В чем же подвох?
А что с другой стороны медали? Почти ничего. Все современные системы могут работать с GPT, так что проблем с простым обменом файлами не возникнет. Программы партиционирования Gnome и KDE умеют создавать таблицы разделов GPT, а если вы фанат командной строки, то можете употребить программу gdisk. Умеют загружаться с GPT как Linux (GRUB или Syslinux/Extlinux), так и Apple компьютеры.Подозрительно, что в последнем предложении отсутствует Windows. Большинство версий этой операционной системы не будут загружаться с дисков, отформатированных GPT. Также возможны различные трудности с другими ОС.
Говоря в общем, уверенно загружаться с GPT носителей будут только Linux или x86 Apple, все остальное в зоне риска. Для большинства линуксоидов это не вопрос.
Почему это происходит?
Почему изменение системы разделов увеличивает производительность флеш носителей? Честно говоря, мы не вполне понимаем. Ted Ts'o ≈ ведущий разработчик и мантейнер Ext4 ≈ подозревает, что дело тут в стирании блоков.Флеш память работает не так, как вращающийся жесткий диск. Прежде чем записать ячейку памяти, она должна сначала стереть предыдущую запись. Обычно операция стирания осуществляется блоками по 128 Кб (такие большие блоки применяюся только для стирания, не для записи и чтения). Процесс стирания блоков замедляет работу памяти.
Возникает неприятный вопрос: что будет, если таблица разделов не позволит синхронизировать блоки файловой системы с блоками стирания? В некотрых случаях это может привести к необходимости стирать и перезаписывать каждый блок дважды, когда операция подходит к несовпадающим границам блоков.
Система создания разделов MBR обычно создает разделы начиная с сектора 63 и вполне может разметить диск так, чтобы блоки стирания тоже начинали отсчет с этого сектора. Производители твердотельных дисков (Solid State Disks) прибегают к головоломным ухищрениям, чтобы обеспечить синхронизацию и выравнивание блоков независимо от системы партиционирования. Представляется маловероятным, чтобы такие сложные системы встраивались в контроллер дешевой флешки.
А вот система создания разделов GPT автоматически выравнивает начала блоков, так что проблема отпадает.
Если предположение о синхронизации блоков верно, то легко объяснить увеличение скорости записи. Совсем не так понятно, почему увеличиваются скорости считывания для VFAT и Reiser, или почему скорость записи для Reiser падает. Так что, похоже дело тут не только в выравнивании блоков. Не говоря уже о том, что я не устаю повторять: флешки непредсказуемы. Вы никогда не угадаете, как они себя поведут.
Что такое GPT?
Таблица разделов GUID (Globally Unique IDentifier) является частью системы EFI (Extensible Firmware Interface), разработанной Intel на смену катастрофически устаревшему PC BIOS, который запускает большинство наших компьютеров. Причем запускает очень медленно. Уже сейчас компьютеры Apple используют новую систему, а начиная с 2011 года, возможно, множество x86 компьютеров (Intel, Apple, AMD, Dell, Microsoft и Hewlett-Packard) обзаведутся новой системой запуска.Это позволить преодолеть проблему адресации дисков размером более 2 терабайт (для MBR это предел, а для GPT ≈ пустяки). Новая система должна быть быстрее и гибче, например отпадет ограничение числа первичных разделов (сейчас только 4).
Как проводились тесты
Более восьмидесяти испытаний проходили на восьми компьютерах с двенадцатью операционными системами. Проверялось десять флеш носителей, некоторые с собственным USB портом, другие в одном из пяти картридеров. Применялись различные степени нагрузки (объема работы). Во всех тестах преимущество GPT было отчетливо заметно.Испытания проводились с жеского диска на флешку, с флешки на флешку, с виртуального диска на флеш и обратно.Чтобы повторить наши опыты скачайте linux 2.6.34 в виде bzip архива и запустите команду
time rsync -rv откуда -> куда && time sync && time umount flash
Лучше запускать от имени root.