Используя любой смартфон, ноутбук или робопылесос, то есть в любом электронном устройстве существует файловая система. Без нее не будут работать сайты, не станет ваших фото-видео с домашними любимцами и тому подобное. Сегодня попробуем кратко разобраться в основных терминах и проведем тестирование выбора кластера для фрагментации дисков.
Содержание
Для начала нужно понять один факт. Когда пользуется приложениями Windows Explorer, Диспетчером файлов или Finder — это лишь вершина айсберга. Большинство не видит невидимые «шестеренки» работы этих приложений. Более того, без файловых систем ОС просто бы не существовали, потому что как ни парадоксально, они также состоят из файлов.
Файловая система (File System) — это способ организации данных, которые применяет операционная система для сохранения информации в виде файлов на различных носителях информации (HDD/SSD, дискеты, флеш накопители и т.д.). Нужно понимать, что эта технология не состоит из одного термина, а это сборник других важных функций. Поэтому существует много дополнительных понятий, которые должны раскрыть нашего «главного героя».
Секторы, кластеры (часто называют блоки) — фундаментальные единицы хранения данных и имеют ключевое значение для эффективности хранения информации и совместимости с различными ОС. Именно в этих областях хранятся наши данные. Об этом подробнее расскажем в соответствующем разделе ниже.
Для отслеживания размещения файлов внутри кластеров применяется метод под названием Индексация. Необходима для физического запоминания размещения файла на диске и последующего быстрого поиска, открытия, редактирования или удаления. Пример из жизни: библиотека с книгой-справочником, в которой указан шкаф, полка и соответствующее место книги. Обычно, в файловых системах применяют таблицы, которые хранят различную информацию о файле. В exFAT она называется File Allocation Table, тогда как в NTFS — Master File Table. Со временем появились более сложные B-Tree/ B+Tree структуры, обеспечивающие лучшую поддержку носителей с большим объемом памяти.
В спокойный рабочий день пользователь открывает Проводник и видит отсортированные файлы перед собой. Так вот, о каждом файле в системе ведется учет дополнительной информации (Мета-данные): дата и время создания, права доступа, размеры файла и тому подобное. Например, для музыкальных произведений можно дополнительно вносить автора, название песни, альбом, битрейт и прочее. Для лучшей структуризации файлов не обойтись без Каталоговой системы. Все наши файлы будут храниться в директориях (папках), которые также будут иметь свои метаданные.
Как уже упоминали, в метаданных сохраняются права доступа к файлам благодаря механизму Контроль доступа. Создание, чтение, просмотр, удаление являются обычными свойствами файлов и папок. Поэтому необходимо четко указывать, какому из пользователей разрешено делать такие действия: локальный пользователь, Администратор или определенное приложение (антивирус). Часто необходимо для защиты важных системных данных от случайного удаления, аудита и логирования доступа.
Для обеспечения максимального уровня секретности или нераспространения личной информации, файловые системы поддерживают Шифрование данных. Происходит кодирование необходимых файлов, папок или даже дисков, а затем благодаря специальным «ключам» происходит дальнейшее декодирование.
Размеры файлов не всегда совпадают с кластерами в файловых системах. Особенно, это касается файлов относительно больших размеров с видео, которые могут занимать не один гигабайт. Поэтому был разработан механизм Фрагментации, когда данные разделяются на меньшие части. По понятным причинам, эти маленькие данные хранятся непоследовательно на диске: удалили один файл, заменили на больший и часть занимает предыдущие кластеры, а другие где-то в новом.
После частого или слишком долгого пользования диском, файлы могут быть настолько сильно раздроблены, что падает общая скорость системы в целом. Особенно, это было критично для HDD. Для дальнейшего противодействия этому изобретено Дефрагментацию — процесс объединения и упорядочения фрагментов файлов на диске.
Сюда можно добавить функцию TRIM, благодаря которой ОС уведомляет SSD о занятых или чистых секторах в файловой системе.
Другим известным методом для повышения скорости работы является Кэширование данных. Он позволяет записывать и сохранять используемые файлы, папки, метаданные и тд. Для быстрого повторного использования.
Интересным является механизм Copy-on-Write (CoW) — это метод управления общими ресурсами. Если несколько приложений открывают одни данные, для каждого из них не нужно создавать собственную копию «родительского» файла. Зато когда одно из приложений изменит что-то в файле, тогда гарантируется создание отдельной копии именно для него.
Только существует определенная проблема CoW. Поскольку создает отдельный файл для редактирования в каждом приложении, количество таких файлов растет. Поэтому сильнее увеличивается фрагментация данных.
В общем, существует несколько основных файловых систем для обычных пользователей компьютеров и смартфонов. А именно: APFS, exFAT, NTFS, ext4 и F2FS.
Как можете догадаться, бренд Apple всегда любит что-то свое. Не стала исключением APFS или Apple File System. Была представлена в 2017 году и используется во всех актуальных операционных системах и устройствах: iOS, macOS, tvOS и watchOS.
exFAT (Extended File Allocation Table) представлена в 2006 году как замена для откровенно устаревшей FAT32, которая известна немолодым пользователям тем, что не поддерживала файлы размером более 4 ГБ. Сейчас exFAT применяется как файловая система для переносных средств данных (карты памяти, внешние диски, USB флеш накопитель), так как поддерживается большинством операционных систем без особых проблем.
NTFS (New Technology File System) была разработана Microsoft на замену FAT32 для собственной операционной системы Windows еще в 1993 году. Полный переход к ней длился много лет, точнее, вплоть до выхода Windows XP в 2001г. Используется до сих пор для создания и функционирования системных дисков в последней Windows 11.
В устройствах с операционной системой Linux (например, в ArchLinux) обычно установлена файловая система ext4 (Fourth Extended File System). Представлена в 2006г. на замену ext3. Она также используется в Android ОС. Google в дополнение применяет F2FS (Flash-Friendly File System) разработанную компанией Samsung в 2012 году. Причиной создания является лучшая поддержка NAND накопителей и оптимизация для увеличения скорости чтения/записи данных.
Переходим с теоретических к более практическим терминам, которые можно увидеть на любом компьютере без особого поиска Сектором называют наименьшей физической (аппаратный) единицей хранения данных на ваших HDD/SSD. Размер сектора оставит от самих записывающих устройств: от 512 байт до 4096 байт (4 КБ) в современных системах.
Коллегой сектора по работе является Кластер (Блок) — это наименьшая логическая единица в файловой системе для выделения пространства для файлов с данными. Кластер обычно объединяет несколько секторов в один (8 секторов по 512 байт равны 1 кластеру на 4096 байт), но и могут быть одинаковыми по размерам. Далее следуют Директории (Папки), Тома (Диск). Это все тоже логические единицы. Диск С, на котором стоит ОС Windows, хороший визуальный пример такой структуры.
Особенностью обеих единиц хранения данных выступает использование всего объема на маленький файл. На скриншотах ниже вы можете увидеть простой пример, где файл RDP весит 3 КБ. Вот только на одном диске с кластером на 4 КБ, что больше на 1 КБ. Отдавать 25% памяти не очень хочется. А вот с кластером на 32 МБ (32768 КБ) теряется 99,99% потенциального места на другой файл.
Одинаковый файл на разных кластерах (1024 или 32768 КБ) занимает разное количество памяти на диске.
Логично было бы считать, что нужно выбрать наименьший кластер и отформатировать диск. Другая сторона медали открывает термин Внутренняя фрагментация. Например, нужно сохранить 50 МБ (51200 КБ) песню. Кластеры объемом по 4 КБ. В результате получим 51200/4 = 12 800 кластеров нужно потратить. Теперь включаете песню и слышите, что она несколько «подлагивает». Причиной этого является большая таблица, которая хранит данные переходов в поисках каждого фрагмента. Поэтому меньшие кластеры требуют большего количества таблиц хранения файлов.
При форматировании дисков через стандартное средство Windows, пользователям позволяют выбирать имя, вид файловой системы и выбор размера кластера. Windows или производитель диска последние два параметра указывает по умолчанию. Но какие преимущества получает потенциальный покупатель, если захочет самостоятельно выбрать размер кластера? Давайте попробуем проверить.
Обычное окно Форматирование. Для его открытия нажимаем правой клавишей мыши на диск в Проводнике (не на диск С), выбираем Форматировать.
Возьмем файловую систему exFAT, которая наиболее совместима среди других и позволяет пользоваться диском на большинстве устройств пользователя: Windows, Linux, MacOS, Android или iOS/iPadOS. Возьмем следующие размеры кластеров: 64 КБ, 128 КБ, 256 КБ, 512 КБ, 1024 КБ (1 МБ), 8192 КБ (8 МБ) и 32768 КБ (32 МБ). Сразу скажем, что последние два значения лучше не применять не по причине скорости, а по причине выделения большого количества памяти на потенциальные мелкие файлы. Об этом говорили в предыдущем разделе.
Тестировать будем в приложении Atto Disk Benchmark. В нем мы указываем скорость Чтения и Записи на диск с учетом разного объема Буфера Ввода/Вывода. Таким образом увидим потенциальную разницу в передаче мелких, средних и больших файлов. Базовый размер файла установлен на 16 ГБ, чтобы имитировать большие файлы игр или фильмы/сериалы хорошего качества.
Форматирование тестового SSD происходит около одного часа для каждого размера кластера.
Результаты тестов перед вами в виде графиков. В некоторых случаях фиксировались аномальные падения производительности. Точная их природа не зафиксирована, однако даже после повторного тестового круга результаты могли как меняться, так и оставаться теми же самыми. Например, в записи кластера на 256 КБ резкое падение при 24 МБ буфере. При повторном тестировании результат изменился к лучшему, однако произошло падение на подобных буферах, что для кластеров 128 КБ и 32768 КБ. Однако, оставить такое случайное падение вниз необходимо.
Рассмотрим два общих графика тестирования. Начнем с Чтения данных. В общем, результаты на графике для всех кластеров отличаются не очень сильно. Где-то чуточку лучше, где-то хуже. Разницу до 10 МБ/с трудно заметить. Вот только хорошо видно, что для считывания мелких файлов лучше подходят кластеры на 64 и 128 КБ.
Перейдем к записи файлов. Здесь все немного сложнее, поскольку некоторые «игроки гонки» показывают падение производительности на похожем «участке трассы». А именно, на буфере 64 КБ — 1 МБ для кластера 32768 КБ, 32-512 КБ в 128 КБ и 256 КБ. Снижение производительности также фиксировалось на 48 МБ для кластеров 512, 1024, 8192 КБ. Тест в таком случае делался повторно, падение все еще было.
После тестирования можем сказать, что явного фаворита нет. Чтение данных не оказалось проблемой для них, а с записью — таки существуют. На тестовом SSD стабильно хорошие результаты показали такие кластеры на 512, 1024 и 8192 КБ. Посмотрим на них подробнее:
Только проблемой последних трех кандидатов о которой говорили ранее — мелкие файлы будут занимать весь объем. А наибольшее быстродействие выполняют 64 и 128 КБ кластеры, особенно для маленьких файлов. Тогда для них существует другая упомянутая выше проблема — высокий уровень фрагментации уменьшает надежность и долговременную работу устройства.
Видно, что победителем для большинства покупателей станет кластер на 256 КБ. Как ни странно, Windows по умолчанию ставит именно это значение. Однако, абсолютно никто не запрещает устанавливать другой объем.
Без файловых систем мы бы не смогли просматривать фотографии, видео, играть в игры или общаться по мобильному телефону. Поэтому надо уважать одну из главных компонентов современного цифрового мира.