- How to mount a virtual hard disk?
- 4 Answers 4
- Подключение диска данных к виртуальной машине Linux с помощью портала
- Поиск виртуальной машины
- Подключение нового диска
- Подключение существующего диска
- Подключение к виртуальной машине Linux для подключения нового диска
- Поиск диска
- Подготовка нового пустого диска
- Подключение диска
- Проверка диска
- Поддержка операций TRIM и UNMAP для Linux в Azure
- Дальнейшие действия
- Добавление в Linux второго диска Virtual Box
How to mount a virtual hard disk?
Have you searched Google? It abounds with guides on mounting VMDK, VDI, VHD, and raw disk image files on Ubuntu.
4 Answers 4
Linux and other Unix-like hosts can mount images created with the raw format type using a loopback device. From a root login (or using sudo), mount a loopback with an offset of 32,256.
mount -o loop,offset=32256 /path/to/image.img /mnt/mountpoint
For other types of qemu images, you can use qemu-nbd
modprobe nbd max_part=16 qemu-nbd -c /dev/nbd0 image.qcow2 partprobe /dev/nbd0 mount /dev/nbd0p1 /mnt/image
Plus, usually, you can convert image from one format to another.
raw - (default) the raw format is a plain binary image of the disc image, and is very portable. On filesystems that support sparse files, images in this format only use the space actually used by the data recorded in them. cloop - Compressed Loop format, mainly used for reading Knoppix and similar live CD image formats cow - copy-on-write format, supported for historical reasons only and not available to QEMU on Windows qcow - the old QEMU copy-on-write format, supported for historical reasons and superseded by qcow2 qcow2 - QEMU copy-on-write format with a range of special features, including the ability to take multiple snapshots, smaller images on filesystems that don't support sparse files, optional AES encryption, and optional zlib compression vmdk - VMware 3 & 4, or 6 image format, for exchanging images with that product vdi - VirtualBox 1.1 compatible image format, for exchanging images with VirtualBox.
I found this solution for (VirtualBox) .VDI when I searched, on this website:
modprobe nbd max_part=16 qemu-nbd -c /dev/nbd0 /path/to/some.vdi mount -o loop /dev/nbd0p1 /mnt # do stuff umount /mnt qemu-nbd -d /dev/nbd0 rmmod nbd
The same as «Qemu’s way» commands. No borders!
Подключение диска данных к виртуальной машине Linux с помощью портала
В этой статье показано, как подключить новый и существующий диски к виртуальной машине Linux на портале Azure. Вы также можете подключить диск данных к виртуальной машине Windows на портале Azure.
Прежде чем подключить диски к виртуальной машине, ознакомьтесь со следующими советами:
- Размер виртуальной машины определяет, сколько дисков данных к ней можно подключить. Дополнительную информацию см. в статье Размеры виртуальных машин.
- На самом деле диски, подключенные к виртуальным машинам, — это VHD-файлы, хранящиеся в Azure. Дополнительные сведения см. в статье Обзор компонента «Управляемые диски» Azure.
- Подключив диск, необходимо подключиться к виртуальной машине Linux для подключения нового диска.
Поиск виртуальной машины
- Используйте портал Azure для поиска виртуальной машины. Найдите и щелкните Виртуальные машины.
- Выберите виртуальную машину из списка.
- На странице Виртуальные машины в разделе Параметры выберите Диски.
Подключение нового диска
- На панели Диски в разделе Диски данных выберите Создать и подключить новый диск.
- Введите имя управляемого диска. Проверьте параметры по умолчанию и при необходимости обновите значения параметров Тип хранилища, Размер (ГиБ) , Шифрование и Кэширование узла.
- Закончив, выберите Сохранить в верхней части страницы, чтобы создать управляемый диск и обновить конфигурацию виртуальной машины.
Подключение существующего диска
- На панели Диски в разделе Диски данных выберите Подключение существующих дисков.
- Выберите раскрывающееся меню имя диска и выберите диск из списка доступных управляемых дисков.
- Выберите Сохранить , чтобы подключить существующий управляемый диск и обновить конфигурацию виртуальной машины:
Подключение к виртуальной машине Linux для подключения нового диска
Чтобы разбить диск на разделы, отформатировать и подключить новый диск к виртуальной машине Linux, подключитесь к своей виртуальной машине по протоколу SSH. Дополнительные сведения см. в статье Как использовать SSH с Linux в Azure. В следующем примере выполняется подключение к виртуальной машине с общедоступным IP-адресом 10.123.123.25 и именем пользователя azureuser:
Поиск диска
После подключения к виртуальной машине необходимо найти диск. В этом примере мы используем lsblk для вывода списка дисков.
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
Вы должны увидеть результат, аналогичный приведенному ниже.
sda 0:0:0:0 30G ├─sda1 29.9G / ├─sda14 4M └─sda15 106M /boot/efi sdb 1:0:1:0 14G └─sdb1 14G /mnt sdc 3:0:0:0 4G
В этом примере добавленный диск был sdc . Это LUN 0 и 4 ГБ.
В более сложном примере ниже показано, как выглядят несколько дисков данных на портале:
На рисунке видно, что имеется 3 диска данных: 4 ГБ в LUN 0, 16 ГБ в LUN 1 и 32 ГБ в LUN 2.
Вот как это может выглядеть при использовании lsblk :
sda 0:0:0:0 30G ├─sda1 29.9G / ├─sda14 4M └─sda15 106M /boot/efi sdb 1:0:1:0 14G └─sdb1 14G /mnt sdc 3:0:0:0 4G sdd 3:0:0:1 16G sde 3:0:0:2 32G
Из выходных данных lsblk видно, что диск 4 ГБ в LUN 0 — sdc , диск 16 ГБ в LUN 1 sdd , а диск 32 ГБ в LUN 2 — sde .
Подготовка нового пустого диска
Если вы используете существующий диск, содержащий данные, перейдите к подключению диска. Следующие инструкции удалит данные на диске.
Если вы подключаете новый диск, необходимо секционировать диск.
Служебную программу parted можно использовать для разделения диска данных на разделы и его форматирования.
- Используйте последнюю версию parted , доступную для вашего дистрибутива.
- Если размер диска — 2 тебибайтов (ТиБ) или больше, необходимо использовать GPT-схему разбиения дисков на разделы. Если размер диска меньше 2 ТиБ, то можно использовать MBR- или GPT-схему разбиения дисков на разделы.
В следующем примере используется parted в /dev/sdc , где обычно находится первый диск данных на большинстве виртуальных машин. Замените sdc правильным параметром для своего диска. Мы также отформатируем его с помощью файловой системы XFS .
sudo parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100% sudo mkfs.xfs /dev/sdc1 sudo partprobe /dev/sdc1
Используйте служебную программу partprobe , чтобы убедиться, что ядро распознает новый раздел и файловую систему. Невозможность использовать partprobe может привести к тому, что команды blkid или lslbk не будут немедленно возвращать UUID для новой файловой системы немедленно.
Подключение диска
Создайте каталог для подключения файловой системы, используя mkdir . В следующем примере создается каталог в /datadrive :
Используйте mount , чтобы затем подключить файловую систему. В следующем примере раздел /dev/sdc1 подключается к точке подключения /datadrive :
sudo mount /dev/sdc1 /datadrive
Чтобы обеспечить автоматическое повторное подключение диска после перезагрузки, его необходимо добавить в файл /etc/fstab. Также настоятельно рекомендуется использовать UUID (универсальный уникальный идентификатор) в /etc/fstab для ссылки на диск, а не только на имя устройства (например, /dev/sdc1). Если операционная система обнаруживает ошибку диска во время загрузки, использование UUID позволяет избежать подключения ошибочного диска в это расположение. Остальные диски с данными затем получают те же идентификаторы устройств. Чтобы найти UUID нового диска, используйте служебную программу blkid :
Результат должен быть аналогичным приведенному ниже:
/dev/sda1: LABEL="cloudimg-rootfs" UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4" PARTUUID="1a1b1c1d-11aa-1234-1a1a1a1a1a1a" /dev/sda15: LABEL="UEFI" UUID="BCD7-96A6" TYPE="vfat" PARTUUID="1e1g1cg1h-11aa-1234-1u1u1a1a1u1u" /dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4" TYPE="ext4" PARTUUID="1a2b3c4d-01" /dev/sda14: PARTUUID="2e2g2cg2h-11aa-1234-1u1u1a1a1u1u" /dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="xfs" PARTLABEL="xfspart" PARTUUID="c1c2c3c4-1234-cdef-asdf3456ghjk"
Некорректное изменение файла /etc/fstab может привести к невозможности загрузить систему. Если у вас есть сомнения, см. инструкции по правильному изменению этого файла в документации дистрибутива. Перед редактированием необходимо создать резервную копию файла /etc/fstab .
Затем откройте файл /etc/fstab в текстовом редакторе. Добавьте строку в конец файла, используя значение UUID для /dev/sdc1 устройства, созданного на предыдущих шагах, и точку /datadrive подключения . В примере из этой статьи новая строка будет выглядеть следующим образом:
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,nofail 1 2
Завершив редактирование файла, сохраните и закройте редактор.
Если вы позднее удалите диск данных без редактирования файла fstab, виртуальная машина может не загрузиться. Большинство дистрибутивов поддерживает параметры fstab nofail и (или) nobootwait. Эти параметры позволяют системе загружаться, даже если диск не подключится во время загрузки. Дополнительные сведения об этих параметрах см. в документации дистрибутива.
Параметр nofail обеспечивает запуск виртуальной машины даже в том случае, если файловая система повреждена или отсутствует диск во время загрузки. Без этого параметра может возникнуть ситуация, описанная в записи блога Cannot SSH to Linux VM due to FSTAB errors (Не удается подключиться к виртуальной машине Linux по протоколу SSH из-за ошибок FSTAB).
Проверка диска
Теперь можно использовать lsblk снова, чтобы посмотреть диск и точку подключения.
lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"
Результат должен выглядеть следующим образом.
sda 0:0:0:0 30G ├─sda1 29.9G / ├─sda14 4M └─sda15 106M /boot/efi sdb 1:0:1:0 14G └─sdb1 14G /mnt sdc 3:0:0:0 4G └─sdc1 4G /datadrive
Вы видите, что sdc теперь подключен к /datadrive .
Поддержка операций TRIM и UNMAP для Linux в Azure
Некоторые ядра Linux поддерживают операции TRIM и UNMAP для отмены неиспользуемых блоков на диске. Эта функция в первую очередь полезна для информирования Azure о том, что удаленные страницы больше не являются допустимыми и могут быть удалены. Эта функция позволяет сэкономить деньги на дисках, счета за которые выставляются в зависимости от объема потребляемого хранилища, например на неуправляемых стандартных дисках и моментальных снимках дисков.
Существует два способа включить поддержку операций TRIM в виртуальной машине Linux. Как обычно, обратитесь к документации дистрибутива, чтобы выбрать рекомендуемый метод.
- Используйте параметр подключения discard в /etc/fstab. Ниже приведен пример.
UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e /datadrive xfs defaults,discard 1 2
sudo apt-get install util-linux sudo fstrim /datadrive
sudo yum install util-linux sudo fstrim /datadrive
sudo zypper install util-linux sudo fstrim /datadrive
Дальнейшие действия
Дополнительные сведения и инструкции по устранению неполадок с диском см. в разделе Устранение неполадок при изменении имени устройства виртуальной машины Linux.
Вы можете также подключить диск данных с помощью Azure CLI.
Добавление в Linux второго диска Virtual Box
И так, представим картину, у нас есть сервер на unix системе в VirtualBox и мы например не хотим забивать корень системы каким нибудь ПО или базой, что делать? Будем добавлять второй диск в систему.
И так, что мы сейчас имеем? вводим команду и смотрим её результат
мы имеем диск sda объемом 8Гб разделенный на 2 части.
sda1 — тут находится все необходимое для загрузки ОС
sda2 — а тут лежат уже все остальные файлы, корень, домашние директории и т.д
И так, добавляем диск. Для этого выключаем нашу виртуальную машину и заходим в её настройки VirtualBox
Выбираем нужный размер диска и создаем
В итоге у нас получится как то так.
После того как добавили диск запускаем виртуальную машину и смотрим появился ли он на уровне ОС.
Появился диск sdb объемом 8Gb , теперь давайте его введем в эксплуатацию, для этого нам поможет утилита pvcreate
Готово, диск создан, осталось еще чуть чуть.
Проверяем, вводим команду, которая покажет сколько диском она видит.
В данном случае sda2 , на котором сама ОС и sdb , который только что добавлен нами.
Теперь нужно создать для этого диска группу, для этого используем команду vgcreate
Команда vgs показывает какие volume группы в нашей ОС есть.
После создания группы нужно создать Logic Volume и уже ему назначить весь объем диска, для этого нужна команда lvcreate -n -l+100%FREE
Команда lvs покажит какие Logic Volume в нашей ОС уже есть и покажет их объем.
После этих манипуляций осталось только создать файловую систему и примонтировать диск к какой нибудь папке.
Для создания файловой системы я буду использовать команду mkfs.xfs
команда blkid покажет наши UUID’s и в какой файловой системе они у нас сейчас.
Видим что наш новый диск находится в группе vg00 , а в эту группу входит Logic Volume lv00 и имеет файловую систему xfs
Осталось только добавить UUID в файл fstab и замапить диск к папке.
На cкрине выше берем UUID /dev/mapper/vg00-lv00 и через echo добавляем его в файл fstab ( ОСТОРОЖНО, У ВАС БУДЕТ ДРУГОЙ UUID )
echo UUID=ваш_uuid /новая/папка xfs defaults 0 0 >> /etc/fstab