понедельник, 2 ноября 2009 г.

ZFS в Windows

Не очень давно я наткнулся на одно совершенно феерическое заявление в нете. Дескать, не работает ZFS в виртуальных машинах на Windows. Обратите внимание, кто заявляет - яйцеголовые мальчуганы! - и в каких выражениях. "Вероятно", "по-видимому".

Видно, что мальчики сами не пробовали и полагаются на слова двоюродного брата одного ковбоя в Матаморасе.

Я тем более сильно удивлен, что "У меня все работает!" :)))))))

Как я и писал раньше, я давно поставил на Win2k3 VirtualBox, установил в него Solaris 10 на ZFS (полностью) и странным образом удивляюсь, как это у меня все до сих пор работало, когда работать-то не должно ни фига! :) Пруфпик в предыдущей статье. Официально подтверждаю, что все стоит на ZFS и могу представить в подтверждение ноутбук для инспекции. ;)

Дорогие яйцеголовые мальчики, прежде, чем делать какие-то публичные заявления на любые темы, потрудитесь сперва лично убедиться, что все именно так, как вы заявляете, иначе можно очень нефигово сесть в лужу нижними 90.

Маленькое пояснение.

Когда на файловой системе нужно изобразить raw-девайс, он создается файлом. При этом raw-девайс может содержать абсолютно все, что угодно. ОС это не лимитирует.

Виртуальный диск виртуальной машины - это файл. Его потрошки совершенно абстрагированы от родительской ОС. Файловая система, которая в нем находится, совершенно оторвана от API родительской системы. Ergo - как может ZFS не работать поверх файла на NTFS?

Однако я совсем по другому поводу хотел высказаться. Предыдущие экзерсисы просто к слову пришлись.

Предупреждение желающим воспроизвести мой практический опыт с ZFS на Windows.

Самая большая проблема с ZFS в виртуалбоксе - это виртуальные диски расширяющегося размера.

"Дело в следующем, папаня."

Дело в структуре vdev ZFS.

Vdev ZFS имеет четыре метки, две в начале устройства и две в конце. Обновляемые двухстадийным транзакционным механизмом, причем write-on-copy не действует для меток (в отличие от всех прочих структур ZFS). Соответственно, каждый раз, когда виртуализационный софт увеличивает размер виртуального диска, две метки в конце (а это в аккурат 512 Кбайт) оказываются посреди блоков данных. Контрольные суммы летят к чертям, пул сыпется до такой степени, что даже зеркалирование не помогает.

"Короче, все умерли."

Чтобы не вляпаться в такую засаду и не бегать по инету с криками, что ничего не работает, надо всего-то ничего.

Создавайте пулы на виртуальных дисках, заранее созданных и фиксированного размера. Мало станет - страйпами увеличите, добавив новые файлы VDI. Фиксированного же размера.

Компрене?

PS. Огромный недостаток ZFS - нужно учитывать особенности ее устройства при работе в нестандартных энвайронментах. Правда, сюрприз? Такой же, как легендарное ограничение UNIX - нельзя, понимаешь, выполнять команды из командной строки, когда размер команды превышает 2 Гб!