vDisk (virtual disk) — виртуальный диск, который гостевая ОС воспринимает как реальное блочное устройство (/dev/sda, /dev/vda). Физически vDisk существует в одном из форматов файлов образа на хостовой файловой системе или как том в системе хранения. Гипервизор транслирует обращения гостевой ОС к блочному устройству в операции с файлом образа или блочным устройством хоста.
Форматы vDisk
- QCOW2
- Формат KVM/QEMU (QEMU Copy-On-Write версии 2). Поддерживает снапшоты, компрессию, шифрование, динамическое расширение. Файл занимает только фактически используемое место. Стандарт для Proxmox и KVM-хостинга.
- VMDK
- VMware Virtual Machine Disk. Используется в VMware ESXi и Workstation. Поддерживает split-формат (несколько файлов по 2 ГБ для совместимости с FAT32) и monolithic (один файл).
- VHD / VHDX
- Microsoft Virtual Hard Disk. VHD — до 2 ТБ, VHDX (Hyper-V) — до 64 ТБ с поддержкой 4K-секторов.
- RAW
- Побайтовый образ диска без метаданных. Максимальная производительность, но занимает полный объём сразу. Удобен для RAID-контроллеров.
Как работает
Гипервизор предоставляет гостевой ОС виртуальный контроллер диска — паравиртуализированный VirtIO SCSI (лучшая производительность в KVM) или эмулированный IDE/SATA (для совместимости со старыми ОС). Гостевая ОС использует стандартные драйверы и не знает о природе хранилища. При использовании virtio-blk производительность IOPS на 30–40% выше, чем через эмулированный IDE.
Тонкое provisioning (thin provisioning) в QCOW2: файл образа растёт по мере записи данных. Диск на 100 ГБ занимает на хосте 10 ГБ, если в гостевой ОС использовано 10 ГБ. Это позволяет хостерам предлагать больший дисковый объём при меньшем физическом хранилище — основа оверселлинга по диску. Толстое provisioning (thick): файл образа занимает весь заявленный размер сразу, производительность I/O стабильнее.
История
Виртуальные дисковые образы появились вместе с первыми x86-гипервизорами. VMware представила VMDK в 1999 году. Формат QCOW создан Fabrice Bellard (автор QEMU) в 2004 году, QCOW2 вышел в 2005. Microsoft разработала VHD для Virtual PC (2003) и Hyper-V; VHDX появился с Windows Server 2012 (Hyper-V 3.0). Современные NVMe SSD и хранилища на базе Ceph RBD (блочное хранилище) стёрли разницу в производительности между vDisk и физическим диском для большинства задач.
На что обращать внимание
Выбор формата vDisk влияет на производительность и гибкость: QCOW2 — оптимальный выбор для KVM/Proxmox (снапшоты, thin provisioning), VMDK — для VMware. Для максимальной производительности используйте raw с LVM thin provisioning на хосте — LVM управляет тонким provisioning на уровне блоков, а гостевая ОС получает raw-образ. Избегайте хранения vDisk на ext4 без опции nodatacow при использовании снапшотов — это вызывает деградацию I/O.
История форматов виртуальных дисков
Формат VMDK создан VMware в 1999 году для ESXi. QCOW2 (QEMU Copy-on-Write v2) появился в 2005 году как часть проекта QEMU, с 2010 года стал стандартом для KVM. VHD (Virtual Hard Disk) создан Microsoft в 2005 году для Hyper-V. VHDX появился в 2012 году (Windows Server 2012) и поддерживает размер до 64 ТБ против 2 ТБ у VHD. Формат raw (сырой образ) — самый простой: байт в байт соответствует блочному устройству, максимальная производительность, нет сжатия и снапшотов.
Перелинковка между форматами
Конвертация между форматами через qemu-img convert: -f vmdk -O qcow2 — VMDK в QCOW2. При переносе ВМ из VMware ESXi в Proxmox конвертация занимает 5–15 минут для 100 ГБ. Поддержка снапшотов snapshot требует QCOW2 или VMDK; raw не поддерживает снапшоты на уровне файла.