Устройство петли - Loop device

В Unix-подобных операционных системах устройство цикла , vnd (диск vnode) или lofi (интерфейс файла цикла) является псевдоустройством, которое делает компьютерный файл доступным как блочное устройство .

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

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

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

Использование петлевого монтажа

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

Петлевой монтаж имеет несколько применений. Это удобный метод автономного управления и редактирования образов файловой системы, которые в дальнейшем используются для нормальной работы системы. Сюда входят образы CD или DVD или системы установки. Его можно использовать для установки операционной системы в файловую систему без повторного разбиения диска. Он также обеспечивает постоянное разделение данных, например, при имитации съемных носителей на более быстром и удобном жестком диске или инкапсуляции зашифрованной файловой системы.

Доступность

Различные Unix-подобные операционные системы предоставляют функции устройства контура, используя разные имена.

В Linux имена устройств кодируются в записях таблицы символов соответствующих драйверов устройств. Устройство называется «петлевым» устройством, а узлы устройств обычно называются / dev / loop0 , / dev / loop1 и т. Д. Они могут быть созданы с помощью makedev для статического каталога устройства динамически средствами файловой системы устройства ( udev ) или напрямую с помощью mknod . Интерфейс пользователя для управления устройством цикла - losetup , который является частью пакета util-linux .

Иногда устройство петли ошибочно называют устройством обратной связи , но этот термин зарезервирован для сетевого устройства в операционных системах. Понятие петлевого устройства отличается.

В системах, производных от BSD, таких как NetBSD и OpenBSD , устройство цикла называется «виртуальным узловым устройством» или «vnd» и обычно находится в / dev / vnd0 , / dev / rvnd0 или / dev / svnd0 и т. Д. В файловая система. Для настройки используется программа vnconfig .

FreeBSD придерживалась тех же соглашений, что и другие системы BSD, до выпуска версии 5, в которой устройство цикла было включено в драйвер диска памяти («md»). Теперь настройка выполняется с помощью утилиты mdconfig .

В Solaris / OpenSolaris устройство цикла называется «файловый интерфейс обратной связи» или lofi и находится в / dev / lofi / 1 и т. Д. SunOS имеет программу настройки lofiadm . «lofi поддерживает сжатие только для чтения и шифрование для чтения и записи. С лета 1988 года для SunOS / Solaris доступен также сторонний драйвер fbk ( файл эмулирует блочное устройство ).

UnixWare включает динамически загружаемый драйвер устройства marry (7) и утилиту marry (1M). Драйвер marry позволяет рассматривать обычный файл как устройство. К обычному файлу можно получить доступ через блочное устройство / dev / marry / regfile или как символьное устройство / dev / marry / rregfile . Команда marry также поддерживает шифрование и дешифрование обычного файла.

MacOS реализует собственный механизм монтирования образа как часть абстракции дискового устройства с произвольным доступом. Команда hdiutil attach -imagekey diskimage-class = CRawDiskImage -nomount <filename> заставляет блочное устройство отображаться в / dev как обычное дисковое устройство и подустройства для распознанных разделов. Операции чтения и записи на эти устройства отправляются вспомогательному процессу пользовательского режима, который считывает данные из файла или записывает их в файл. В пользовательском интерфейсе он автоматически активируется при открытии образа диска. MacOS может обрабатывать образы дисков (.dmg или .iso), CD-ROM или DVD в различных форматах.

Циклическое монтирование было недоступно в операционных системах Microsoft Windows до Windows 7 , где эта функция реализована изначально и доступна через утилиту diskpart . Однако это средство часто добавляется с помощью сторонних приложений, таких как Daemon Tools и Alcohol 120% . Свободно доступные инструменты от VMware (Disk Mount Utility) и LTR Data (ImDisk) также могут использоваться для достижения аналогичной функциональности. В Windows XP и Vista также можно использовать функцию виртуального жесткого диска, добавив некоторый компонент из Microsoft Virtual Server 2005 R2.

В A2 , ранее AOS, а затем Bluebottle, виртуальный диск на основе файлов создается с помощью VirtualDisks.Create . На такой «диск» можно установить файловую систему с помощью VirtualDisks.Install .

Пример

Для монтирования файла, содержащего образ диска, в каталог требуется два шага:

  1. ассоциация файла с узлом устройства петли ,
  2. установка устройства петли в каталог точки монтирования

Эти две операции могут быть выполнены либо с помощью двух отдельных команд, либо с помощью специальных флагов для команды mount. Первая операция может выполняться такими программами, как losetup в Linux или lofiadm в SunOS. Например, если example.img это обычный файл, содержащий файловую систему, и /home/you/dir каталог пользователя Linux, суперпользователь (root) может смонтировать файл в каталоге, выполнив следующие две команды:

losetup /dev/loop0 example.img
mount /dev/loop0 /home/you/dir

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

Чтобы определить доступное устройство петли для использования в приведенных выше командах, суперпользователь (root) может использовать:

losetup -f

Утилита mount обычно способна обрабатывать всю процедуру:

mount -o loop example.img /home/you/dir

Затем устройство можно размонтировать с помощью следующей команды:

umount /home/you/dir
# or, after finding the associated loop number by e.g. mount | grep "/home/you/dir" 
# or losetup -a | grep example.img
umount /dev/loop<N>

В интерфейсе прикладного программирования нижнего уровня ( API ) ассоциация и разъединение файла с устройством цикла выполняется с помощью системного вызова ioctl на устройстве цикла.

Смотрите также

Рекомендации

внешняя ссылка