Как удалить loop device ubuntu

Обновлено: 07.07.2024

Файловая система с шифрованием сохранит ваши данные даже в случае, если кто-нибудь украдет ваш компьютер и попытается смонтировать диск на другой машине.

Есть несколько методов создания файловых систем с шифрованием, основанных, как правило, на применении псевдоустройства loopback некоторого вида и среднего слоя с шифрованием. К числу популярных методов относится использование модулей cryptloop и loop-aes, но совсем недавняя разработка - модуль с названием dm-crypt имеет ряд интересных преимуществ, так что мы в данном совете воспользуемся последним модулем. Он работает быстрее, чем cryptloop, его проще использовать, чем loop-aes, и, поскольку он основан на новой функции ядра 2.6, называемой device-mapper, этот модуль может работать с самыми разнообразными блочными устройствами даже при использовании RAID или LVM. Функция device-mapper предлагает универсальный и гибкий способ добавления дополнительных виртуальных слоев над уже существующими блочными устройствами. Это позволяет разработчикам создавать специальные обработчики, предназначенные для зеркалирования, получения снимков состояния данных, их объединения и шифрования. Что касается средств работы с файловой системой, то они работают с реальным блочным устройством, а любые специальные функциональные возможности скрыты благодаря функции device-mapper.

В модуле dm-crypt задействована функция device-mapper, которая использует Crypto API ядра для реализации прозрачного шифрования. Этот подход имеет обратную совместимость с дисковым форматом, используемым в cryptloop.

Настройка ядра

Модуль dm-crypt для выполнения фактического шифрования использует crypto API ядра. Стандартное ядро Dapper загружает криптографические шифры в виде модулей, и в этом совете будет использоваться 256-битное шифрование AES, так что убедитесь, что в вашем ядре есть поддержка AES:

Подсказка. 256-битное шифрование AES является исключительно сильным алгоритмом шифрования, который был одобрен NSA (National Security Agency — Американским национальным агентством безопасности) для защиты секретной информации до уровня TOP SECRET (СОВЕРШЕННО СЕКРЕТНО). Это самый высокий уровень безопасности, касающийся защиты информации, потеря которой, если она разглашается, ведет к исключительно серьезному ущербу американской национальной безопасности.

Если у вас есть поддержка AES, то будут выданы данные следующего вида:

Если модуль не загружен, вы можете с помощью modprobe загрузить его принудительно:

Пакет cryptsetup должен загружать, когда потребуется, этот модуль автоматически, но полезно знать, как проверить, что модуль загружен и, если это необходимо, загрузить модуль вручную.

Установите пакет dmsetup, в котором есть все инструментальные средства, необходимые для использования функции device-mapper:

Убедитесь, что пакет dmsetup создал устройство device mapper:

Загрузите модуль ядра dm-crypt:

Когда загружается модуль dm-crypt, он автоматически сам регистрируется и регистрирует функцию device-mapper, так что после этого проверьте, что модуль распознал функцию device-mapper и добавил функцию crypt :

Если все идет по плану, вы увидите crypt в выходных данных:

Теперь ваша система подготовлена для монтирования устройства с шифрованием. Однако, вам сначала нужно его создать!

Создание устройства с шифрованием

Есть два варианта создания файловой системы, которая будет смонтирована как устройство с шифрованием: создать образ диска в виде файла и смонтировать его как псевдоустройство loopback, либо использовать фактически существующее поблочное устройство (например, /dev/hda3). В обоих случаях эта процедура практически идентична, за исключением лишь некоторой дополнительной подготовки, требуемой для создания и привязки псевдоустройства loopback.

Создание образа псовдоустройства loopback disk

Если у вас нет реального устройства, такого как флэш-карта или дополнительный раздел диска, которое можно зашифровать, вы можете вместо этого воспользоваться утилитой dd для того, чтобы создать образ пустого диска и смонтировать его как псевдоустройство loopback. В нашем примере мы назовем его secret.img и сделаем его размером в 100 Мб. Если вы захотите сделать его другого размера, просто измените значение count :

Чтобы связать образ диска с псеводустройством loopback, воспользуйтесь командой losetup:

