Введение

Псевдоустройство Unix
В Unix-подобных операционных системах, петлевое устройство, vnd (vnode disk) или lofi (loop file interface) — это псевдоустройство, которое обеспечивает доступ к компьютерному файлу как к блочному устройству. Перед использованием петлевое устройство должно быть связано с существующим файлом в файловой системе. Это связывание предоставляет пользователю интерфейс прикладного программирования (API), позволяющий использовать файл вместо блочного специального файла (см. файловая система устройств). Таким образом, если файл содержит целую файловую систему, его можно смонтировать так, как если бы это было дисковое устройство. Файлы такого типа часто используются для ISO-образов CD и образов дискет. Монтирование файла, содержащего файловую систему, через такое петлевое монтирование делает файлы внутри этой файловой системы доступными. Они отображаются в каталоге точки монтирования. Петлевое устройство может обеспечивать некоторую обработку данных во время этого перенаправления. Например, устройство может представлять собой расшифрованную версию зашифрованного файла. В этом случае файл, связанный с петлевым устройством, может быть другим псевдоустройством. Это особенно полезно, когда это устройство содержит зашифрованную файловую систему. Если поддерживается, петлевое устройство в этом случае является расшифрованной версией исходного зашифрованного файла и, следовательно, может быть смонтировано как обычная файловая система.

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

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

Доступность

Различные Unix-подобные операционные системы предоставляют функциональность loop-устройства, используя разные имена. В Linux имена устройств кодируются в записях таблицы символов соответствующих драйверов устройств. Устройство называется loop-устройством, а узлы устройств обычно именуются /dev/loop0, /dev/loop1 и т.д. Их можно создать с помощью makedev для статического каталога устройств, динамически средствами файловой системы устройств (udev) или непосредственно с помощью mknod. Пользовательский интерфейс управления loop-устройством — losetup, который входит в состав пакета util linux. Иногда loop-устройство ошибочно называют loopback-устройством, но этот термин зарезервирован для сетевого устройства в операционных системах. Концепция loop-устройства отлична. В системах, основанных на BSD, таких как NetBSD и OpenBSD, loop-устройство называется «виртуальным узловым устройством» или «vnd» и обычно располагается в файловой системе по адресам /dev/vnd0, /dev/rvnd0 или /dev/svnd0 и т.д. Для настройки используется программа vnconfig. FreeBSD следовала тем же соглашениям, что и другие системы BSD, до выпуска версии 5, в которой loop-устройство было включено в драйвер диска в памяти («md»). Настройка теперь выполняется с помощью утилиты mdconfig. В Solaris/OpenSolaris loop-устройство называется «loopback файловым интерфейсом» или lofi и располагается по адресу /dev/lofi/1 и т.д. SunOS имеет программу настройки lofiadm. lofi поддерживает сжатие только для чтения и шифрование с чтением и записью. Также доступен сторонний драйвер fbk (File emulates Blockdevice) для SunOS/Solaris с лета 1988 года. 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-образы в различных форматах. Loop-монтирование было недоступно в операционных системах 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.