Монтирование виртуального диска ubuntu

Обновлено: 07.07.2024

Возникла необходимость обеспечить работу 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 на реальном железе. Проще всего сделать это с использованием загрузочной флешки.

Создаем файл 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 применять.

Можно ли смонтировать образ диска VirtualBox (.vdi), чтобы содержимое можно было просматривать в Nautilus и т. Д .?

У меня есть Windows 2000 .vdi, которая не загружается («недоступное загрузочное устройство»). ") после обновления с VirtualBox 2.x до 3.1.6. Я считаю, что данные дисковода IDE изменились, и все, что мне нужно сделать, - это получить доступ к образу внутреннего диска и отредактировать Windows boot.ini , чтобы указать новое местоположение.

Можно преобразовать в стандартный образ и затем смонтировать его.

Нужно ЗНАЮТЬ тип файловой системы, ext3 в данном случае. После монтирования, зайдите и отредактируйте его с помощью выбранного вами редактора. Не путайте файлы внутри места /mnt с работающим хостом, иначе будет плохо.

Чтобы проверить подробности о вашем VDI файле, запустите: VBoxManage showhdinfo ubuntu.vdi .

Похоже, vdfuse - это инструмент, который вы ищете. Он находится в репозиториях Ubuntu. Если вы хотите скомпилировать себя (исходный код 2010 г.), вы можете сделать это тоже .

Однако для большинства из нас это сводится к простому:

Кажется, теперь он также поддерживает динамический vdi.

А чтобы смонтировать файл .vdi в каталоге / mnt , используйте команду:

Весь диск будет смонтирован с разделами Partition1 , Формат имени раздела 2 . Затем эти файлы можно монтировать в цикле. Например,

Установите диск как вторичный мастер для другой виртуальной ОС, затем загрузитесь в эту (виртуальную) ОС, и вы сможете смонтировать его.

Шаг 1: Предположим, что у вас уже установлена виртуальная ОС (скажем, Ubuntu 16.04) в Virtual box, добавим новое хранилище из настроек этой виртуальной ОС. Шаг 2: Просмотрите файл Vdi, к которому хотите получить доступ, и выберите его.

Шаг 3: Войдите в виртуальную ОС.

Шаг 4: Виртуальный диск, вероятно, будет доступен внутри ОС. Если нет, выполните шаг 5

Шаг 5: Внутри виртуальной ОС используйте Gparted и проверьте диски. и убедитесь, что диск имеет тип, доступный для виртуальной ОС. Если это не так, возможно, вам придется отредактировать диск, но тогда вы потеряете существующее содержимое.

Используйте qemu-nbd , процесс объясняется на serverfault и в этом блог .

По сути, вам придется установить qemu , если необходимо:

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

Прикрепите образ .vdi к одному из только что созданных nbd:

Теперь вы получите блочное устройство / dev / nbd0 вместе с несколькими узлами устройства раздела / dev / nbd0p *.

Ubuntu

Добавляем новый диск к виртуальной машине vmware. ОС - ubuntu server.

Первым делом выключаем виртуалку и добавляем в vCenter новый диск:

new disk

В нашем случае у виртуалки был системный диск размером 16 GB, добавляем новый 50 GB.

При добавлении диска можно не только выбрать размер диска, но и тип "Disk Provisioning". Не буду подробно описывать их особенности, расскажу вкратце. Есть три варианта:

  • Thick provision lazy zeroed - толстый ленивый (по умолчанию). При создании занимает выделенный объём, но нулями не заполняет сразу, а по мере записи. Быстро создаёт большие винты, но потом тратит ресурсы на заполнение блоков нулями. При долгой работе в итоге превращается в жадный.
  • Thick provision eager zeroed - толстый жадный. При создании заполняет выделенный объём нулями. Долго создаёт большие винты, зато потом летает.
  • Thin provision - тонкий. Быстро создаётся, не занимает места на диске. По мере наполнения - отжирает винт пока не заполнит весь выделенный для него объём. На это тратятся некоторые ресурсы. Опасен тем, что в один прекрасный момент места может не хватить, тогда с фризом нужно будет бороться танцами и бубном.