Теперь у вас на /dev/loop/0 будет виртуальное поблочное устройство, к которому вы можете обращаться точно также, как и к любым другим устройствам с поблочным доступом.

Настройка устройства блочного ввода/вывода

Теперь вы можете настроить либо реально существующее блочное устройство (например, /dev/sda1), либо виртуальное блочное устройство, например, образ псевдоустройства loopback, которое было создано на предыдущем шаге, а затем с помощью функции device-mapper подключить его как логический том с шифрованием. Сначала с помощью cryptsetup создайте логический том (предположим, с названием mysecrets) и свяжите с ним устройство поблочного ввода/вывода:

Последний аргументом должно указываться блочное устройство, которые будут использоваться как том с шифрованием, так что если вы в качестве виртуального блочного устройства используете образ псеводустройства loopback, созданного на предыдущем этапе, то вместо предыдущей команды выполните следующую команду:

В любом случае, вам будет предложено ввести фразу-пароль (passphrase) для логического тома, а флаг -y указывает утилите cryptsetup запросить подтверждение фразы-пароля, что делается путем ее повторного ввода. Очень важно набрать фразу-пароль правильно, т.к. в противном случае вы сами заблокируете доступ к своим данным!

Затем вы можете удостовериться, что логический том был создан:

Вы должны в списке увидеть логический том, хотя номера устройств major и minor могут быть другими:

Функция device-mapper монтирует эти виртуальные устройства в /dev/mapper, так что у вас теперь должно быть виртуальное блочное устройство /dev/mapper/mysecrets, которое ведет себя точно так же, как любое другое блочное устройство, но только для него прозрачно выполняется шифрование.

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

Создайте точку монтирования для нового виртуального блочного устройства и смонтируйте его:

Теперь вы должны видеть его как смонтированное устройство точно также, как и любые другие устройства:

Теперь у вас есть смонтированная файловая система, которая ведет себя так же, как любая другая файловая система, но для любых данных, которые вы записываете на /mnt/mysecrets/, будет автоматически выполняться шифрование перед записью их на диск и все, что вы считываете с этого устройства, будет на лету расшифровываться.

Размонтирование

Размонтирование файловой системы с шифрованием выполняется обычным образом:

Даже после того, как вы размонтируете блочное устройство, он все еще будет сконфигурировано dm-crypt как виртуальное устройство. Вы можете убедиться в этом, снова выполнив команду sudo dmsetup ls и увидев, что устройство все еще указано в списке. Поскольку dm-crypt кэширует фразу-пароль, любой другой пользователь, использующий этот компьютер, теперь может перемонтировать устройство без необходимости указывать фразу-пароль. Чтобы предотвратить эту возможность, устройство после его размонтирования нужно явно удалить из dm-crypt:

После этого, его действительно не будет и для его перемонтирования потребуется повторный ввод фразы-пароля.

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

Перемонтирование

Поскольку вам, вероятно, захочется монтировать устройство с шифрованием точно также, как это делается в обычных случаях, вы можете облегчить себе работу, если добавите в /etc/fstab следующую строку:

Вы также можете создать скрипт, который позаботится о создании устройства dm-crypt и смонтирует для вас том (замените /dev/DEVICENAME на имя фактически существующего устройства или на путь к файлу):

Если вы используете псевдоустройство loopback, вы можете создать скрипт, который будет подключать ваше устройство:

Совет по поводу совета

Вы даже можете зашифровать весь ваш домашний директорий, если настроите подсистему PAM (Pluggable Authentication Modules — подключаемые модули аутентификации) так, чтобы он монтировался, когда вы входите в систему. Модуль libpam-mount позволяет PAM автоматически монтировать любые устройства, когда пользователь входит в систему, поэтому установите этот модуль, а также установите пакет openssl:

Отредактируйте файл /etc/pam.d/common-auth и добавьте в конце файла следующую строку:

Затем отредактируйте файл /etc/pam.d/common-session, добавив в конце файла следующую строку:

Вам следует настроить модуль PAM так, чтобы было известно какой и где монтировать том. В нашем примере имя пользователя - jon и вы используете устройство /dev/sda1, так что добавьте в файл /etc/security/pam_mount.conf свое имя пользователя и устройство:

