LXF117:DrBrown2
|
|
|
Пользовательские файловые системы
- Fuse Теперь не нужно быть разработчиком ядра, чтобы создать собственную файловую систему – все сделает Filesystem in USErspace.
Для начала разберемся, что такое файл. Для доступа к файлам Linux предоставляет приложениям набор системных вызовов с именами типа open(), read(), write(), close() и т. д. Это подразумевает классическое представление о файле как о структуре данных, сохраняемой на диске, и существует несколько таких структур (или файловых систем) – ext3, ReiserFS, FAT32 и т.д. Кроме того, бывают удаленные файловые системы (например, на серверах), для доступа к которым используются сетевые протоколы типа NFS и CIFS (подробнее об NFS см. в Учебнике про сети). Вам, наверное, даже знакомы «мнимые» файловые системы – те, что монтируются на каталоги /proc и /sys и представляют в виде файлов внутренние структуры данных ядра.
Все эти системы лежат в ядре Linux под слоем виртуальной файловой системы Virtual File System (VFS), поддерживающим стандартный подход к файлам независимо от их фактической реализации. При этом для программ пользователя любой внутренний механизм, который предоставляет данные в ответ на набор системных вызовов, выглядит как набор файлов.
Теперь мороки меньше!
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Традиционно реализация всех файловых систем, лежащих ниже слоя VFS, происходила в ядре, и ввод новой файловой системы означал написание модуля и перекомпиляцию ядра. Чтобы новая файловая система появилась в крупных дистрибутивах, она должна попасть в официальный исходный код Linux – это задача непростая. Fuse все меняет, позволяя реализовать файловые системы в пространстве пользователя (user space). Fuse – сокращение от «Filesystem in USEr space»; об этом названии, пожалуй, сейчас сожалеет даже ее создатель.
Файловая система Fuse – просто пользовательская программа, предоставляющая содержимое файлов под заданной точкой монтирования. Она обязательно регистрируется в ядре, говоря: «При заявке на содержимое файловой системы в таком-то каталоге, передай запрос мне». Он обрабатывается любым удобным способом, и такую программу можно написать почти на любом языке программирования – C, Perl, Python и т.д. Запуск ее возможен даже под обычным пользователем. В итоге Fuse открыла эксперименты с файловыми системами гораздо большему кругу разработчиков, и тут же возникла уйма странных и чудных файловых систем…
- encfs Файловая система с шифрованием на основе OpenSSL. Драйверу файловой системы передаются исходный каталог и точка монтирования. Файлы, записанные в точке монтирования, появляются зашифрованными в исходном каталоге, и наоборот.
- sshfs Эта файловая система позволяет смонтировать удаленный каталог в локальную файловую систему по протоколу SFTP, поддерживаемому SSH-сервером. Окончательный результат очень похож на NFS, но весь трафик шифруется по SSH-соединению, и монтировать и размонтировать ее могут обычные пользователи.
- clamfs При обращении к файлам нижележащей файловой системы реализует проверку антивирусом ClamAV. Найдя зараженный файл, автоматически отправляет электронное письмо администратору.
- rofs-filtered Позволяет смонтировать каталог в режиме только для чтения и отфильтровать файлы, отображаемые в каталоге, на основе заданного набора регулярных выражений.
- virtual800 Заполняет свою точку монтирования набором очень, очень больших (виртуальных) файлов, чем можно воспользоваться, например, для тестирования передачи больших файлов.
- vmware-mount Позволяет смонтировать образ диска VMware (файл .vmdk) и обращаться к нему из хост-системы.
Файловая система «с приветом»
Наверное, самая нелепая из всех файловых систем Fuse – «hello world». Найти ее можно в примере, поставляемом с исходными кодами пакета Fuse: она заполняет свою точку монтирования файлом с именем hello, который содержат строку ‘Hello World’. В программе, прилагаемой только как доказательство идеи, не больше ста строк.