понедельник, 22 апреля 2013 г.

Как можно быстро конвертировать виртуальные диски в LUN на СХД NetApp

Предположим, что вам нужно конвертировать диск, лежащий на NFS хранилище, из формата VMDK в отдельный LUN для подключения к ВМ в режиме Raw Device Mapping или к отдельному физическому серверу с минимальными трудозатратами и без выделения лишнего места на хранилище.

С СХД NetApp это можно сделать с помощью команды lun create, для которой при создании нового LUN нужно указать дополнительную опцию -f <путь_к_существующему_файлу>. Например, команда:
lun create -f /vol/vol1/test02/test02_1-flat.vmdk -t windows_2008 /vol/vol1/lun1

создаст файл LUN  /vol/vol1/lun1, указывающий на существующий .vmdk файл.

Поскольку созданный файл LUN (/vol/vol1/lun1) не является полной копией, а содержит лишь служебную информацию и указатели на исходный файл, то перед выполнением команды убедитесь, что vmdk диск находится на нужном томе и отключен ото всех виртуальных машин.

После создания LUN может быть презентован любому серверу по протоколу FC или iSCSI. Также можете удалить ставший ненужным файл настроек .vmdk (не перепутайте с файлом данных виртуального диска -flat.vmdk, его удалять ни в коем случае нельзя).

Аналогичную операцию можно провернуть с VHD дисками (но только с Fixed дисками), размещенными на CIFS шаре. Важным отличием от VMDK дисков является то, что для VHD служебная информация хранится вместе с данными в одном файле, поэтому перед тем, как создать LUN было бы неплохо ее удалить. Согласно спецификации VHD файла, для служебной информации отводятся последние 512 байт, удалить их можно с помощью простого скрипта на Powershell:
$filepath = "C:\stor01\testdisk3.vhd" #где $filepath - путь к vhd файлу
$file = [IO.File]::OpenWrite($filepath)
$file.SetLength($file.Length - 512)
$file.Close()
$file.Dispose()
После этого можете создавать LUN и презентовать его серверам:
lun create -f /vol/vol1/test03/testdisk3.vhd -t windows_2008 /vol/vol1/lun3