Наш блог
Ответы на ваши вопросы
Ответы на ваши вопросы

VhdTool мертв, да здравствует VhdxTool!

Прошло совсем немного времени с тех пор как Microsoft представила новый формат для своих файлов виртуальных дисков - VHDX. До этого в различных системах широко использовался относительно более простой форма VHD.

VHD использовался в файловых серверах, в некоторые серверах ISCSI, но больше всего, конечно, в серверах Hyper-V. Им пользовались (и злоупотребляли) для различных целей и в качестве общего контейнера для файлов и даже в некоторых системах резервного копирования обеспечивавших копирование данных этого формата в целом и восстановление отдельных элементов из его внутренностей.

Примечание: существует два основных типа виртуальных дисков: фиксированные и динамически расширяемые. В этой статье, поскольку мы говорим об эксплуатационных системах, будут рассматриваться только диски фиксированного размера.

Основной проблемой было управление виртуальными дисками Было не так легко создавать и управлять VHD-файлами на Windows XP или Server 2003, если у вас под рукой не было MS ISCSI Target. Windows 7 и Server 2008 / R2 частично решили проблему путем включением функций управления в WMI, а также в GUI, обеспечив тем самым создание и расширение возможностей через Powershell, консоль управления дисками и DiskPart.

Но главная проблема осталась: если вы хотели создать виртуальный диск приличного размера, скажем, сотни гигабайт и более, процесс создания этих дисков требовал очень много времени даже на быстром оборудовании, не говоря уже о медленных машинах или дисках. Причиной этого была борьба с потенциальным риском восстановления старых данных на вновь выделенных виртуальных жестких дисках и уменьшение этого риска путем обнуления всего вновь созданного диска. См. See блог Бена Армстронга.

VhdTool спешит на помощь

Прошло более полугода, преждем чем ребята из Microsoft предложили нам средство для быстрого создания виртуальных жестких дисков. Этот инструмент не обнулял новый диск и, таким образом, работал молниеносно, даже при создании дисков много-гигабайтного и терабайтного размеров. Кстати, та же функциональность была предусмотрена в сервере MS ISCSI Target, как часть Storage Server 2003 R2, но и она ушла с выпуском Storage Server 2008, если мне не изменяет память. См первоначальное объявление об этом инструменте.

Чуть ниже мы обсудим последствия использования такой техники для эксплуатационных сред, сейчас же более интересным фактом является то, что с появлением Server 2012 и новой версии Hyper-V, старый формат VHD был отменен в пользу нового и более надежного VHDX.

Новый формат имеет множество преимуществ и является очень удобным, но с момента его введения, сообщество Hyper-V вновь столкнулось с возвращением проблемы медленного создания виртуальных дисков и изменения их размеров. В интернете можно найти множество вопросов на ИТ-форумах по одной и той же теме: как ускорить создание VHDX. Как вы могли догадаться, вышеупомянутый Vhdtool не поддерживает файлы VHDX, так как новый формат отличается от формата VHD.

Ежедневно работая с виртуальными дисками в рамках предоставления услуг ИТ-аутсорсинга, наша команда тоже столкнулась с этой проблемой и, после того, как мы не смогли найти преемника Vhdtool, который бы работал с новым форматом, мы решили создать столь нужный инструмент самостоятельно.

А вот и VhdxTool

После некоторого изучения спецификаций, мы создали полностью функциональную утилиту, которая потенциально может сэкономить вам много времени. Но прежде чем мы внимательнее рассмотрим новую программу, давайте еще раз обратимся к проблеме, которую мы теперь снова создаем и попытаемся рассмотреть различные сценарии, в которых использование программы является целесообразным или опасным.

Основной и главной проблемой повторного использования места, выделяемого для новых виртуальных дисков, является то, что если вы не обнулите вновь выделенное пространство, в итоге вы получите виртуальный диск, который, скорее всего, с точки зрения виртуальной машины к которой он будет подключен, будет содержать в пределах свободного места на этом диске, частично или полностью, чьи-то данные. Эти данные могут быть легко восстановлены, а потому особое внимание должно быть уделено тому, как это предотвратить.

На Бога надейся, но сам не плошай

Провести черту межу "хорошо" и "плохо" при работе с этой утилитой не так сложно. Рассмотрим несколько примеров. Для ясности конечными пользователями будет называть, в зависимости от типа компании, в которой вы работаете, либо ваших коллег либо ваших клиентов (арендаторов).

Использовать этот инструмент МОЖНО:

  • в лабораториях и тестовых средах без каких-либо ограничений
  • на новом оборудовании, то есть на новых, неиспользованных и незаписанных дисках
  • на использованных жестких дисках, если они все (!) были обнулены заранее
  • для несистемных VHDX, которые не будут напрямую доступны конечным пользователям (в том числе администраторам) таких систем, как, например, базы данных Exchange или SQL-сервера
  • для любых VHDX, используемых для внутренних нужд, которые никогда не будет доступны конечным пользователям

