Введение
Файловые системы определяют способ хранения данных. От них зависит, с какими ограничениями столкнется пользователь, насколько быстрыми будут операции чтения и записи и как долго накопитель проработает без сбоев. Особенно это касается бюджетных SSD и их младших братьев — флешек. Зная эти особенности, можно выжать из любой системы максимум и оптимизировать ее использование для конкретных задач.
Выбирать тип и параметры файловой системы приходится всякий раз, когда надо сделать что-то нетривиальное. Например, требуется ускорить наиболее частые файловые операции. На уровне файловой системы этого можно достичь разными способами: индексирование обеспечит быстрый поиск, а предварительное резервирование свободных блоков позволит упростить перезапись часто изменяющихся файлов. Предварительная оптимизация данных в оперативной памяти снизит количество требуемых операций ввода-вывода.
Увеличить срок безотказной эксплуатации помогают такие свойства современных файловых систем, как отложенная запись, дедупликация и другие продвинутые алгоритмы. Особенно актуальны они для дешевых SSD с чипами памяти TLC, флешек и карт памяти.
Отдельные оптимизации существуют для дисковых массивов разных уровней: например, файловая система может поддерживать упрощенное зеркалирование тома, мгновенное создание снимков или динамическое масштабирование без отключения тома.
Как определить стиль разделов через «Управление дисками»
Самый простой способ выяснить, GPT или MBR диск установлен на компьютере, это воспользоваться штатным инструментом Windows для работы с жесткими дисками – утилитой «Управление дисками». Запускаем ее через меню «Пуск» (ПКМ – Управление дисками) или с помощью строки «Выполнить» (нажимаем сочетание Win+R на клавиатуре, а потом вводим команду diskmgmt.msc).
В открывшемся окне приложения будут отображены все подключенные к компьютеру устройства хранения информации – физические жесткие диски и USB-накопители. Кликаем правой кнопкой мыши по нужному диску и выбираем пункт «Свойства».
Далее переходим на вкладку «Тома» и находим строку «Стиль раздела». Если там указано «Таблица с GUID разделов», то диск имеет GPT-структуру (GPT расшифровывается как GUID Partition Table).
Если же этот параметр имеет значение «Основная загрузочная запись (MBR)», то используется традиционный метод разметки MBR.
Управление дисками компьютера
Управлять дисками компьютера может понадобиться не только опытному пользователю.
Иногда некоторые из дисков (особенно при использовании на компьютере нескольких винчестеров или устаревших файловых систем типа FAT32) после переустановки системы становятся невидимыми.
И для их поиска придётся зайти в это меню управления.
Управление логическими дисками
С помощью утилиты управления дисками можно включать и отключать различные разделы на подключенных к ПК винчестерах, менять их названия и буквы.
А ещё можно решить здесь проблему с неоткрывающейся флешкой, не пользуясь сторонними программами.
Способ 1 — через командную строку
Самый быстрый способ узнать используется gpt или mbr — нажать сочетание клавиш Win + R , затем ввести там команду diskpart . В открывшемся окне командной строки введите list disk . Перед вами откроется список физических дисков в виде таблицы. Если на интересующем вас жёстком диске пункт GPT обозначен звёздочкой, значит диск GPT. В противном случае это MBR.
Утилита DiskPart
На изображении выполнение команды в Windows 10. Этот способ по моему мнению самый простой, однако если у вас на компьютере установлено несколько жёстких дисков с одинаковой ёмкостью, результаты могут вас запутать. Кстати, этот способ также сработает при установке Windows, просто запустите командную строку командой Shift + F10. Поэтому далее я рассмотрю второй способ как узнать gpt или mbr используется на вашем диске.
Возможности файловой системы
Учет свободных кластеров
Использование связного списка номеров свободных кластеров. В каждом кластере, входящем в список, помещаются номера свободных кластеров и ссылка на следующий кластер из списка. При этом в оперативной памяти достаточно хранить один кластер из списка.
Использование битового массива. Свободные кластеры помечаются 1, а занятые 0 (или наоборот). В оперативной памяти достаточно хранить один кластер битового массива. Выделяемые файлу свободные кластеры располагаются близко друг к другу, что приводит к увеличению быстродействия.
Дисковые квоты
Дисковая квота – максимальное количество файлов и блоков (кластеров), назначаемое пользователю для хранения данных.
Гибкий лимит – при превышении гибкого лимита во время регистрации пользователю выдается предупреждение, и счетчик предупреждений уменьшается на 1. Если счетчик равен 0, то в регистрации отказывается.
Жесткий лимит – лимит который не может быть превышен.
Резервное копирование
Резервное копирование это процесс создания на носителе, предназначенном для восстановления данных в оригинальном месте их расположения в случае их повреждения или разрушения.
Существуют следующие способы повышения эффективности и удобства резервного копирования:
- Сохранение не всей файловой системы, а только некоторых каталогов.
- Инкрементное резервное копирование: сохраняются только файлы, изменявшиеся после последнего резервного копирования.
- Хранение резервных копий на других носителях, а так же в удаленном месте.
- Сжатие резервируемых данных.
- Быстрое фиксирование состояния файловой системы путем копирования критических структур данных для решения проблемы изменения данных во время резервного копирования.
- Возможность восстановления в исходное место размещения, в другое место с сохранением структуры каталогов и без сохранения структуры.
Физическое резервное копирование это последовательное копирование всех кластеров диска.
Логическое резервное копирование это проверка каталогов и сохранение содержащихся в них информации.
Преимущества физического копирования:
- простота реализации;
- высокая скорость.
Недостатки:
- резервирование свободных кластеров;
- невозможность восстановления отдельных файлов;
- невозможность инкрементного резервного копирования.
Логическое резервирование происходит следующим образом:
- Резервируются файлы, которые были изменены. Резервируются каталоги, содержащиеся в пути к этому файлу.
- Создается битовый массив, индексированный по номеру индексного дескриптора.
- Рекурсивно исследуется каталоги, пометки снимаются с каталогов, в которых нет модифицированных файлов и каталогов.
- Резервируются все помеченные каталоги, перед каталогом записывается его атрибуты.
- Резервируются все помеченные файлы, перед файлом записываются его атрибуты.
- Исследуются все элементы начального каталога и помечаются модифицированные файлы и все каталоги, в которых рекурсивно ищутся все модифицированные файлы.
Далее создается резервная копия.
Восстановление файловой системы из резервной копии происходит следующим образом:
- Создается пустая файловая система.
- Восстанавливаются данные последней полной архивации, сначала каталоги, а затем файлы.
- Восстанавливаются данные из инкрементных резервных копий.
- Восстанавливается список свободных кластеров.
Теперь вы знаете основы файловых систем.
Проблемы с установкой
Если установка «десятки» на жёсткий диск прекратилась появлением ошибки о том, что инсталляция Windows 10 в системе UEFI на MBR-разделы невозможна, для продолжения необходимо преобразовать GPT в MBR. С проблемой сталкивается большинство пользователей, которые не выполнили преобразование до начала инсталляции ОС.
Делается это при помощи набора команд, выполненных через командную строку.
Чтобы конвертировать диск, необходимо перезагрузить компьютер, и в программе инсталляции, когда появится кнопка «Установка», кликнуть «Восстановление системы».
Имейте в виду, что выполнение инструкций, приведенных в следующем шаге, очистит ваш жесткий диск от всей информации и преобразует таблицы его разделов в новый стандарт GPT с невозможностью восстановить что-либо хранящиеся на винчестере до конвертирования.
- После открытия командной сроки последовательно вводим в нее следующую цепочку системных команд:
- diskpart – запуск утилиты для работы с разделами;
- list disk – визуализация списка томов с целью выбрать будущий системный диск для преобразования;
- select disk X – выбор нужного тома;
- clean – очистка активного раздела под номером Х;
- convert mbr – конвертирование mbr-раздела;
- create partition primary size xxxxxxx – создаем новый раздел заданного в байтах объема;
При вводе размера тома учитывайте, что 1 Гб = 1024 мегабайтам, поэтому для получения диска объемом 50 Гб его размер необходимо два раза умножить на 1024.
- active – делаем его активным;
- format fs=ntfs quick – выполняем быстрое форматирование в ntfs;
- assign – диск будет носить буквенную метку первой свободной буквы английского алфавита, начиная с «d»;
- exit – выход из командной строки Windows 10.
Жмите «Обновить» для повторного получения свежей информации про диск и его разделы.
Если установка Windows 10 на раздел GPT не осуществилась, и появилось знакомое окно, дополнительно необходимо выполнение нескольких условий:
- должна осуществляться установка 64-х битной системы;
- компьютер нужно включать в режиме U
Скорее всего установка «десятки» невозможна из-за второго фактора.
- Для ее решения необходимо зайти в UEFI, что осуществляется, в основном, клавишами F2 (для ноутбука) или Del (для ПК).
- Находим и активируем (устанавливаем значение как «Enable») функцию загрузки UEFI.
Обычно, она располагается в разделе BIOS Features или же BIOS Setup.
Переключаем режим функционирования SATA в AHCI вместо режима IDE. Чаще всего изменение этой опции не требуется, но проверить на всякий случай следует.
Сохраняем новые настройки.
В различных версиях UEFI варианты настроек могут располагаться в разных разделах и даже носить разные названия.
После этого установка Windows 10 на раздел с новым стандартом размещения файловых таблиц осуществляется, как обычная установка «десятки».
Команда file — мгновенное определение типа любого файла
В Linux есть команда file с огромной базой сигнатур, которая очень быстро определяет тип файла:
Чтобы узнать, что за файл без расширения, выполните команду вида:
file /ПУТЬ/ДО/ФАЙЛА
Например:
file file1
Вывод:
file1: Microsoft Word 2007+
То есть это текстовый файл офисного пакета Microsoft Office.
Можно указать сразу несколько файлов для проверки или использовать подстановочные символы. Например, следующая команда проверит типы всех файлов в текущей папке:
file *
У программы file имеются опции, подробности о них смотрите в отдельной статье «Инструкция по использованию команды file».
Как определить тип данных, если у файла нет расширения
Если у файла нет расширения, то единственным вариантом определения его типа остаётся содержимое этого файла. Можно попробовать добавлять различные расширения к имени файла и пытаться открыть соответствующими для этого расширения программами — этот вариант медленные и неэффективный.
Определённые типы бинарных файлов могут иметь одинаковый набор байтов — по этим байтам можно сопоставить тип файлов. И именно данный метод и применяется программами, предназначенными для определения типа данных. Специфичные байты как правило располагаются не в самом начале файла, поэтому кроме самих байтов, нужно знать смещение от начала, где эти байты должны находиться. Некоторые программы в дополнении к байтам для идентификации ещё имеют список для проверки на ложное срабатывание.
Такие паттерны на английском часто называют magic — это пошло от «magic number» в исполнимых файлах. Эти файлы имеют «магическое число», хранящееся в определённом месте рядом с началом файла, которое сообщает операционной системе UNIX, что файл является двоичным исполняемым файлом и каким именно из нескольких типов. Концепция «магического числа» была применена к другим бинарным файлам. То есть файлы одинакового типа имеют одинаковую последовательность байтов в определённом месте от начала файлов.
Файл с сигнатурами, описывающими какие именно байты, на каком расстоянии от начала файла характерны для файлов того или иного типа, обычно называют magic file.
Чтобы понять количество проделанного труда при поиске уникальных байтов, обязательно присутствующих в тех или иных файлах, посмотрите на магический файл для определения файловых систем https://github.com/file/file/blob/master/magic/Magdir/filesystems
Это только один файл из перечня различных типов файлов: https://github.com/file/file/tree/master/magic/Magdir
Кроме магических чисел могут применяться и другие техники, например, программа file для проведения тестов файловых систем также может использовать системный вызов stat. Тип текстовых файлов определяется по содержащимся в них строкам (например, это может быть PHP код, файл в XML или HTML разметке, JSON и так далее).
Седлаем SD-карту
В этой части мы будем взаимодействовать с существующим драйвером контроллера SD-карты для Raspbrerry Pi 3, используя Foreign function interface или FFI для краткости. О FFI в Rust можно читнуть в . Помимо этого мы создадим глобальный дескриптор для файловой системы в нашей операционной системе. Работать будем в основном в .
Foregin Function Interface
FFI в Rust позволяет коду взаимодействовать с программным обеспечением, написанным на других языках программирования и наоборот. Внешние, по отношению к Rust, элементы объявляются в блоке :
Тут объявляется внешняя функция и внешняя глобальная переменная . Использовать их можно следующим образом:
Обратите внимание, что тут требуется использовать блок. Rust требует этого, поскольку он не может гарантировать правильность указанных объявлений
Компилятор слепо подставляет эти вызовы функций и взаимодействия с переменными. Другими словами, как и в любых других случаях использования небезопасного кода, Rust предполагает, что вы всё сделали правильно. При этом всём на этапе линковки символы и должны существовать. Иначе программа не соберётся.
Для вызова функции Rust из внешнего кода, местоположение функции (адрес в памяти) должно быть экспортировано в качестве определённого символа. Внутри Rust может свободно искажать (mangles) символы, которые присваиваются функциям. Для управления версиями и всем таким. Получается, что по умолчанию нельзя узнать заранее, какой символ будет присвоен каждой функции и следовательно мы не сможем вызвать эту функцию из внешнего кода. Для предотвращения этого произвола процесса мы можем добавить атрибут :
Затем программа на (например) Няшном Си может вызвать эту функцию таким образом:
Драйвер SD-карты
Мы предоставили предварительно скомпилированную библиотеку с драйвером SD-карты как . Помимо этого эта библиотека включена в процесс сборки. Т.е. библиотека уже связана с ядром. Кроме того в предоставлены объявления всего, что экспортирует эта библиотека.
Сама библиотека зависит от функции , которую она ожидает найти в нашем ядрышке. Функция должна отправлять процессор в сон на указанное количество микросекунд. Вам нужно будет создать и экспортировать эту функцию для успешной линковки. В Няшном Си объявление этой функции выглядит следующим образом:
Задача — обернуть внешний небезопасный API в безопасный Rust-код. Реализуйте структуру , которая инициализирует контроллер SD-карты в методе . Затем реализуйте трейт для . Вам нужно будет использовать для взаимодействия с внешними элементами. Проверьте свою реализацию, вручную прочитав MBR прямо из . Убедитесь, что прочитанные байтики соответсвуют ожидаемым. Когда всё заработает так, как ожидается, переходите к следущему разделу.
Файловая система
В этой части мы будем инициализировать глобальную файловую систему для использования нашим ядром. Основная работа в .
Как и аллокатор памяти, файловая система является глобальным ресурсом. Мы хотим, чтоб оно было доступно всегда и везде. Для того, чтоб это работало, мы создали глобальную переменную в файле . Как и аллокатор, наша ФС начинает свою работу в неинициализированном состоянии.
На текущий момент у нас есть файловая система и драйвер диска. Пришло время связать их вместе. Доделайте реализацию структуры из , используя при этом файловую систему FAT32 и наши биндинги к драйверу SD-карты. Вы должны инициализировать файловую систему при помощи (реализующей ) в функции . Затем реализуйте трейт для структуры, переведя все вызовы на . И в конце убедитесь, что инициализируете файловую систему из после аллокатора памяти.
Проверьте свою реализацию, распечатав содежримое корневого каталога () вашей SD-карты. Как только всё заработает так, как вы ожидаете — переходите к следующему этапу.
Последние комментарии к этой статье
Текущая оценка статьи: 4,3 из 5 баллов
Никита Степанов | 23 ноября 2014, 15:21 | Оценка: 5 Спасибо! А то в Интернете находил информацию по данной теме, там вот что предлагали: В появившемся окне откройте ярлык «Управление компьютером» и перейдите к разделу «Хранение данных» (запоминающие устройства). В этом блоке нужно запустить команду «Дефрагментация диска». 5 Нажмите кнопку «Анализ». Через несколько секунд произойдет автоматическое сканирование выбранного раздела жесткого диска. Нажмите кнопку «Вывести отчет» для просмотра подробной информации о состоянии жесткого диска
В открывшемся окне обратите внимание на строку «Размер кластера». В рассматриваемом примере это значение было равно 4 Кб, следовательно, объем системного раздела не менее 12 Гб
Но поскольку у меня Виндовс 7, то это не помогло. Но когда я ввёл fsutil fsinfo ntfsinfo (здесь я ввел букву диска) то вот что выдало: Серийный номер тома NTFS: 0x0e762c2a762c14cd Версия: 3.1 Число секторов: 0x00000000003c26ff Всего кластеров: 0x000000000003c26f Свободных кластеров: 0x000000000003b1bb Всего зарезервировано: 0x0000000000000000 Байт на сектор: 512 Байт на кластер: 8192 Байт на сегмент FileRecord: 1024 Кластеров на сегмент FileRecord: 0 Допустимая длина данных MFT: 0x0000000000040000 Начальный LCN таблицы MFT: 0x00000000000140d0 Начальный LCN таблицы MFT2: 0x0000000000000001 Начало зоны таблицы MFT: 0x00000000000140c0 Конец зоны таблицы MFT: 0x000000000001a4e0 Идентификатор ДР: 6E4173C9-72FE-11E4-9C9A-001FD0C76A67 И таким образом узнал размер кластера своей флешки. Ещё раз спасибо!
Смотреть предыдущие (все) комментарии (3)
Всем привет. Сегодня мы поговорим о том как можно восстановить повреждённую флешку. Благодаря своей универсальности, простоте обращения и компактному размеру съёмные flash-накопители или иначе флешки получили широкое распространение.
В отличие от морально устаревших оптических дисков, флешки позволяют хранить больший объем информации. Они обладают более высоким потенциалом перезаписи данных и сроком их хранения. А также лучшей защитой от внешних повреждений.
Увы, хотя флешки и считаются достаточно надежными устройствами, они не идеальны. Существует масса причин, по которым флешка может выйти из строя. Физическая поломка компонентов. Сбой контроллера. Повреждение файловой системы вследствие извлечения устройства в момент записи. Выработка потенциала ячеек памяти — все это может привести к тому, что флешка станет нечитаемой или попросту перестанет распознаваться операционной системой.
При подключении такой флешки пользователь может получать различные ошибки. Например, «Устройство USB не опознано», «Нет доступа к диску» и т.п. Однако это еще не означает, что сам накопитель и записанные на него данные безвозвратно повреждены.
Если флешка не имеет грубых физических повреждений, в большинстве случаев ее удается восстановить. Ниже будут описаны наиболее часто встречающиеся неполадки в работе флешек. А также я постараюсь восстановить повреждённую флешку различными способами, если не поможет один, поможет другой. И так начнём.
Как определить стиль разделов через «Управление дисками»
Самый простой способ выяснить, GPT или MBR диск установлен на компьютере, это воспользоваться штатным инструментом Windows для работы с жесткими дисками – утилитой «Управление дисками». Запускаем ее через меню «Пуск» (ПКМ – Управление дисками) или с помощью строки «Выполнить» (нажимаем сочетание Win+R на клавиатуре, а потом вводим команду diskmgmt.msc).
В открывшемся окне приложения будут отображены все подключенные к компьютеру устройства хранения информации – физические жесткие диски и USB-накопители. Кликаем правой кнопкой мыши по нужному диску и выбираем пункт «Свойства».
Далее переходим на вкладку «Тома» и находим строку «Стиль раздела». Если там указано «Таблица с GUID разделов», то диск имеет GPT-структуру (GPT расшифровывается как GUID Partition Table).
Если же этот параметр имеет значение «Основная загрузочная запись (MBR)», то используется традиционный метод разметки MBR.
Черный ящик
Пользователи в основном работают с той файловой системой, которая предлагается по умолчанию операционной системой. Они редко создают новые дисковые разделы и еще реже задумываются об их настройках — просто используют рекомендованные параметры или вообще покупают предварительно отформатированные носители.
У поклонников Windows все просто: NTFS на всех дисковых разделах и FAT32 (или та же NTFS) на флешках. Если же стоит NAS и в нем используется какая-то другая файловая система, то для большинства это остается за гранью восприятия. К нему просто подключаются по сети и качают файлы, как из черного ящика.
На мобильных гаджетах с Android чаще всего встречается ext4 во внутренней памяти и FAT32 на карточках microSD. Яблочникам же и вовсе без разницы, что у них за файловая система: HFS+, HFSX, APFS, WTFS… для них существуют только красивые значки папок и файлов, нарисованные лучшими дизайнерами. Богаче всего выбор у линуксоидов, но прикрутить поддержку неродных для операционки файловых систем можно и в Windows, и в macOS — об этом чуть позже.
Как отформатировать USB флешку?
- Подключите USB накопитель в порт компьютера. Дайте время для определения устройства операционной системой.
- После может появится окошко «Автозапуск» или уведомление об невозможности доступа, всё зависит от индивидуального случая приведшего к потребности форматирования!
- Закроем появившиеся окна, перейдём в директорию «Компьютер» (сочетание клавиш Win + E или Значок на рабочем столе).
- найдите среди раздела «съемные диски» свою флешку, но не открывайте!
- Нажмите на ярлык флешки правой кнопкой мышки и найдите пункт контекстного меню «Форматировать», активируйте нажатием левой кнопки.
- Появится окно форматирования (как показано на рисунке ниже ).
- В порядке сверху вниз, проверим установленные параметры форматирования
- Ёмкость – значение показывающее полный объём выбранного флеш накопителя.
- Файловая система – выбор типа файловой системы для выбранного устройства ( FAT 32 – по умолчанию).
- Размер кластера – значение выставляется либо автоматически, либо из списка (Предпочтительно – «Стандартный размер кластера»).
- Восстановить параметры по умолчанию – кнопка сброса установленных значений выше.
- Метка тома – название – символьное значение, предназначено для указания используемого вами индивидуального названия для устройства помимо задаваемой буквы диска.
- Быстрая очистка оглавления – пункт необязательный, но предпочтителен при форматировании флешек объёмом более 16 Гб, данный пункт заставляет проходить форматирование намного быстрее – «Быстрое форматирование» .
- Начать – Кнопка в низу окна, предназначается для запуска процесса форматирования с применением установленных выше значений.
- После того как значение пунктов избраны, нажмите кнопку «Начать.
- Подтвердите продолжение форматирования в появившемся уведомлении и подождите несколько секунд.
- После появится уведомление об успешном окончании форматирования!
Командная строка
Выполнять различные операции с HDD из командной строки можно с помощью утилиты diskpart. Разумеется, она позволяет узнать и стиль разделов диска – GPT или MBR. Запускаем командную строку с правами администратора, а затем выполняем последовательно команды diskpart и list disk.
Отобразится список всех жестких дисков. Диски, имеющие структуру разделов GPT, будут отмечены звездочкой.
К слову, командная строка дает возможность посмотреть информацию о носителях и без запуска самой операционной системы, достаточно лишь иметь установочный диск Windows. Загружаемся с него, а после появления Мастера установки жмем сочетание клавиш Shift+F10. Далее откроется консоль, в которой вводим уже знакомые команды diskpart и list disk.
Здесь же можно выполнить и другие полезные операции, например, преобразовать GPT в MBR. Необходимость в этом часто возникает при появлении ошибки «Выбранный диск имеет стиль разделов GPT» на этапе установки Windows 7/10.
О каких файловых системах следует знать?
В основном, ОС Windows использует файловую систему FAT (File Allocation Table), FAT32 и NTFS (New Technology File System).
Если говорить коротко, в NTFS могут храниться файлы размером более 4 ГБ, а разделы могут быть более 32 ГБ. NTFS лучше управляет свободным пространством, чем файловая система FAT или FAT32, и, следовательно, меньше фрагментирует диск. Также NTFS поддерживает некоторые функции по безопасности, включая шифрование файлов «на лету».
В сравнении с NTFS, файловые системы FAT и FAT32 приспособлены к меньшему пространству, менее интенсивно работают с жестким диском, и, следовательно, быстрее работают с небольшими флеш-накопителями. К тому же, FAT и FAT32 являются кросс платформенными файловыми системами. Самый главный недостаток FAT и FAT32 – ограничение в 32 ГБ на размер раздела, а также ограничение в 2 ГБ и 4 ГБ на размер файла соответственно.
Для хранения информации на флеш-накопителях в основном используется новая файловая система exFAT (Extended File Allocation Table), также известная как FAT64. Как и NTFS она поддерживает файлы размером более 4 ГБ и разделы более 32 ГБ, а также ее система управления файлами избегает фрагментации диска. В то же время она является быстрой, оптимизированной для мобильных носителей и обработки media-файлов.