Loop devices (петлевые устройства) — это механизм в Linux, который позволяет монтировать файлы как блочные устройства. Это создает виртуальный интерфейс между обычным файлом и системой, позволяя обращаться с файлом как с физическим диском или разделом.
Виртуальные блочные устройства
Эмулируют поведение физических дисков (/dev/sda, /dev/nvme0n1 и т.д.), но используют файлы как backing storage.
Динамическое создание
losetup -f # Найти свободное loop-устройство
Современные ядра автоматически создают устройства /dev/loop0..N по мере необходимости.
Гибкость размеров
Размер ограничен только файловой системой, содержащей файл-образ.
# Монтирование ISO образа
mount -o loop ubuntu-22.04.iso /mnt/iso
# Создание файла-образа (1GB)
dd if=/dev/zero of=virtual_disk.img bs=1M count=1024
# Форматирование в ext4
mkfs.ext4 virtual_disk.img
# Монтирование через loop
mount -o loop virtual_disk.img /mnt/vdisk
# Создание зашифрованного контейнера
cryptsetup luksFormat /dev/loop0
# Создание нескольких loop-устройств для теста LVM
for i in {1..4}; do
truncate -s 1G disk$i.img
losetup -fP disk$i.img
done
Автоматическое подключение:
# Постоянное связывание файла с loop-устройством
losetup -P /dev/loop0 disk.img
Прямой доступ к разделам:
# Доступ к первому разделу в образе
mount -o loop,offset=$((512*2048)) disk.img /mnt
(offset рассчитывается как start_sector * sector_size)
Разреженные файлы:
# Создание разреженного файла (занимает место только при записи)
truncate -s 100G sparse.img
Просмотр активных устройств:
losetup -a
# или
lsblk | grep loop
Освобождение устройства:
losetup -d /dev/loop0
# или автоматически при umount
# 1. Создаем образ для LVM теста
truncate -s 5G lvm_test.img
# 2. Связываем с loop-устройством
losetup -fP lvm_test.img
DEV=$(losetup -a | grep lvm_test | awk -F: '{print $1}')
# 3. Создаем PV и VG
pvcreate $DEV
vgcreate test_vg $DEV
# 4. Создаем LV и монтируем
lvcreate -L 2G -n test_lv test_vg
mkfs.ext4 /dev/test_vg/test_lv
mount /dev/test_vg/test_lv /mnt/test
Резюмируем: loop-устройства — это мощный инструмент для работы с виртуальными блочными устройствами в Linux, который находит применение в тестировании, безопасном хранении данных, контейнеризации и многих других сценариях. Они обеспечивают гибкость и изоляцию, не требуя дополнительного оборудования.