Подсказка. Если вы хотите использовать образ диска, вы должны указать здесь псевдоустройство loop device (например, /dev/loop/0) и должны быть уверены, что система запустит команду losetup прежде, чем jon получит возможность войти в систему (например, вы можете поместить в файл /etc/rc.local строку losetup /dev/loop/0 /home/secret.img ).

Т.к. том с шифрованием, модулю PAM для того, чтобы его смонтировать, необходим доступ к ключу. Последний аргумент указывает модулю PAM брать ключ из файла /home/jon.key, так что создайте файл с ключом, зашифровав вашу фразу-пароль с помощью OpenSSL:

Вам будет предложено ввести пароль, и вы должны ввести тот же самый пароль, который вы используете при входе в систему под этим пользователем. Это связано с тем, что когда вы войдете в систему, модуль PAM возьмет пароль, который вы введете, и воспользуется им для дешифровки ключевого файла, а затем воспользуется фразой-паролем, находящейся в файле с ключом, для монтирования с помощью dm-crypt вашего домашнего директория.

Однако, заметьте, что на предыдущем шаге ваш пароль будет сохранен в обычном текстовом виде в вашем файле .history, так что прежде, чем продолжить работать, удалите вашу историю (с помощью команды history -c ), или, по крайней мере, отредактируйте этот файл так, чтобы из него удалить ваш пароль.

У меня достаточно памяти, но каким-то образом я /dev/loop0 показываю использование 9 ГБ, вот мое df-h .

Я пытался проверить, что там было. Но это только приводит к тому, что на терминале печатаются грузы, после которых моя система дает сбой.

Любая помощь будет оценена.

Это петлевое устройство не занимает места. К этому виртуальному устройству можно подключить образ и файлы ISO. С / dev / loop0, смонтированным на /, я предполагаю, что это система Wubi? Если так, что-то еще использует ваше пространство. Если это система Wubi, / dev / loop0 покажет оставшееся место и используется на образе виртуального жесткого диска на физическом жестком диске.

Вы можете использовать команду "du", чтобы определить реальные файлы, занимающие ваше место.

Затем удалите все неиспользуемые ядра, скопировав и вставив следующие команды в терминал.

Принимая во внимание все неиспользованные ядра. (Самое последнее ядро ​​(т. Е. Имеющее наибольшее число) будет тем, которое вы используете в данный момент) Затем, когда вы уверены, какое ядро ​​вы собираетесь удалить, введите следующее:

Где xxxx относится к ядру Linux, которое вы пытаетесь удалить.

Я на самом деле заинтересован в том, чтобы вернуть потерянное пространство, а не выделять больше места!

Я не могу добавить комментарий к вышеупомянутым ответам из-за своей низкой репутации, поэтому я добавляю здесь новый «ответ» (которого на самом деле нет). Согласно Devyn Collier Johnson мы можем использовать «du». Это не дает никакого результата для меня:

В заключение: я не могу идти в любом направлении. Я не могу ни удалить неиспользуемые / ненужные вещи, ни увеличить / dev / loop0 /. Я надеюсь, что кто-то может помочь!

Обновление: я попытался снова выполнить «живое изменение размера», и я не понимаю, почему на этот раз, выполнив команду «sudo losttup -c / dev / loop0 /», просто повесил компьютер. Я попытался пропустить этот шаг, и он сработал. Теперь я увеличил размер / dev / loop0. Тем не менее, я до сих пор не знаю, где / как я использую дисковое пространство .

Я небезопасно удалил USB-устройство, которое было подключено к loop0 с losetup и не мог удалить ни отстегнуть loop0 потом.

losetup -a показывает /dev/loop0: [0005]:145606719 (/dev/sdb1)

когда я перемонтирую устройство в /dev / sdb1, umount это и попробуйте losetup -d /dev/loop0 , Я все равно получу ту же ошибку loop: can't delete device /dev/loop0: Device or resource busy . Есть ли способ избавиться от устройства loop?

вы уверены, что устройство не занято? Вы когда-нибудь пробовали fuser для определения возможного PID?

меры предосторожности получить всю возможную информацию:

