- Монтирование образов дисков
- Содержание
- Подключение стандартного ISO-образа
- Используя графический интерфейс
- Как создать виртуальный том жесткого диска с помощью файла в Linux
- Создайте новый образ для хранения тома виртуального диска
- Удаление тома виртуального диска
- Виртуальные файловые системы в Linux: зачем они нужны и как они работают? Часть 1
- Запуск Linux с виртуального диска vmdk на реальном железе и VirtualBox
Монтирование образов дисков
Содержание
Подключение стандартного ISO-образа
Используя графический интерфейс
Для монтирования образов дисков в Gnome имеется множество графических утилит:
ISOmorphin — программа написанная на языке Python. Для работы необходимо закачать и распаковать архив в любое удобное место, а затем запустить файл isomorphin.py в папке.
Gmount-iso — Маленькая и довольно удобная программка, позволяющая монтировать ISO образы в произвольную папку, а также отмонтировать уже подключённые образы. Добавлена возможность расчета md5 суммы и объема образа. Интерфейс программы прост до безобразия и в пояснениях не нуждается. Для установки используйте команду:
Данная программа будет доступна в меню: Приложения→Системные→gISOMountUsage.
Furius ISO Mount — автоматически создает точку монтирования в домашней папке пользователя и удаляет ее при размонтировании, позволяет записывать образы в форматах ISO и IMG. А так же рассчитывать контрольные суммы Md5 и SHA1.
AcetoneISO — графическое приложение, написанное на Qt, для работы с образами CD/DVD дисков (клон Daemon Tools для Linux с новыми возможностями). На сайте заявлены следующие возможности:
Источник
Как создать виртуальный том жесткого диска с помощью файла в Linux
Виртуальный жесткий диск (VHD) – это формат файла образа диска, который представляет собой виртуальный жесткий диск, способный хранить все содержимое физического жесткого диска.
Это контейнерный файл, который действует подобно физическому жесткому диску.
Образ диска копирует существующий жесткий диск и включает в себя все данные и структурные особенности.
Как и физический жесткий диск, VHD может содержать файловую систему, и вы можете использовать ее для хранения и запуска операционной системы, приложений, а также для хранения данных.
Одно из типичных применений виртуальных жестких дисков в VirtualBox Virtual Machines (VM) для хранения операционных систем, приложений и данных.
В этой статье мы покажем, как создать том виртуального жесткого диска, используя файл в Linux.
Это руководство полезно для создания виртуальных жестких дисков в целях тестирования в вашей ИТ-среде.
В этом руководстве мы создадим том VHD размером 1 ГБ и отформатируем его в файловой системе EXT4.
Создайте новый образ для хранения тома виртуального диска
Есть несколько способов сделать это, но самый простой способ – использовать нашу любимую команду dd.
В этом примере мы будем создавать том VHD размером 1 ГБ.
- if = /dev/zero: входной файл для предоставления символьного потока для инициализации хранилища данных
- of = VHD.img: файл образа, который будет создан как том хранения
- bs = 1M: чтение и запись до 1M одновременно
- count = 1200: копировать только 1200M (1GB) входных блоков
Далее нам нужно отформатировать тип файловой системы EXT4 в файле образа VHD с помощью утилиты mkfs.
Ответьте y, когда будет предложено, что /media/VHD.img не является блочным специальным устройством, как показано на следующем снимке экрана.
Чтобы получить доступ к тому VHD, нам нужно подключиться к каталогу (точка монтирования).
Выполните эти команды, чтобы создать точку монтирования и смонтировать том VHD соответственно.
-O используется для указания опций для монтирования, здесь цикл опций указывает узел устройства в каталоге /dev/.
Примечание. Файловая система VHD будет оставаться подключенной только до следующей перезагрузки. Чтобы подключить ее при загрузке системы, добавьте эту запись в файл /etc/fstab.
Теперь вы можете проверить вновь созданную файловую систему VHD с точкой монтирования, используя следующую команду df.
Удаление тома виртуального диска
Если вам больше не нужен том VHD, выполните следующие команды для размонтирования файловой системы VHD, а затем удалите файл образа:
Используя ту же идею, вы также можете создать область / пространство подкачки, используя файл в Linux.
Источник
Виртуальные файловые системы в Linux: зачем они нужны и как они работают? Часть 1
Всем привет! Мы продолжаем запуски новых потоков по уже полюбившимся вам курсам и сейчас спешим сообщить о том, что у нас стартует новый набор по курсу «Администратор Linux», который запустится в конце апреля. К этому событию и будет приурочена новая публикация. С оригиналом материала можно ознакомиться тут.
Виртуальные файловые системы выполняют роль некой волшебной абстракции, которая позволяет философии Linux говорить, что «всё является файлом».
Что такое файловая система? Опираясь на слова одного из первых контрибьюторов и авторов Linux Робера Лава, «Файловая система – это иерархическое хранилище данных, собранное в соответствии с определенной структурой». Как бы то ни было, это определение в равной мере хорошо подходит для VFAT (Virtual File Allocation Table), Git и Cassandra (база данных NoSQL). Так что именно определяет такое понятие, как «файловая система»?
Основы файловой системы
Ядро Linux имеет определенные требования к сущности, которая может считаться файловой системой. Она должна реализовывать методы open() , read() и write() для постоянных объектов, которые имеют имена. С точки зрения объектно-ориентированного программирования, ядро определяет обобщенную файловую систему (generic filesystem) в качестве абстрактного интерфейса, а эти три большие функции считаются «виртуальными» и не имеют конкретного определения. Соответственно, реализация файловой системы по умолчанию называется виртуальной файловой системой (VFS).
Если мы можем открывать, читать и записывать в сущность, то эта сущность считается файлом, как мы видим из примера в консоли сверху.
Феномен VFS лишь подчеркивает наблюдение, характерное для Unix-подобных систем, которое гласит, что «всё является файлом». Подумайте, насколько странно, что тот маленький пример сверху с /dev/console показывает, как на самом деле работает консоль. На картинке изображена интерактивная Bash сессия. Отправка строки в консоль (virtual console device) отображает ее на виртуальном экране. VFS имеет другие, еще более странные свойства. Например, она дает возможность осуществлять поиск по ним.
Знакомые нам системы, такие как ext4, NFS и /proc имеют три важные функции в структуре данных С, которая называется file_operations. Кроме того, определенные файловые системы расширяют и переопределяют функции VFS привычным объектно-ориентированным способом. Как отмечает Роберт Лав, абстракция VFS позволяет пользователям Linux беспечно копировать файлы в или из сторонних операционных систем или абстрактных сущностей, таких как pipes, не беспокоясь об их внутреннем формате данных. Со стороны пользователя (userspace) с помощью системного вызова процесс может копировать из файла в структуры данных ядра с помощью метода read() одной файловой системы, а затем использовать метод write() другой файловой системы для вывода данных.
Определения функций, которые принадлежат к базовым типам VFS, находятся в файлах fs/*.c исходного кода ядра, в то время как подкаталоги fs/ содержат определенные файловые системы. В ядре также содержатся сущности, такие как cgroups , /dev и tmpfs , которые требуются в процессе загрузки и поэтому определяются в подкаталоге ядра init/ . Заметьте, что cgroups , /dev и tmpfs не вызывают «большую тройку» функций file_operations , а напрямую читают и пишут в память.
На приведенной ниже диаграмме показано, как userspace обращается к различным типам файловых систем, обычно монтируемых в системах Linux. Не показаны такие конструкции как pipes , dmesg и POSIX clocks , которые также реализуют структуру file_operations , доступ к которым проходит через слой VFS.
VFS — это «слой оболочки» между системными вызовами и реализациями определенных file_operations , таких как ext4 и procfs . Функции file_operations могут взаимодействовать либо с драйверами устройств, либо с устройствами доступа к памяти. tmpfs , devtmpfs и cgroups не используют file_operations , а напрямую обращаются к памяти.
Существование VFS обеспечивает возможность переиспользовать код, так как основные методы, связанные с файловыми системами, не должны быть повторно реализованы каждым типом файловой системы. Переиспользование кода – широкоприменяемая практика программных инженеров! Однако, если повторно используемый код содержит серьезные ошибки, от них страдают все реализации, которые наследуют общие методы.
/tmp: Простая подсказка
Простой способ обнаружить, что VFS присутствуют в системе – это ввести mount | grep -v sd | grep -v :/ , что покажет все смонтированные ( mounted ) файловые системы, которые не являются резидентами на диске и не NFS, что справедливо на большинстве компьютеров. Одним из перечисленных маунтов ( mounts ) VFS, несомненно, будет /tmp , верно?
Все знают, что хранение /tmp на физическом носителе – безумие! Источник.
Почему нежелательно хранить /tmp на физическом носителе? Потому что файлы в /tmp являются временными, а устройства хранения медленнее, чем память, где создается tmpfs. Более того, физические носители более подвержены износу при перезаписи, чем память. Наконец, файлы в /tmp могут содержать конфиденциальную информацию, поэтому их исчезновение при каждой перезагрузке является неотъемлемой функцией.
К сожалению, некоторые скрипты инсталляции Linux дистрибутивов создают /tmp на устройстве хранения по умолчанию. Не отчаивайтесь, если это произошло и с вашей системой. Выполните несколько простых инструкций с Arch Wiki, чтобы это исправить, и помните о том, что память выделенная для tmpfs , становится недоступной для других целей. Другими словами, система с гигантской tmpfs и большими файлами в ней может израсходовать всю память и упасть. Другая подсказка: во время редактирования файла /etc/fstab , помните о том, что он должен заканчиваться новой строкой, иначе ваша система не загрузится.
Помимо /tmp , VFS (виртуальные файловые системы), которые наиболее знакомы пользователям Linux – это /proc и /sys . ( /dev располагается в общей памяти и не имеет file_operations ). Почему именно эти два компонента? Давайте разберемся в этом вопросе.
procfs создает снимок мгновенного состояния ядра и процессов, которые он контролирует для userspace . В /proc ядро выводит информацию о том, какими средствами оно располагает, например, прерывания, виртуальная память и планировщик. Кроме того, /proc/sys – это место, где параметры, настраиваемые с помощью команды sysctl , доступны для userspace . Статус и статистика отдельных процессов выводится в каталогах /proc/ .
Здесь /proc/meminfo — это пустой файл, который тем не менее содержит ценную информацию.
Поведение /proc файлов показывает, какими непохожими могут быть дисковые файловые системы VFS. С одной стороны, /proc/meminfo содержат информацию, которую можно посмотреть командой free . С другой же, там пусто! Как так получается? Ситуация напоминает знаменитую статью под названием «Существует ли луна, когда на нее никто не смотрит? Реальность и квантовая теория», написанную профессором физики Корнельского университета Дэвидом Мермином в 1985 году. Дело в том, что ядро собирает статистику памяти, когда происходит запрос к /proc , и на самом деле в файлах /proc ничего нет, когда никто туда не смотрит. Как сказал Мермин, «Фундаментальная квантовая доктрина гласит, что измерение, как правило, не выявляет ранее существовавшего значения измеряемого свойства.» (А над вопросом про луну подумайте в качестве домашнего задания!)
Кажущаяся пустота procfs имеет смысл, поскольку располагающаяся там информация динамична. Немного другая ситуация с sysfs . Давайте сравним, сколько файлов размером не менее одного байта есть в /proc и в /sys .
Procfs имеет один файл, а именно экспортированную конфигурацию ядра, которая является исключением, поскольку ее нужно генерировать только один раз за загрузку. С другой стороны, в /sys лежит множество более объемных файлов, многие из которых занимают целую страницу памяти. Обычно файлы sysfs содержат ровно одно число или строку, в отличие от таблиц информации, получаемой при чтении таких файлов, как /proc/meminfo .
Цель sysfs – предоставить свойства доступные для чтения и записи того, что ядро называет «kobjects» в userspace. Единственная цель kobjects – это подсчет ссылок: когда удаляется последняя ссылка на kobject, система восстановит ресурсы, связанные с ним. Тем не менее, /sys составляет большую часть знаменитого «stable ABI для userspace» ядра, которое никто никогда, ни при каких обстоятельствах не может «сломать». Это не означает, что файлы в sysfs статичны, что противоречило бы подсчету ссылок на нестабильные объекты.
Стабильный двоичный интерфейс приложений ядра (kernel’s stable ABI) ограничивает то, что может появиться в /sys , а не то, что на самом деле присутствует в данный конкретный момент. Листинг разрешений на файлы в sysfs обеспечивает понимание того, как конфигурируемые параметры устройств, модулей, файловых систем и т.д. могут быть настроены или прочитаны. Делаем логический вывод, что procfs также является частью stable ABI ядра, хотя это не указано явно в документации.
Файлы в sysfs описывают одно конкретное свойство для каждой сущности и могут быть читаемыми, перезаписываемыми или и то и другое сразу. «0» в файле говорит о том, что SSD не может быть удален.
Вторую часть перевода начнем с того, как наблюдать за VFS с помощью инструментов eBPF и bcc, а сейчас ждем ваши комментарии и традиционно приглашаем на открытый вебинар, который уже 9 апреля проведет наш преподаватель — Владимир Дроздецкий.
Источник
Запуск Linux с виртуального диска vmdk на реальном железе и VirtualBox
Возникла необходимость обеспечить работу Linux как на виртуальной машине (VirtualBox), так и на реальном железе. После долгих поисков и попыток запускать Linux с виртуального диска формата VHD, по примеру Windows, которые либо слишком сложны, либо не работают, я пришел к достаточно простому способу сделать это. Правда не из дисков в формате VHD, а из образа раздела диска в формате VMDK.
Linux возможно загрузить из образа раздела. Теперь нужно сделать так, чтобы у нас был и образ диска, который понимает VirtualBox и образ раздела, который может загрузить grub.
Далее расписано, как это можно сделать быстро и без лишней головной боли.
Все что далее, сделано из Windows.
Создаем новый диск фиксированного размера в формате vmdk:
Имеем созданные файлы:
- test1.vmdk — дескриптор диска, текстовый файл
- test1-flat.vmdk — файл с образом диска
Теперь необходимо в начало диска добавить еще один кусок размером 1M.
Создаем файл test1-boot.vmdk размером 1M:
В test1.vmdk меняем createType=»custom» на createType=»monolithicFlat» . Это будет означать, что диск состоит из нескольких файлов.
Добавляем test1-boot.vmdk в test1.vmdk , первым. После добавления test.vmdk должен выглядеть как-то так:
где 2048 — это 2048*512=1048576 байт (1M) для этой части диска.
Создаем виртуальную машину для установки Linux, подключаем к ней диск test1.vmdk и ставим ubuntu/kubuntu/xubunu. Я ставил только эти дистрибутивы, начиная с версий 18.04 до последней (еще не вышедшей) 21.04, все остальное не проверял.
Особенность при установке: должен быть создан только один раздел на виртуальном диске и должен он быть на границе 1M. Это поведение по умолчанию при ручном создании раздела.
Загрузчик должен быть установлен на диск /dev/sda, а не на раздел /dev/sda1. Это тоже поведение по умолчанию.
После того, как все установили, перезагружаемся в VirtualBox, чтобы убедится, что Linux загружается.
Теперь загрузим только что установленный Linux на реальном железе. Проще всего сделать это с использованием загрузочной флешки.
Создаем загрузочную флешку (или usb-диск) с использованием Ventoy (https://www.ventoy.net/).
Создаем файл ventoy\ventoy_grub.cfg на разделе данных флешки со следующим содержимым:
- imgfile=»/mydisks/test1-flat.vmdk» — путь до файла с образом раздела
- d_label=»MYDISK» — метка раздела, где лежит файл с образом раздела test1-flat.vmdk
Загружаемся с этой флешки, нажимаем F6 и попадаем в меню, где выбираем пункт «boot linux from vmdk part». Радуемся запущенному Linux.
Можно вернуться в свою рабочую OS, запустить VirtualBox и загрузить Linux из виртуального диска.
Таким вот, незамысловатым, способом можно иметь возможность сидя в Windows запускать Linux в VirtualBox, настраивать его… А потом запускать на реальном железе.
Стоит иметь ввиду, что если обновления затрагивают grub, то они не корректно будут завершены в системе, запущенной на реальном железе, ибо нет раздела с загрузчиком. Однако это не мешает нормальной работе. А такие обновления можно и через VirtualBox применять.
Источник