Главная страница
Навигация по странице:

  • Ext2, Ext3, Ext4

  • JFS

  • Btrfs

  • Aufs (AnotherUnionFS)

  • Команда fsck

  • Команда lsblk

  • Команда mount

  • Windows и Linux


    Скачать 95.38 Kb.
    НазваниеWindows и Linux
    Дата06.10.2022
    Размер95.38 Kb.
    Формат файлаdocx
    Имя файлаFaylovaya_sistema_Windows_i_Linux.docx
    ТипДокументы
    #719152

    Файловая система Windows и Linux



    Файловая система (file system) – способ организации данных в виде файлов на устройствах внешней памяти (жестких и оптических дисках, устройствах флеш-памяти и т. п.).

    Файловая система должна обеспечивать:

    1. безопасное и надежное хранение данных (т. е. защищенное от несанкционированного использования и различного рода сбоев и ошибок);

    2. программный интерфейс доступа к файлам;

    3. организацию файлов в виде иерархии каталогов.

    Windows поддерживает несколько файловых систем для различных внешних устройств:

    • NTFS – основная файловая система семейства Windows NT;

    • FAT (File Allocation Table – таблица размещения файлов) – простая файловая система используемая Windows для устройств флеш памяти, а также для совместимости с другими операционными системами при установке на диски с множественной загрузкой. Основным элементом этой файловой системы является таблица размещения файлов FAT (по имени которой названа вся файловая система), необходимая для определения расположения файла на диске. Существует три варианта FAT, отличающихся разрядностью идентификаторов, указывающих размещение файлов: FAT12, FAT16 и FAT32;

    • exFAT (Extended FAT – расширенная FAT) – развитие файловой системы FAT, использующее 64 разрядные идентификаторы. Применяется в основном для устройств флеш-памяти;

    • CDFS (CD ROM File System) – файловая система для CD дисков, объединяющая форматы ISO 96601 и Joliet2;

    • UDF (Universal Disk Format – универсальный формат дисков) – файловая система для CD и DVD дисков, разработанная для замены ISO 9660.

    Для дальнейшего изложения необходимо знать следующие важные понятия: диск, раздел, простые и составные тома, сектор, кластер.

    Диск (disk) – устройство внешней памяти, например, жесткий диск или оптический диск (CD, DVD, Blu ray).

    Раздел (partition) – непрерывная часть жесткого диска. Диск может содержать несколько разделов.

    Том (volume) или логический диск (logical disk) – область внешней памяти, с которой операционная система работает как с единым целым. Тома бывают простые и составные.

    Простой том (simple volume) – том, состоящий из одного раздела.

    Составной том (multipartition volume) – том, состоящий из нескольких разделов (необязательно на одном диске).

    Понятия раздела и простого тома отличаются: во первых, разделы формируются, в основном, только на жестких дисках, а тома создаются и на других устройствах внешней памяти (например на оптических дисках и устройствах флеш памяти), во вторых, понятие "раздел" связано с физическим устройством, а понятие "том" – с логическим представлением внешней памяти.

    Сектор (sector) – блок данных фиксированного размера на диске; наименьшая единица информации для диска. Типичный размер сектора для жестких дисков равен 512 байтам, для оптических дисков – 2048 байтДеление диска на секторы происходит один раз при создании диска в процессе низкоуровневого форматирования и обычно не может быть изменено.

    Кластер (cluster) – логический блок данных на диске, включающий один или несколько секторов. Количество секторов, составляющих кластер, обычно кратно степеням двойки. Размер кластера задается операционной системой в процессе высокоуровневого форматирования, которое может осуществляться многократно.

    При записи на диск файл всегда будет занимать целое число кластеров. Например, файл размером 100 байт в файловой системе с размером кластера 4 КБ будет занимать ровно 4 КБ.

    Выбор размера кластера связан со следующими соображениями. Малые кластеры позволяют сократить размер фактически неиспользуемого дискового пространства, возникающего за счет размещения файла в целом числе кластеров. Но при этом общее количество кластеров на диске увеличивается и размер служебных структур файловой системы, в которых хранится информация о файлах, возрастает.

    Возможности NTFS

    Файловая система NTFS (New Technology File System) разрабатывалась Microsoft в начале 1990 х гг. как основная файловая система для серверных версий операционных систем WindowsNTFS была представлена в 1993 году в операционной системе Windows NT 3.1.

    В настоящее время NTFS рассматривается в качестве предпочтительной файловой системы как для серверных, так и для клиентских версий Windows.

    В NTFS используются 64 разрядные идентификаторы кластеров, поэтому теоретически том NTFS может содержать 264 кластеров (16 ЭБ3 ). Однако текущие реализации в Windows поддерживают только 32 разрядную адресацию кластеров, что при размере кластера максимум 64 КБ (216 байт) позволяет NTFS тому достигать размера до 256 ТБ:

    232 * 216 байт = 248 байт = 28 * 240 байт = 256 ТБ.

    Для томов, больших 4 ГБ, при форматировании Windows предлагает размер кластера по умолчанию 4 КБ.

    Перечислим некоторые возможности NTFS [5, стр. 761]:

    • восстанавливаемость (recoverability) – способность файловой системы возвращаться к работоспособному состоянию после возникновения сбоя. Реализуется такая возможность, во первых, за счет поддержки атомарных транзакций, во вторых, за счет избыточности хранения информации. Атомарная транзакция (atomic transaction) – операция с файловой системой, приводящая к её изменению, которая либо полностью успешно выполняется, либо не выполняется вообще (т. е. в случае сбоя во время атомарной транзакции все изменения откатываются). Избыточность используется при хранении важнейших данных файловой системы, критически необходимых для её корректной работы;

    • безопасность (security) – защищенность файлов от несанкционированного доступа. Реализуется при помощи модели безопасности Windows, рассмотренной в лекции 9 "Безопасность в Windows";

    • шифрование (encryption) – преобразование файла в зашифрованный код, который невозможно прочесть без ключа. Обычные механизмы безопасности, такие как назначение прав доступа пользователей к файлам, не обеспечивают полной защиты информации, например, в случае перемещения диска на другой компьютер. Администратор операционной системы всегда может получить доступ к файлам других пользователей, даже на томе NTFS. Поэтому в NTFS включена поддержка шифрующей файловой системы EFS (Encrypting File System), которая позволяет легко зашифровывать и расшифровывать файлы;

    • поддержка RAID (Redundant Array of Inexpensive (Independent) Disks – массив недорогих (независимых) дисков с избыточностью) – возможность использования для хранения информации нескольких дисков; данные с одного диска автоматически копируются на другие, обеспечивая тем самым повышенную надежность;

    • дисковые квоты для пользователей (Per-User Volume Quotas) – возможность выделения для каждого пользователя определенного пространства на диске (квоты); NTFS не позволяет пользователю записывать данные на диск сверх выделенной квоты.

    Структура NTFS

    Структура тома NTFS представлена на рис.17.1.




    Рис. 17.1. Структура NTFS тома

    В начале тома находится загрузочная запись тома (Volume Boot Record), в которой содержится код загрузки Windowsинформация о томе (в частности, тип файловой системы), адреса системных файлов ($Mft и $MftMirr – см. далее). Загрузочная запись занимает обычно 8 КБ (16 первых секторов).

    В определенной области тома (адрес начала этой области указывается в загрузочной записи) расположена основная системная структура NTFS – главная таблица файлов (Master File TableMFT). В записях этой таблицы содержится вся информация о расположении файлов на томе, а небольшие файлы хранятся прямо в записях MFT.

    Важной особенностью NTFS является то, что вся информация, как пользовательская, так и системная, хранится в виде файлов. Имена системных файлов начинаются со знака "$". Например, загрузочная запись тома содержится в файле $Boot, а главная таблица файлов – в файле $Mft. Такая организация информации позволяет единообразно работать как с пользовательскими, так и с системными данными на томе.

    Поскольку MFT является важнейшей системной структурой, к которой при операциях с томом наиболее часто происходят обращения, выгодно хранить файл $Mft в непрерывной области логического диска, чтобы избежать его фрагментации (размещения в разных областях диска), и, следовательно, повысить скорость работы с ним. С этой целью при форматировании тома выделяется непрерывная область, называемая зоной MFT (MFT Zone). По мере увеличения главной таблицы файлов, файл $Mft расширяется, занимая зарезервированное место в зоне.

    Остальное место на томе NTFS отводится под файлы – системные и пользовательские.

    Рассмотрим более подробно структуру MFT (рис.17.2).




    Рис. 17.2. Главная таблица файлов MFT

    Главная таблица файлов MFT состоит из множества записей о файлах (файловых записей), расположенных на томе. Размер одной записи – 1 КБ (2 сектора). Самая первая запись в MFT – это запись о самом файле $Mft. Во второй записи содержится информация о файле $MftMirr – зеркальной копии MFT. В этом файле дублируются первые 4 записи таблицы MFT, в том числе запись о $Mft. В случае возникновения сбоя, если MFT окажется недоступной, информация о системных файлах будет считываться из $MftMirr (в загрузочной записи имеется адрес $MftMirr).

    Перечислим следующие несколько записей в таблице MFT и кратко опишем назначение соответствующих системных файлов:

    • $LogFile – файл журнала, в котором записывается информация о всех операциях, изменяющих структуру тома NTFS, например, создание файлов и каталогов. Файл журнала используется при восстановлении тома NTFS после сбоев;

    • $Volume – файл информации о томе, в котором содержатся имя тома (Volume label), версия NTFS и набор флагов состояния тома, например, флаг (т. н. грязный бит, dirty bit), установка которого означает, что том был поврежден и требует восстановления при помощи системной утилиты Chkdsk;

    • $AttrDef – таблица определения атрибутов (Attribute Definition Table), содержащая возможные на данном томе типы атрибутов файлов (см. далее);

    • Root Directory (обозначается также обратным слешем "\") – файл с информацией о корневом каталоге тома. В нем хранятся ссылки на файлы и каталоги, содержащиеся в корневом каталоге;

    • $BitMap – файл битовой карты (bitmap), каждый бит в этой карте соответствует кластеру на томе: если бит равен 1, кластер занят, иначе – свободен;

    • $Boot – файл загрузочной записи тома;

    • $BadClus – файл плохих кластеров (bad clusters), содержащий информацию обо всех кластерах, имеющих сбойные секторы (bad sectors).

    Кроме перечисленных, имеются и другие системные файлы NTFS, а в новых версиях появляются новые системные файлы.
    FAT (File Allocation Table) – это таблица ссылок, которые содержат информацию о блоках данных, образующих файл. Первая файловая система FAT (где использовались 12-битные записи) появилась в DOS. Первая версия DOS (1.0) не поддерживала поддиректории, но по мере расширения возможностей DOS изменялась соответствующим образом и файловая система FAT. Например, в DOS 4.0 записи FAT были увеличены до 16 битов, чтобы можно было работать с разделами, превышающими 32 Мб.

    Таблица FAT находится на диске вместе с дубликатом FAT, что является попыткой поддержки отказоустойчивости (однако поврежденную FAT редко удается восстановить). Система содержит также секцию корневой директории, имеющую фиксированный размер, что ограничивает количество файлов, которые можно разместить в корневой директории.

    FAT содержит записи для имен файлов и атрибутов файлов, таких как размер, байт атрибутов (8-битная запись для такой информации, как hiddenread-only и т.д.), время/дату последнего изменения (16-битные записи) и начальный блок размещения, который является указателем на запись файла в FAT. Если файл не является непрерывным (фрагментирован), то имеются записи FAT, указывающие на каждый блок размещения для этого файла. Эту последовательность называют цепочкой. Последняя запись (запись для "конца файла") содержит шестнадцатеричный код FFFF, указывающий, что это конец цепочки. При загрузке или сохранении файла операционная система использует цепочку для отслеживания местоположения фрагментов файла. По мере роста длины цепочек (диск сильно фрагментирован) производительность диска падает.

    Сами файлы хранятся в виде кластеров, размер которых зависит от размера диска. Размер самой таблицы FAT фиксирован, поэтому для работы с большими дисками размер кластеров увеличивается. Кластер может иметь размер 2048, 4096 или 8192 байтов. 16-битная длина записей FAT ограничила размер жестких дисков пределом 128 Мб (при размере кластеров 2048 байтов). Теоретически FAT мог бы поддерживать диск 512 Мб, но при размере кластеров 8192 байта, что крайне неэффективно. Начиная с DOS 5.0, была введена поддержка разделов до 2 Гб за счет создания таблиц FAT для каждого дискового раздела (до четырех разделов).

    FAT32, то есть таблица, содержащая 32-битные записи, была введена в Windows 95 OSR2. Это позволило добавить ряд возможностей к файловой системе FAT.

    • Было снято ограничение на размер раздела в 32 Гб.

    • Корневая директория размещается не в фиксированной позиции и может быть перемещена.

    • Нет ограничения на количество записей, которые могут быть помещены в корневую директорию.

    • Резервные копии FAT позволяет реально восстанавливаться после аварий.

    • FAT32 позволяет иметь намного больше кластеров при размере кластера 4096 байтов даже для больших дисков.

    FAT32 также позволила работать с именами файлов, длина которых больше предыдущего предела 8.3. Поддержка длинных имен файлов стала, пожалуй, наиболее заметной и наиболее ценной функцией. Microsoft применила для работы с длинными именами файлов в Windows 95 виртуальную таблицу распределения файлов VFAT (Virtual File Allocation Table) – 32-битную утилиту, которая работала в защищенном режиме. На самом деле Microsoft называет расширение VFAT драйвером, поскольку он устанавливается и предполагается, что его можно установить в любой операционной системе.

    ТИПЫ ФАЙЛОВЫХ СИСТЕМ LINUX


    Файловые системы в Linux используются не только для работы с файлами на диске, но и для хранения данных в оперативной памяти или доступа к конфигурации ядра во время работы системы. Дальше мы рассмотрим типы файловых систем Linux, включая специальные файловые системы.

    ОСНОВНЫЕ ФАЙЛОВЫЕ СИСТЕМЫ


    Каждый дистрибутив Linux позволяет использовать одну из этих файловых систем, каждая из них имеет свои преимущества и недостатки. Все они включены в ядро и могут использоваться в качестве корневой файловой системы. Давайте рассмотрим каждую из них более подробно.

    • Ext2, Ext3, Ext4 или Extended Filesystem - это стандартная файловая система для Linux. Она была разработана еще для Minix. Она самая стабильная из всех существующих, кодовая база изменяется очень редко и эта файловая система содержит больше всего функций. Версия ext2 была разработана уже именно для Linux и получила много улучшений. В 2001 году вышла ext3, которая добавила еще больше стабильности благодаря использованию журналирования. В 2006 была выпущена версия ext4, которая используется во всех дистрибутивах Linux до сегодняшнего дня. В ней было внесено много улучшений, в том числе увеличен максимальный размер раздела до одного экзабайта.

    • JFS или Journaled File System была разработана в IBM для AIX UNIX и использовалась в качестве альтернативы для файловых систем ext. Сейчас она используется там, где необходима высокая стабильность и минимальное потребление ресурсов. При разработке файловой системы ставилась цель создать максимально эффективную файловую систему для многопроцессорных компьютеров. Также как и ext, это журналируемая файловая система, но в журнале хранятся только метаданные, что может привести к использованию старых версий файлов после сбоев.

    • ReiserFS - была разработана намного позже, в качестве альтернативы ext3 с улучшенной производительностью и расширенными возможностями. Она была разработана под руководством Ганса Райзера и поддерживает только Linux. Из особенностей можно отметить динамический размер блока, что позволяет упаковывать несколько небольших файлов в один блок, что предотвращает фрагментацию и улучшает работу с небольшими файлами. Еще одно преимущество - в возможности изменять размеры разделов на лету. Но минус в некоторой нестабильности и риске потери данных при отключении энергии. Раньше ReiserFS применялась по умолчанию в SUSE Linux, но сейчас разработчики перешли на Btrfs.

    • XFS - это высокопроизводительная файловая система, разработанная в Silicon Graphics для собственной операционной системы еще в 2001 году. Она изначально была рассчитана на файлы большого размера, и поддерживала диски до 2 Терабайт. Из преимуществ файловой системы можно отметить высокую скорость работы с большими файлами, отложенное выделение места, увеличение разделов на лету и незначительный размер служебной информации.

    • XFS - журналируемая файловая система, однако в отличие от ext, в журнал записываются только изменения метаданных. Она используется по умолчанию в дистрибутивах на основе Red Hat. Из недостатков - это невозможность уменьшения размера, сложность восстановления данных и риск потери файлов при записи, если будет неожиданное отключение питания, поскольку большинство данных находится в памяти.

    • Btrfs или B-Tree File System - это совершенно новая файловая система, которая сосредоточена на отказоустойчивости, легкости администрирования и восстановления данных. Файловая система объединяет в себе очень много новых интересных возможностей, таких как размещение на нескольких разделах, поддержка подтомов, изменение размера не лету, создание мгновенных снимков, а также высокая производительность. Но многими пользователями файловая система Btrfs считается нестабильной. Тем не менее, она уже используется как файловая система по умолчанию в OpenSUSE и SUSE Linux.

    Другие файловые системы, такие как NTFS, FAT, HFS могут использоваться в Linux, но корневая файловая система linux на них не устанавливается, поскольку они для этого не предназначены.

    СПЕЦИАЛЬНЫЕ ФАЙЛОВЫЕ СИСТЕМЫ


    Ядро Linux использует специальные файловые системы, чтобы предоставить доступ пользователю и программам к своим настройкам и информации. Наиболее часто вы будете сталкиваться с такими вариантами:

    • tmpfs позволяет размещать любые пользовательские файлы в оперативной памяти компьютера. Достаточно создать блочное устройство нужного размера, затем подключить его к папке, и вы можете писать файлы в оперативную память.

    • procfs - по умолчанию смонтирована в папку proc и содержит всю информацию о запущенных в системе процессах, а также самом ядре.

    • sysfs - с помощью этой файловой системы вы можете задавать различные настройки ядра во время выполнения.

    ВИРТУАЛЬНЫЕ ФАЙЛОВЫЕ СИСТЕМЫ


    Не все файловые системы нужны в ядре. Существуют некоторые решения, которые можно реализовать и в пространстве пользователя. Разработчики ядра создали модуль FUSE ( filesystem in userspace), который позволяет создавать файловые системы в пространстве пользователя. К виртуальным файловым системам можно отнести ФС для шифрования и сетевые файловые системы.

    • EncFS - файловая система, которая шифрует все файлы и сохраняет их в зашифрованном виде в нужную директорию. Получить доступ к расшифрованным данным можно только примонтировав файловую систему.

    • Aufs (AnotherUnionFS) - позволяет объединять несколько файловых систем (папок) в одну общую.

    • NFS (Network Filesystem) - позволяет примонтировать файловую систему удаленного компьютера по сети.

    Таких файловых систем очень много, и мы не будем перечислять все их в данной статье. Есть даже очень экзотические варианты, обратите внимание на проект PIfs.

    Назначение каждой директории регламентирует «Стандарт иерархии файловой системы» FHS (Filesystem Hierarchy Standard). Ниже опишем основные директории согласно стандарту FHS:


    • / — root каталог. Содержит в себе всю иерархию системы;

    • /bin — здесь находятся двоичные исполняемые файлы. Основные общие команды, хранящиеся отдельно от других программ в системе (прим.: pwd, ls, cat, ps);

    • /boot — тут расположены файлы, используемые для загрузки системы (образ initrd, ядро vmlinuz);

    • /dev — в данной директории располагаются файлы устройств (драйверов). С помощью этих файлов можно взаимодействовать с устройствами. К примеру, если это жесткий диск, можно подключить его к файловой системе. В файл принтера же можно написать напрямую и отправить задание на печать;

    • /etc — в этой директории находятся файлы конфигураций программ. Эти файлы позволяют настраивать системы, сервисы, скрипты системных демонов;

    • /home — каталог, аналогичный каталогу Users в Windows. Содержит домашние каталоги учетных записей пользователей (кроме root). При создании нового пользователя здесь создается одноименный каталог с аналогичным именем и хранит личные файлы этого пользователя;

    • /lib — содержит системные библиотеки, с которыми работают программы и модули ядра;

    • /lost+found — содержит файлы, восстановленные после сбоя работы системы. Система проведет проверку после сбоя и найденные файлы можно будет посмотреть в данном каталоге;

    • /media — точка монтирования внешних носителей. Например, когда вы вставляете диск в дисковод, он будет автоматически смонтирован в директорию /media/cdrom;

    • /mnt — точка временного монтирования. Файловые системы подключаемых устройств обычно монтируются в этот каталог для временного использования;

    • /opt — тут расположены дополнительные (необязательные) приложения. Такие программы обычно не подчиняются принятой иерархии и хранят свои файлы в одном подкаталоге (бинарные, библиотеки, конфигурации);

    • /proc — содержит файлы, хранящие информацию о запущенных процессах и о состоянии ядра ОС;

    • /root — директория, которая содержит файлы и личные настройки суперпользователя;

    • /run — содержит файлы состояния приложений. Например, PID-файлы или UNIX-сокеты;

    • /sbin — аналогично /bin содержит бинарные файлы. Утилиты нужны для настройки и администрирования системы суперпользователем;

    • /srv — содержит файлы сервисов, предоставляемых сервером (прим. FTP или Apache HTTP);

    • /sys — содержит данные непосредственно о системе. Тут можно узнать информацию о ядре, драйверах и устройствах;

    • /tmp — содержит временные файлы. Данные файлы доступны всем пользователям на чтение и запись. Стоит отметить, что данный каталог очищается при перезагрузке;

    • /usr — содержит пользовательские приложения и утилиты второго уровня, используемые пользователями, а не системой. Содержимое доступно только для чтения (кроме root). Каталог имеет вторичную иерархию и похож на корневой;

    • /var — содержит переменные файлы. Имеет подкаталоги, отвечающие за отдельные переменные. Например, логи будут храниться в /var/log, кэш в /var/cache, очереди заданий в /var/spool/ и так далее.



    Как узнать, какая у меня файловая система?

    Способ №1: Использование команды df


    Команда df отображает информацию об использовании дискового пространства файловой системы. Для указания того, что нам нужно вывести тип файловой системы, используйте следующую команду:

    $ df -Th

    или

    $ df -Th | grep "^/dev"

    Примечание: Имена дисков в Linux расположены в алфавитном порядке. /dev/sda — это первый жесткий диск (основной), /dev/sdb — второй и т.д. Цифры относятся к разделам, поэтому /dev/sda1 — это первый раздел первого диска.

    Способ №2: Использование команды fsck


    Команда fsck применяется для проверки и, при необходимости, восстановления файловых систем Linux. При этом она также может отображать и тип файловой системы на указанных разделах диска, например:

    # fsck -N /dev/sda1

    Способ №3: Использование команды lsblk


    Команда lsblk отображает информацию о блочных устройствах. Добавив опцию -f, мы также получим и информацию о типе файловой системе:

    $ lsblk –f

    Способ №4: Использование команды mount


    Команда mount применяется для монтирования файловой системы в Linux. Её также можно использовать для монтирования ISO-образа, удаленной файловой системы Linux и многого другого. Чтобы узнать тип файловой системы, используйте следующую комбинацию:

    $ mount | grep "^/dev"


    написать администратору сайта