- Способ организации файловых структур
- Цели, состав и функции
- Какие бывают файловые системы
- Физическая организация файловых систем
- Логические диски
- Высокоуровневое форматирование диска
- Типы файлов
- Монтирование логических дисков
- Возможности файловой системы
- Учет свободных кластеров
- Дисковые квоты
- Резервное копирование
- Правильная организация файлов или наше спасение в наших руках
- Суть проблемы
- Варианты решения
- Существующие средства
Способ организации файловых структур
Файловая система обеспечивает работу пользователей и программ с файлами (чтение и запись информации на диске), а так же ведет учет свободных и занятых кластеров на диске.
Файловая система осуществляет работу с данными на диске, основываясь на адресах секторов.
CHS (от англ. Cylinder, Head, Sector — цилиндр, головка, сектор) — система адресации сектора, как минимальной единицы хранения данных в накопителях на жёстких магнитных дисках, накопителях на гибких магнитных дисках и схожих устройствах, основанная на использовании физических адресов геометрии дискового накопителя (в не дисковых накопителях — лентах, сетевых системах хранения, твердотельных накопителях — не используется).
Работа с программами основывается на именах файлов.
Цели, состав и функции
Цели использования файловой системы:
- Экранирование физической организации долговременного хранилища данных.
- Создание простой модели (логической) этого хранилища.
- Предоставление программам и пользователям удобного набора команд для манипулирования файлами.
Состав файловой системы определяется следующими компонентами:
- Все файлы на диске.
- Наборы структур данных, которые используются для управления файлами.
- Комплекс системных программных средств которые реализуют различные операции над файлами (создание, запись, чтение, поиск и другие).
Функции файловой системы:
- Отображение логической модели данных на физическую организацию хранилища данных. То есть структура файлов и папок на компьютере переноситься на физический жесткий диск. А именно на конкретные сектора.
- Обеспечение устойчивости файловой системы к сбоям и ошибкам.
- Предоставление программного интерфейса для приложений. Что бы программы могли работать с файлами.
- Обеспечение совместного доступа к файлу несколькими процессами. О процессах я рассказывал в основах операционных систем.
- Защита файлов от несанкционированного доступа.
Какие бывают файловые системы
Для Windows используются два файловые системы:
- FAT (File Allocation Table).
- NTFS (New Technology File System).
Для UNIX систем это:
- UFS (Unix File System).
- S5 (применительно к System V).
Физическая организация файловых систем
Обычные HDD диски состоят из:
- Дорожек. Концентрических колец предназначенных для хранения данных, размеченных на диске. Они состоят из одинакового числа секторов.
- Секторов. Сектор является наименьшей адресуемой единицей дискового устройства для обмена данными. Размер сектора фиксирован.
- При низкоуровневом форматировании создаются дорожки и сектора, на диск записывается информация для определения границ секторов.
Логические диски
При работе в операционной системы мы работаем с логическими дисками или разделами. Физический диск может быть разбит на один или несколько логических дисков.
Логический диск или раздел это часть (или весь) физического диска, которую операционная система представляет пользователю как логическое устройство.
На одном логическом диске может использоваться только одна файловая система.
На моем примере.
В моем случае диск C это часть физического SSD диска. Диски D и E — полностью два физических диска. Часто один физический диск разбивают на два логически C и D.
Возможные варианты организации логических дисков:
- Один физический – один логический.
- Один физический – несколько логических.
- Несколько физических – один логический.
Вариант несколько физических = дин логический обычно используется в RAID массивах.
RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых (самостоятельных) дисков) — технология виртуализации данных для объединения нескольких физических дисковых устройств в логический модуль для повышения отказоустойчивости и/или производительности.
На картинке выше видно что один диск (диск C) помечен как загружаемый (системный) иконкой слева.
Высокоуровневое форматирование диска
Высокоуровневое форматирование диска необходимо для создания логического диска и файловой системы на нем.
При форматировании пространство логического диска разбивается на кластеры определенного размера.
Кластер (блок) является минимальной единицей хранения данных, используемой в файловой системе.
При форматировании на диск записывается следующая информация:
- Загрузчик операционной системы.
- Сведения о границах областей отведенных под файлы и каталоги.
- Информация о поврежденных областях.
- Информация о доступном и неиспользуемом пространстве.
Структура файловой системы
Служебная область содержит общую информацию о файловой системе, свободных кластерах, о размещении файлов в кластерах.
Главная таблица файлов – MFT содержит как минимум одну запись для каждого файла и запись для себя. На кластеры делится весь раздел диска, а не только область данных.
В файловой системе NTFS данные организуются следующим образом.
Организация данных в NTFS
Возникает вопрос, а что же такое файл?
Файл это неструктурированная последовательность байтов, в которую можно записывать и из которой можно считывать информацию. Файл это логический объект, позволяющий обращаться к информации по имени.
За счет использования файлов в операционной системе появилась возможность простого доступа пользователей и приложений к информации по имени.
Наличие имени файла позволяет получать доступ к информации независимо от адресов кластеров, в которых располагается файл. Существует возможность определения прав доступа пользователей к файлу.
Типы файлов
Обычные файлы — это файлы которые содержат информацию произвольного характера. Они имеют произвольную структуру. Операционная система должна распознавать как минимум один тип файлов, это собственные исполняемые файлы.
Специальные файлы – фиктивные файлы, которые ассоциируются с устройствами ввода-вывода.
Каталоги – файлы, которые содержат системную справочную информацию о наборе файлов, сгруппированных пользователем по какому-либо признаку. Каталоги могут содержать файлы любых типов, включая каталоги.
Другие — тип файлов, содержащий символьные связи, именованные конвейеры, отображаемые в памяти.
Иерархическая структура файловой системы состоит из следующих элементов:
- Дерево – файл может входить только в один каталог.
- Сеть – файл может входить в несколько каталогов.
Корневым называют каталог верхнего уровня.
Иерархическая структура файловой системы
Монтирование логических дисков
Монтированием логических дисков называют встраивание логического диска в иерархическую структуру файлов операционной системы.
В качестве точки монтирования может выступать любой пустой каталог существующей файловой системы. При монтировании он становится корневым для файловой системы монтируемого диска.
Возможности файловой системы
Учет свободных кластеров
Использование связного списка номеров свободных кластеров. В каждом кластере, входящем в список, помещаются номера свободных кластеров и ссылка на следующий кластер из списка. При этом в оперативной памяти достаточно хранить один кластер из списка.
Использование битового массива. Свободные кластеры помечаются 1, а занятые 0 (или наоборот). В оперативной памяти достаточно хранить один кластер битового массива. Выделяемые файлу свободные кластеры располагаются близко друг к другу, что приводит к увеличению быстродействия.
Дисковые квоты
Дисковая квота – максимальное количество файлов и блоков (кластеров), назначаемое пользователю для хранения данных.
Гибкий лимит – при превышении гибкого лимита во время регистрации пользователю выдается предупреждение, и счетчик предупреждений уменьшается на 1. Если счетчик равен 0, то в регистрации отказывается.
Жесткий лимит – лимит который не может быть превышен.
Резервное копирование
Резервное копирование это процесс создания на носителе, предназначенном для восстановления данных в оригинальном месте их расположения в случае их повреждения или разрушения.
Существуют следующие способы повышения эффективности и удобства резервного копирования:
- Сохранение не всей файловой системы, а только некоторых каталогов.
- Инкрементное резервное копирование: сохраняются только файлы, изменявшиеся после последнего резервного копирования.
- Хранение резервных копий на других носителях, а так же в удаленном месте.
- Сжатие резервируемых данных.
- Быстрое фиксирование состояния файловой системы путем копирования критических структур данных для решения проблемы изменения данных во время резервного копирования.
- Возможность восстановления в исходное место размещения, в другое место с сохранением структуры каталогов и без сохранения структуры.
Физическое резервное копирование это последовательное копирование всех кластеров диска.
Логическое резервное копирование это проверка каталогов и сохранение содержащихся в них информации.
Преимущества физического копирования:
- простота реализации;
- высокая скорость.
- резервирование свободных кластеров;
- невозможность восстановления отдельных файлов;
- невозможность инкрементного резервного копирования.
Логическое резервирование происходит следующим образом:
- Резервируются файлы, которые были изменены. Резервируются каталоги, содержащиеся в пути к этому файлу.
- Создается битовый массив, индексированный по номеру индексного дескриптора.
- Рекурсивно исследуется каталоги, пометки снимаются с каталогов, в которых нет модифицированных файлов и каталогов.
- Резервируются все помеченные каталоги, перед каталогом записывается его атрибуты.
- Резервируются все помеченные файлы, перед файлом записываются его атрибуты.
- Исследуются все элементы начального каталога и помечаются модифицированные файлы и все каталоги, в которых рекурсивно ищутся все модифицированные файлы.
Далее создается резервная копия.
Восстановление файловой системы из резервной копии происходит следующим образом:
- Создается пустая файловая система.
- Восстанавливаются данные последней полной архивации, сначала каталоги, а затем файлы.
- Восстанавливаются данные из инкрементных резервных копий.
- Восстанавливается список свободных кластеров.
Теперь вы знаете основы файловых систем.
Обучаю HTML, CSS, PHP. Создаю и продвигаю сайты, скрипты и программы. Занимаюсь информационной безопасностью. Рассмотрю различные виды сотрудничества.
Источник
Правильная организация файлов или наше спасение в наших руках
Я не открою Америку, если скажу, что способ организации файлов в современных ФС мягко говоря не совсем удобен для конечного пользователя. И действительно: иерархическая модель представления данных на основе файлов и каталогов, не менявшаяся уже несколько десятков лет, просто не способна соответствовать современным потребностям в хранении большого количества разнородного контента. И если с музыкальной информацией все более-менее хорошо, благодаря таким медиа-библиотекам, как iTunes или Amarok, то с файлами остальных форматов ситуация до сих пор остается очень печальной.
Суть проблемы
Я уверен, на компьютере каждого человека, читающего этот топик, наверняка есть хоть один из следующих каталогов: soft, разобрать, временно, всякая всячина, trash, интересное. Обычно в папке софт находится несколько тысяч архивов и экзешников с говорящими названиями «setup.exe» или «589346.zip»; папка «Мои документы» засрана кучей файлов, многие из которых вообще к документам не относятся, а файлы из каталога «Разобрать» так и остаются не разобранными…
При этом, когда у нас возникает потребность отыскать «тот самый дистрибутив visual studio, который я скачивал пару месяцев назад», то гораздо проще за несколько секунд найти ссылку на установщик в гугле, чем долго и тщетно пытаться искать его на своем компьютере. Стандартные утилиты поиска так же не спасают, т.к. для бинарных файлов они могут ориентироваться только на название файла, да жалкую горстку дополнительных атрибутов.
Хочу заметить, что данная проблема в юзабилити файловых систем вовсе не является надуманной: достаточно вглянуть на этот топик, вызвавший достаточно бурное обсуждение.
Также можно ознакомиться с соответствующей главой из книги «Алан Купер об интерфейсе. Основы проектирования взаимодействия».
Варианты решения
Что же с этим делать? К счастью, благодаря вебу, все мы хорошо знакомы с простым, но очень эффективным способом организации информации. Да да, я говорю о тегах.
Delicous.com, digg.com, last.fm, да взять хоть хабрахабр — все эти веб-сервисы научили нас грамотно пользоваться метками. Потратив один раз чуть чуть своего времени на тегирование любого элемента своей коллекции, как мы уже никогда не потеряем его из виду. Такие вещи, как «смежные теги» или «облако тегов» позволят найти нам нужный контент, даже если мы не очень хорошо помним, какими тегами его отметили.
Хорошо, но если такую простую и удобную идею до сих пор не внедрили производители операционных систем, то куда же смотрят разработчики сторонних приложений?!
Я полагал, что существует как минимум несколько альтернатив, позволяющих создавать базу данных, на основе тегирования файлов, ведь это так просто для реализации!
К моему разочарованию я обнаружил, что подсуетились лишь программисты под Mac OS: 7 File Tagging Applications for OS X (разумеется, почти все они платные).
Ни для windows, и, тем более, ни для Linux ничего подобного я не нашел. Хотя, возможно, я просто плохо искал — в таком случае очень прошу указать в комментариях ссылки на такой софт.
Разумеется, это воодушевило меня стать «посланцем добра и света», освободив несчастных пользователей от гнета архаичных ФС. А т.к. основной ОС для меня является Linux Ubuntu, то вопрос на чем писать даже не вставал — конечно это python, тем более что связываться с технологиями Microsoft мне совсем не хотелось.
Базовый список требований получился совсем небольшим, и это мотивировало меня еще больше. Итак, чего же я жду от такой программы:
- Добавление/редактирование тегов к файлам и папкам прямо из контекстного меню файлового менеджера (Nautilus)
- Интерфейс для поиска и просмотра файлов по указанным тегам
- Отслеживание изменений в именах и расположении (что, в общем, одно и то же) файлов
Грубо говоря, наша инновационная и нанотехнологичная программа будет состоять из трех компонентов: системная интеграция, база данных и процесс/демон.
Существующие средства
/.nautilus/extensions/python и дать ему права на исполнение. На практике, в моей Ubuntu 8.10 этот скрипт вызывает крэш приложения, при вызове меню. Говорят, что в ранних версиях убунты все работает нормально.
Также нельзя не упомянуть замечательный проект dhtfs.
DHTFS также проповедует идеологию ФС, основанной на тегах, написан на python и имеет даже краткую пользовательскую документацию! Но есть один минус — это cli-приложение.
Источник