Дисководы и дисководоподобные устройства являются «тупыми». Вы запрашиваете его для 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 может быть виртуальным блочным устройством, и вы можете иметь их каскад.