Винт создали, включаем машину и дальше работаем в консоли.

Посмотрим состояние партиций на диске:

Видим новый винт /dev/sdb. Строке 53.7 Гб не верим, потому как это округление от байтов. Если перевести 53687091200 байт в гигабайты, то получим ровно 50. Занимаемся разметкой жесткого диска:

Вводим "m" для справки:

Создаём новый раздел "n":

Создаём основной раздел "p" или просто жмём enter:

Выбираем номер раздела "1" или просто жмём enter:

Оставляем первый сектор по умолчанию, enter:

Оставляем последний сектор по умолчанию, enter:

Выведем таблицу разделов:

Видим, что появился новый раздел /dev/sdb1. Делаем запись таблицы разделов на диск "w":

Посмотрим состояние партиций на диске:

Теперь нужно создать файловую систему. Форматируем новый диск с помощью команды mkfs.ext4:

В данном случае параметр "-m 0" отвечает за процент резервных блоков. Дефолтные 5% меня не устраивают, супер-юзер обойдётся, винты дорогие, экономим место.

-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks reserved for the super-user. This avoids fragmentation, and allows root-owned daemons, such as syslogd(8), to continue to function correctly after non-privileged processes are prevented from writing to the filesystem. The default percentage is 5%.

Получаем идентификатор раздела:

Полученный UUID понадобится для монтирования диска в папку. Здесь же можно посмотреть тип файловой системы. Создаём папку, в которую будем монтировать диск, в моём случае "opt":

Далее редактируем файл "/etc/fstab", дописываем строку:

Где UUID нами получен ранее. Монтируем:

Видим, что диск /dev/sdb1 смонтирован в opt. Теперь при загрузке он будет монтироваться автоматически.

Установленного в системе жесткого диска может быть недостаточно и иногда встает вопрос о добавлении дополнительного носителя. Рассмотрим как смонтировать диск на Virtual Private Server (VPS), Virtual Dedicated Server (VDS) и Standalone Server.

Подготовка.

Перед началом работы следует убедиться существует ли диск в системе. Иногда наличие устройства в BIOS может быть недостаточным. Доступные накопители проверяем командой:


В нашем случае в системе присутствуют 2 диска - sda и sdb, оба по 10 Гб, первый диск системный. Работать будем со вторым диском (sda).

Важно помнить, что Linux системы можно повредить неверно указав диск, например системный. Следует тщательно проверять и перепроверять выбор носителя. На помощь приходит тот факт, что новый диск (из коробки) не имеет файловой системы и разделов.

Разметка диска.

Для разметки диска запустить утилиту fdisk с указанием пути до диска:


При нажатии “m” и подтверждением ввода клавишей Enter, программа предоставит страницу доступных команд:

Так как мы будем создавать простой раздел (не загрузочный), будем использовать все дисковое пространство, нажимаем клавишу “n” и Enter.
Система спросит о типе раздела - выбираем p (primary) - первичный.

Номер раздела - 1

На вопрос о первом и последнем секторе отвечаем нажатием клавиши Enter.

Важно! Если вы желаете создать несколько логических дисков, то в ответе на последний сектор следует указать размер в кило-, мега-, гига-, тера-, петабайтах. Соответственно, если раздел нужен размером в 2 гигабайт, то указываем 2G.

Сохраняем изменения нажатием “w” и подтверждаем выбор с помощью клавиши Ввод.


Форматирование диска.

После выполнения операции описанной выше, в системе будет создано устройство /dev/sdb1 - по своей сути это и есть раздел на диске. Теперь форматируем.

Современный Linux предлагает на выбор несколько вариантов файловых систем. Создание файловой системы происходит выполнением команды mkfs с указанием ключей, либо выполнением одной из программ:

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