Дисковые накопители и дисководоподобные устройства являются «тупыми». Вы запрашиваете его для LBA, он возвращает вам 512, 2048 или 4096 байтов, которые он содержит; наоборот для письма.
Слой файловой системы позволяет вам сказать «я хочу c:\users\public\documents\what.doc» и выполнять потоковые операции с ним (открывать, читать, писать, искать, закрывать) - он преобразуется из адресных мест в серию запросов на чтение / запись LBA.
Таким образом, уровень файловой системы имеет две стороны: одна сторона, которая взаимодействует с дискообразным (или блочным) устройством, а другая - с операционной системой. Вот где специфичность для операционной системы вступает в игру. Обычно сторона блочного устройства файловой системы - это драйвер устройства, а сторона операционной системы - это API, используемый приложениями. Но это всего лишь интерфейсы, которые не должны влиять на основную работу уровня файловой системы.
Все файловые системы приводят к тому, что дополнительные данные записываются и считываются вне файловых данных, чтобы отслеживать информацию о файлах, то есть записывать разрешения, атрибуты и т.д.
При загрузке возникает небольшая проблема: файлы операционной системы хранятся в файловой системе, но как они загружаются, если уровень файловой системы еще не активен? Linux решает эту проблему с помощью начального RAM-диска или встроением кода файловой системы как части ядра. Windows решает эту проблему, предоставляя загрузчику Windows возможность читать разделы FAT и NTFS. Загрузчики могут быть тупыми, как и большинство классических загрузчиков BIOS, которые загружают только LBA 0 и выполняют его и ожидают, что код получит впоследствии, или достаточно интеллектуальны и имеют собственные небольшие уровни файловой системы, такие как UEFI, U-boot и т.д.
LVM не является файловой системой. Он берет одно или несколько блочных устройств и абстрагирует его в другое "виртуальное" блочное устройство (в /dev/mapper
- все, что в /dev/mapper
является виртуальным блочным устройством). Вы помещаете файловую систему "поверх" LVM так же, как вы помещаете файловую систему "поверх" раздела. LVM - это еще один уровень между одним или несколькими драйверами устройств и файловой системой, преобразующий операции чтения и записи в LBA на виртуальном блочном устройстве в одно или несколько других блочных устройств. Да, LVM может быть виртуальным блочным устройством, и вы можете иметь их каскад.