Windows Server 8 Hyper-V. Формат VHDX и поддержка 4КБ секторов.

В этой заметке мы поговорим о новом формате виртуальных дисков VHDX и поддержке больших дисков в Windows Server 8.

Формат VHDX – диски до 64ТБ

Формат виртуальных дисков VHD используемый в решениях виртуализации Microsoft, начиная с VirtualPC, имел ряд технических ограничений, достижимых уже в наши дни. Одним из основных таких ограничений является максимальный размер создаваемого VHD файла в 2ТБ. Спецификация VHD является открытой, Microsoft не может просто так изменить стандарт. В последний год я встречал заказчиков, которым требовалось предоставлять виртуальным машинам и iSCSI таргетам диски больше 2ТБ. Для виртуальных машин существовал вариант предоставления Pass-through GPT диска. В Windows Server 8 появился новый формат VHDX, одним из нововведений которого является существенно увеличенный максимальный размер диска. Если в Developer Preview максимальный размер VHDX диска составлял 16ТБ, то к Beta версии мы пришли с дисками до 64ТБ. Вражеский формат VMDK до сих пор не позволяет создавать диски более 2ТБ (по сути, это ограничение скорее размера файла на VMFS, а так как формат VMDK закрыт, вендор может изменять его без зазрений совести в следующих версиях.)

Формат VHDX – журналирование и устойчивость к проблемам с отключением питания

Одной из проблем использования виртуальных жёстких дисков является возможность получить нечитаемый файл в случае сбоя питания в момент активного обновления метаданных. Формат VHDX является журналируемым. Любые изменения метаданных сначала записываются в статичную зону журнала, и лишь после того в саму таблицу метаданных. Если во время обновления таблицы метаданных произойдёт сбой записи, то в журнале останутся незавершенные транзакции, которые позволят накатить изменения в таблицу метаданных из журнала и вернуть целостный формат диска.

Формат VHDX – пользовательские метаданные

Формат VHDX также имеет специальную таблицу, в которую можно занести информацию о том, что находится внутри данного виртуального диска. Какая ОС установлена, какие обновления применены, к какой классификации данных относится диск, и так далее. Пользовательская зона доступна для хранения любых описательных метаданных.

Жёсткие диски и 4КБ секторы

Полгода назад во время одной из командировок в США я купил себе несколько новых 4ТБ жёстких дисков Seagate с желанием обновить домашний сервер, на котором виртуальным машинам стало тесно. 4ТБ диск стоил менее 200$ (до наводнения), я стал счастливым обладателем четырёх таких дисков. Каково же было моё разочарование, когда подключив и отформатировав диски, я понял, что виртуальные диски на них создать я не смогу, а скопированные диски не смогу подключить к машинам. Дело в том, что все ОС до Windows 8 рассчитаны на работу с дисками, кластер которых не превышает 2КБ, или же поддерживает формат эмуляции 512e. Новые жёсткие диски имеют 4КБ размер сектора и стандарт 512e не поддерживают. Полгода я хранил музыку и видео на 16ТБ хранилище, но теперь с выходом Beta версии всё стало на свои места, Hyper-V заработал с VHD и VHDX дисками на этом хранилище.

К слову сказать, vSphere 5 также не поддерживает диски с 4КБ секторами. Предвижу версию vSphere 6 Super-Mega-Expensive-Enterprise-Plus, где за эту поддержку попросят заплатить дополнительно к базовым функциям гипервизора.

Формат VHDX – архитектура

Если вы дочитали до этого абзаца, то вам интересны VHDX диски. Я попробую кратко описать формат VHDX.

 

Header: Стартовой точкой VHDX диска является его заголовок. Тут определяется расположение других структур VHDX диска. На самом деле в разделе Header хранится две копии заголовка, одна из которых активна, а вторая хранится для повышения надёжности.

Intent Log: Зона журнала, в которых пишутся транзакции обновления метаданных перед их записью непосредственно в таблицу. Сюда пишутся лишь метаданные, но не сами данные.

Data region: Таблица BAT хранит в себе ссылки на блоки пользовательских данных и секторных битмапов. Это существенное отличие от формата VHD, где секторные битмапы не имели отдельной структуры, но дописывались в конец каждого блока пользовательских данных.

Metadata region: Таблица, хранящая файловые метаданные, такие как размер блока, размер физического и логического сектора; а также пользовательские метаданные, о которых мы уже говорили выше.

Формат VHDX поддерживает операции unmap, что позволяет более эффективно использовать физические диски, возвращая неиспользуемое пространство после удаления данных внутри виртуального диска. Эта операция требует специальной поддержки со стороны дискового хранилища, а также размещения VHDX диска на виртуальном SCSI контроллере.