возможно, Вам также придется использовать dmsetup удалить отображение устройства. Самый простой способ, если он не мешает любым другим сопоставлениям, - использовать dmsetup remove_all .

у меня была аналогичная проблема с картой SD и предложение Aaoron Флин с помощью dmsetup работал для меня.

в частности, вы должны быть в состоянии ls /dev / mapper, чтобы увидеть, есть ли разделы.

Если это так, вы можете использовать dmsetup remove /dev/mapper/loop0p2 чтобы избавиться от ненужных перегородок. Это может быть полезно, если вы хотите сохранить некоторые сопоставления.

Если вы используете Luks, вам нужно сначала luksClose

оказывается, файл изображения, связанный с устройством цикла, содержал раздел "Linux LVM", который был автоматически установлен, как показано pvscan :

поэтому мне пришлось деактивировать все логические тома внутри группы томов:

В конце концов я смог красиво отсоединить петлевое устройство:

попробуйте перезагрузить модуль ядра петли. Если это не поможет, перезагрузитесь.

определенно есть процесс, использующий его. Если вы не смогли определить, какой процесс препятствует его удалению, перезапустите сервер, если сможете.

то же, что и @frntn.

петли были заняты RAID:

Я удалил их и все снова подчиняется приказам.

Я просто щелкните правой кнопкой мыши устройство цикла в dolphin и размонтировать его.

У меня проблема с которой я никак не могу справится, точнее не могу понять что и где правильно выключить.

Монтирую образ блочного устройства через kpartx -a <ИМЯ>.img, далее забиваю нулями этот образ через dd предварительно. Создаю два раздела, и в итоге имею в /dev вот такие устройства: /dev/loop0 /dev/loop0p1 /dev/loop0p2. На втором разделе (loop0p2) создаю LVM-том и 2 LVM-раздела на нем, форматирую их и сразу же демонтирую. После, чтобы отключить LVM-том даю команду vgchange -an <VG> и сразу же отключаю образ kpartx -d <ИМЯ>.img. При этом команда losetup дает мне понять что мое loop0-устройство успешно отключена, не выводя его в своем списке.

А самое интересное, что после отключения образа файлы /dev/loop0[pX] остаются в каталоге, а вместе с ними и LVM-том на них. Команда dmsetup ls никаких устройств связанных этим lVM не видит. Команда blkid продолжает упорно писать, что в /dev/loop0p2 располежен все тот же LVM-том VG.

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

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


Монтирую образ блочного устройства через kpartx
далее забиваю нулями через dd предварительно
Создаю . форматирую . сразу же демонтирую . и сразу же отключаю образ kpartx -d <ИМЯ>.img

Приведи просто список выполняемых команд.

losetup -d /dev/loop0


Создаю файловые системы через fdisk

Делаю запись чего-нибудь внутрь ФС

Последние 2 команды опишу подробнее и далее проблему:

А воз и ныне там.

Как kpartx смог создать /dev/loop0p2 когда на диске еще нет разделов!?


На этом этапе он их не создавал! Создал я их после того как примапил образ файла Чуть ниже я написал

На самом деле я просто хочу понять, что не дает мне отключить полностью устройства loop0*, ведь пока они будут в системе LVM-том будет сканироваться командой vgscan


kpartx эмулирует блочное устройство, какой бы файл ему не указать. В моем случае файл образа был забит нулями и не содержал никакой разметки. Командой parted и fdisk я создал mbr загрузчик и 2 раздела, на которых я создал 2 раздела loop0p1 и loop0p2.

kpartx эмулирует блочное устройство, какой бы файл ему не указать.

man kpartx: This tool, derived from util-linux' partx, reads partition tables on specified device and create device maps over partitions segments detected.

Ты выполнил команду kpartx до создания разделов, кто создал loop0p1 и loop0p2?


You're doing it wrong! Тебе не нужен kpartx.


Ты выполнил команду kpartx до создания разделов, кто создал loop0p1 и loop0p2?

При при выполнении команды kpartx -a резервируется loop-устройство (в моем случае loop0). Это можно увидеть командой losetup либо kpartx -l. loop0p1 и loop0p2 созданы мной командой fdisk после того как я примапил файл.

Читайте также: