Журнал LinuxFormat - перейти на главную

LXF76:Учебник Fuse

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Новая: == Fuse Виртуальные файловые системы == '''''Ник Вейтч''' (Nick Veitch) копается в ядре, чтобы подружить файловые с...)
 
м (викификация)
 
Строка 28: Строка 28:
 
самый быстрый старт!
 
самый быстрый старт!
 
|Ширина=200px}}
 
|Ширина=200px}}
Виртуальные файловые системы – это по-настоящему здорово, и к тому же весьма полезно. В духе Unix вообще все рассматривать как файлы, включая ресурсы, устройства и т.п.
+
Виртуальные файловые системы — это по-настоящему здорово, и к тому же весьма полезно. В духе Unix вообще все рассматривать как файлы, включая ресурсы, устройства и т. п.
 
Файл-ориентированная операционная система может извлечь немало
 
Файл-ориентированная операционная система может извлечь немало
 
полезного из виртуальных файловых систем, и Linux в самом деле уже
 
полезного из виртуальных файловых систем, и Linux в самом деле уже
 
сейчас поддерживает некоторые из них (вспомним /proc).
 
сейчас поддерживает некоторые из них (вспомним /proc).
  
Тем не менее, Fuse – свежая идея, способная заставить по-новому
+
Тем не менее, Fuse — свежая идея, способная заставить по-новому
 
взглянуть на использование виртуальных файловых систем (VFS). Fuse
 
взглянуть на использование виртуальных файловых систем (VFS). Fuse
 
означает «файловые системы в пространстве пользователя» (Filesystems
 
означает «файловые системы в пространстве пользователя» (Filesystems
 
in USErspace). Это не что иное, как часть исходного кода ядра ОС, которая позволяет программам генерировать свои собственные файловые
 
in USErspace). Это не что иное, как часть исходного кода ядра ОС, которая позволяет программам генерировать свои собственные файловые
системы. Зачем ВАМ это нужно? Вы только представьте: автоматизированная, с шифрованием, со сжатием, удаленная, Fuse может сделать
+
системы. Зачем ВАМ это нужно? Вы только представьте: автоматизированная, с шифрованием, со сжатием, удаленная, — Fuse может сделать
 
файловую систему практически из всего.
 
файловую систему практически из всего.
  
Строка 44: Строка 44:
  
 
=== Компилируем Fuse ===
 
=== Компилируем Fuse ===
Первый шаг – раздобыть исходные тексты... но постойте – если у вас
+
Первый шаг — раздобыть исходные тексты… но постойте — если у вас
 
уже есть новое ядро (выпущенное не раньше ноября 2005), вам это
 
уже есть новое ядро (выпущенное не раньше ноября 2005), вам это
 
делать ни к чему. С выходом версии ядра 2.6.14, Fuse был официально
 
делать ни к чему. С выходом версии ядра 2.6.14, Fuse был официально
Строка 61: Строка 61:
 
Исходные коды Fuse вы найдете в директории Magazine на прилагаемом к журналу диске, а также посетив сайт http://fuse.sourceforge.net, где, возможно, есть более свежая версия программы.
 
Исходные коды Fuse вы найдете в директории Magazine на прилагаемом к журналу диске, а также посетив сайт http://fuse.sourceforge.net, где, возможно, есть более свежая версия программы.
 
Перед тем как непосредственно приступить к процессу компиляции,
 
Перед тем как непосредственно приступить к процессу компиляции,
распакуйте исходный код и перейдите в директорию с Fuse. Далее компилируем Fuse – процедура вполне стандартная для большинства программ, разве что потребуется указать путь к исходным текстам ядра
+
распакуйте исходный код и перейдите в директорию с Fuse. Далее компилируем Fuse — процедура вполне стандартная для большинства программ, разве что потребуется указать путь к исходным текстам ядра
 
Linux (обычно это /usr/src/linux).
 
Linux (обычно это /usr/src/linux).
 
<source lang="bash">./configure –with-kernel=/usr/src/linux
 
<source lang="bash">./configure –with-kernel=/usr/src/linux
Строка 67: Строка 67:
 
make install</source>
 
make install</source>
 
Е сли на этой стадии у вас возникли какие-либо трудности, возможно, они связаны с отсутствием файла .config в корне директории
 
Е сли на этой стадии у вас возникли какие-либо трудности, возможно, они связаны с отсутствием файла .config в корне директории
исходных текстов ядра. Скорее всего вы обнаружите его установленным в директории /boot, и все, что от вас потребуется – просто скопировать его.
+
исходных текстов ядра. Скорее всего вы обнаружите его установленным в директории /boot, и все, что от вас потребуется — просто скопировать его.
  