Использовать этот инструмент НЕЛЬЗЯ:

  • для системных VHDX на системах, доступных конечным пользователям
  • для несистемных VHDX на системах, доступных конечным пользователям
  • для VHDX, доступных через SMB или через другие сетевые протоколы
  • для VHDX, которые могут быть переданы конечным пользователям
  • для эталонных образов VHDX в средах TS или VDI
  • для других VHDX-шаблонов, которые могут позже использоваться в системах конечных пользователей

Если вышеописанная альтернатива уяснена, и вы определите, что вам можно пользоваться этим инструментом, загрузите копию VhdxTool, убедитесь, что на вашей системе установлен пакет .NET 4.5 или более поздней версии, запустите привилегированную командную строку или консоль PowerShell и давайте начнем VHDX-ить!

Синтаксис команды, или Син-таксист

Двумя основными операциями утилиты, на момент написания, являются создание и расширение дисков. Поэтому мы имеем два основных режима исполнения и один дополнительный информационный режим:

vhdxtool.exe create [параметры] - создать новый VHDX
vhdxtool.exe extend [параметры] - расширить существующий VHDX
vhdxtool.exe convert [параметры] - конвертировать динамический VHDX в статический
vhdxtool.exe upgrade [параметры] - конвертировать VHD в VHDX
vhdxtool.exe display [параметры] - просмотр информации о существующем VHDX

Параметры таковы (используйте длинные и краткие формы по желанию):

Краткая форма Длинная
форма
Примени­мость Описание
 
-f --FilePath create
extend
convert
upgrade
display
Полный или относительный путь к файлу, который будет создан, увеличен или просмотрен.

Обязательный.
-s --DiskSize create
extend
Размер диска нового VHDX или конечный размер диска после увеличения. Если единица измерения не указана, размер считается в байтах, в противном случае дополнительный квалификатор обозначает единицу измерения. Поддерживаемые квалтфикаторы MB, GB, TB. Примеры: 100 GB, 5TB. Минимальный поддерживаемый размер 32 МБ.

Обязательный, за исключением команды "diplsay".
-b --BlockSize create Размер внутренного блока нового VHDx в мегабайтах.

Опционально, значение по умолчанию: 32.
-l ‑‑LogicalSectorSize create Размер логического сектора в байтах. Возможные значения 512 или 4096.

Опционально, значение по умолчанию: 512.
-p ‑‑PhysicalSectorSize create Размер физического сектора в байтах. Возможные значения 512 или 4096.

Опционально, значение по умолчанию: 4096.
-k --KeepDeviceId upgrade Не изменять идентификатор SCSI (aka Page #83)

Опционально, по умолчанию не включено.
-v --Verbose create
extend
convert
upgrade
display
Включает подробный режим сообщений, что дает вам некоторую информацию о том, что происходило при выполнении запрошенной операции.

Опционально, по умолчанию не включено.
-d --Debug create
extend
convert
upgrade
display
Включает отладочный режим. Используйте, когда вас об этом попросили наши сотрудники во время устранения неполадок.

Опционально, по умолчанию не включено.

BlockSize, LogicalSectorSize и PhysicalSectorSize - это те же самые параметры, которые вы, как правило, используете в команде New-VHD.Для обычной работы вы можете просто оставить эти параметры по умолчанию, это нормально для большинства случаев. Если у вас есть новые жесткие 4К-диски, вы, возможно, захотите настроить размер сектора, в этом случае эти параметры вам помогут. Также обратитесь за дополнительной информацией к этим двум ресурсам:
Политика поддержки Microsoft жестких дисков с 4K-секторами для Windows и
Обзор поддержки дисков с большими секторами в Hyper-V.

Примеры:

vhdxtool.exe create -f test.vhdx -s 800MB

Создает новый VHDX размером 800 мегабайт.

vhdxtool.exe create -f test.vhdx -s 2TB -b 64 -l 4096

Создает новый 4K-VHDX размером 2 терабайта.

vhdxtool.exe extend -f test.vhdx -s 80GB

Расширяет существующий VHDX до 80 гигабайт.

vhdxtool.exe display -f test.vhdx

Отображает внутреннюю информацию о существующем VHDX.

Еще есть хорошая новость для тех, кто привык к старому синтаксису Vhdtool: мы сделали наш инструмент также совместимым и с ним, так что вы можете просто ввести:

vhdxtool.exe /create <FilePath> <DiskSize>
vhdxtool.exe /extend <FilePath> <NewSize>


Заключение

С VhdxTool теперь вы можете создавать виртуальные жесткие диски любого размера с невероятной скоростью. Не имеет значения нужен ли вам диск размером 10 ГБ или 10 ТБ - VhdxTool понадобится одинаковое количество времени для любого размера, вам лишь нужно обеспечить достаточное пространство в системе хранения.

VhdxTool требует наличия .NET 4.5, но мы предполагаем, что вы будете запускать этот инструмент на Windows Server 2012 / R2, где этот компонент должен быть уже установлен.

Вы всегда должны проверять применимость этого инструмента перед запуском его в эксплуатацию и рассмотреть все риски, которые вам могут повстречаться. Если вы сомневаетесь, не используйте этот инструмент и используйте встроенные решения, но если вы знаете, что вы делаете - это то, что сэкономит вам время.

Удачного VHDXинга!

Роман Кузнецов @ 14.01.2015



Другие записи

.