[[Изображение:Img 76 74 1.png|thumb|350px|1/ Модуль ядра Fuse перенаправляет файловые запросы программам в пространство пользователя – значит, с VFS вы можете использовать любое приложение.]]
+
[[Изображение:Img 76 74 1.png|thumb|350px|1/ Модуль ядра Fuse перенаправляет файловые запросы программам в пространство пользователя — значит, с VFS вы можете использовать любое приложение.]]
 
Процесс установки автоматически настроит устройство Fuse. Это
 
Процесс установки автоматически настроит устройство Fuse. Это
 
символьное устройство, которое будет «обитать» (равно как и другие
 
символьное устройство, которое будет «обитать» (равно как и другие
Строка 105: Строка 105:
 
Когда файловая система будет смонтирована, внутри директории
 
Когда файловая система будет смонтирована, внутри директории
 
как по волшебству появится файл, который будет содержать стандартное
 
как по волшебству появится файл, который будет содержать стандартное
приветствие – «Hello World!». На самом деле никакого файла не существует, он – виртуальный, но это не означает, что его нельзя использовать.
+
приветствие — «Hello World!». На самом деле никакого файла не существует, он — виртуальный, но это не означает, что его нельзя использовать.
Он обладает всеми характеристиками обыкновенного файла – к нему
+
Он обладает всеми характеристиками обыкновенного файла — к нему
 
применимы и ls, и cat, и less, вы даже можете скопировать его куда
 
применимы и ls, и cat, и less, вы даже можете скопировать его куда
угодно. Так как мой пример весьма простенький, файл помечен атрибутом «только для чтения» – вы не сможете его отредактировать. Тем не
+
угодно. Так как мой пример весьма простенький, файл помечен атрибутом «только для чтения» — вы не сможете его отредактировать. Тем не
 
менее, с остальными файловыми системами под управлением Fuse это
 
менее, с остальными файловыми системами под управлением Fuse это
 
не должно составить особого труда.
 
не должно составить особого труда.
Строка 116: Строка 116:
 
файловую систему, как только вы закончили с ней работать. Команда
 
файловую систему, как только вы закончили с ней работать. Команда
 
<source lang="bash">fusermount –u plop</source>
 
<source lang="bash">fusermount –u plop</source>
все сделает за вас. Вы не можете использовать для этого стандартную утилиту mount – она не сможет снять приложение, да и точку монтирования найти не сумеет.
+
все сделает за вас. Вы не можете использовать для этого стандартную утилиту mount — она не сможет снять приложение, да и точку монтирования найти не сумеет.
  
 
Итак, мы готовы увидеть Fuse в действии. Сегодня самая полезная
 
Итак, мы готовы увидеть Fuse в действии. Сегодня самая полезная
(на мой взгляд) файловая система во Fuse – это sshfs. Она позволяет
+
(на мой взгляд) файловая система во Fuse — это sshfs. Она позволяет
 
монтировать файловую систему через простое SSH-соединение, а так
 
монтировать файловую систему через простое SSH-соединение, а так
 
как SSH поддерживает все необходимое, оно будет работать на любом
 
как SSH поддерживает все необходимое, оно будет работать на любом

Текущая версия на 12:38, 16 января 2009

[править] Fuse Виртуальные файловые системы

Ник Вейтч (Nick Veitch) копается в ядре, чтобы подружить файловые системы с пространством


Виртуальные файловые системы — это по-настоящему здорово, и к тому же весьма полезно. В духе Unix вообще все рассматривать как файлы, включая ресурсы, устройства и т. п. Файл-ориентированная операционная система может извлечь немало полезного из виртуальных файловых систем, и Linux в самом деле уже сейчас поддерживает некоторые из них (вспомним /proc).

Тем не менее, Fuse — свежая идея, способная заставить по-новому взглянуть на использование виртуальных файловых систем (VFS). Fuse означает «файловые системы в пространстве пользователя» (Filesystems in USErspace). Это не что иное, как часть исходного кода ядра ОС, которая позволяет программам генерировать свои собственные файловые системы. Зачем ВАМ это нужно? Вы только представьте: автоматизированная, с шифрованием, со сжатием, удаленная, — Fuse может сделать файловую систему практически из всего.

Даже если вам и неохота хлопотать по поводу создания собственной файловой системы, на Fuse стоит обратить внимание.

[править] Компилируем Fuse

Первый шаг — раздобыть исходные тексты… но постойте — если у вас уже есть новое ядро (выпущенное не раньше ноября 2005), вам это делать ни к чему. С выходом версии ядра 2.6.14, Fuse был официально принят в состав Linux. Так что, если вы являетесь обладателем этой или более поздней версии ядра, либо же читаете данную статью летом 2006 года, наблюдая за развитием чемпионата мира по футболу, можете спокойно перейти к следующему шагу.

Да, Fuse представляет собой модуль ядра, но особо переживать по этому поводу не стоит. Вам будет несложно его настроить и скомпилировать. Не потребуется даже пересобирать ядро заново. Однако если вы используете основной пакет ядра с вашего дистрибутива, следует убедиться в наличии установленных исходных текстов или заголовков ядра. Сегодня немногие дистрибутивы включают полный исходный код при стандартной установке; тем не менее, мы настоятельно рекомендуем вам его установить, особенно если вы желаете немного поэкспериментировать.

Исходные коды Fuse вы найдете в директории Magazine на прилагаемом к журналу диске, а также посетив сайт http://fuse.sourceforge.net, где, возможно, есть более свежая версия программы. Перед тем как непосредственно приступить к процессу компиляции, распакуйте исходный код и перейдите в директорию с Fuse. Далее компилируем Fuse — процедура вполне стандартная для большинства программ, разве что потребуется указать путь к исходным текстам ядра Linux (обычно это /usr/src/linux).

./configure –with-kernel=/usr/src/linux
make
make install

Е сли на этой стадии у вас возникли какие-либо трудности, возможно, они связаны с отсутствием файла .config в корне директории исходных текстов ядра. Скорее всего вы обнаружите его установленным в директории /boot, и все, что от вас потребуется — просто скопировать его.

(thumbnail)
1/ Модуль ядра Fuse перенаправляет файловые запросы программам в пространство пользователя — значит, с VFS вы можете использовать любое приложение.

Процесс установки автоматически настроит устройство Fuse. Это символьное устройство, которое будет «обитать» (равно как и другие устройства) в директории /dev. Данное устройство используется для передачи информации между ядром и файловой системой в адресном пространстве пользователя. Как это все взаимодействует, вы можете узнать, посмотрев на схему (см. Рис.1).

Так как это модуль ядра, вы можете запустить (либо перезапустить) его, используя стандартные утилиты ядра:

modprobe fuse
rmmod fuse

Перед тем как попробовать смонтировать файловую систему, основанную на Fuse, вам следует проверить, присутствует ли устройство Fuse и готово ли оно к работе. Сделать это можно, просто набрав команду ls. Получится примерно следующее:

ls /dev/fuse
crw-rw-rw- 1 root root 10, 229 Dec 20 10:04 /dev/fuse

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

cd example
mkdir plop
./hello plop
cat plop/hello

Здесь я создал директорию ‘plop’, но вы можете использовать любую точку монтирования, какую пожелаете. Заметьте, в отличие от обычных файловых систем, эта работает даже с непривилегированными пользователями, то есть любой может без особого труда монтировать и размонтировать такую файловую систему, когда потребуется. Команда mount, как таковая, при этом не нужна. В данном случае, как и с другими Fuse-ориентированными файловыми системами, запуск программы осуществляется вместе с указанием точки монтирования. Программа, а точнее сказать, библиотека Fuse, сама позаботится о монтировании.

Когда файловая система будет смонтирована, внутри директории как по волшебству появится файл, который будет содержать стандартное приветствие — «Hello World!». На самом деле никакого файла не существует, он — виртуальный, но это не означает, что его нельзя использовать. Он обладает всеми характеристиками обыкновенного файла — к нему применимы и ls, и cat, и less, вы даже можете скопировать его куда угодно. Так как мой пример весьма простенький, файл помечен атрибутом «только для чтения» — вы не сможете его отредактировать. Тем не менее, с остальными файловыми системами под управлением Fuse это не должно составить особого труда.

Fuse без проблем может работать сразу с несколькими файловыми системами одновременно, однако не стоит забывать размонтировать файловую систему, как только вы закончили с ней работать. Команда

fusermount –u plop

все сделает за вас. Вы не можете использовать для этого стандартную утилиту mount — она не сможет снять приложение, да и точку монтирования найти не сумеет.

Итак, мы готовы увидеть Fuse в действии. Сегодня самая полезная (на мой взгляд) файловая система во Fuse — это sshfs. Она позволяет монтировать файловую систему через простое SSH-соединение, а так как SSH поддерживает все необходимое, оно будет работать на любом сервере SSH. Ну, а пользователям это намного упрощает жизнь.

[править] Включаем SSH

Итак, скачиваем последние исходные тексты с http://fuse.sourceforge.net/sshfs.html. После простой компиляции, вы сможете монтировать файловую систему SSH. Проще всего сразу испробовать это на вашей системе.

mkdir plop
./sshfs mysshserver.net plop

В зависимости от настроек сервера, вам, возможно, потребуется ввести пароль (если только вы уже не настроили ключи доступа SSH). А в чем тут прелесть Fuse? Можно, конечно, использовать SFTP для передачи файлов, но монтирование файловой системы означает, что вам будут доступны для использования все привычные утилиты, например,


Персональные инструменты
купить
подписаться
Яндекс.Метрика