![]() |
compact vdisk из diskpart.exe не сжимает диски vhd
Команда compact vdisk в diskpart не работает. Точнее говоря, она делает вид что работает и даже выдает обнадеживающие сообщения но не сжимает вообще.
Перед попыткой сжатия я сделал дефрагментацию и оптимизацию диска (для удаления дыр между блоками) с помощью ausdiskdefragportable.exe, far дает объем папок на диске - 3 гб, файл vhd имеет 9 гб (всего динамический диск на 1Тб), после сжатия compact vdisk - размер тот же - 9 гб, тогда я сделал новый vhd диск на 1 Тб, его размер сразу после форматирования - 80 Мб, и переместил туда все 3 Гб файлов, после этого размер его стал 6 Гб, а попытка сжатия полностью пустого старого диска через compact vdisk привела к тому, что размер файла пустого диска стал не 9 Гб, а 8.9 Гб. Вопросы: 1 - как оптимально уменьшить размер vhd файла, чтобы его объем не был в 2 раза больше чем объем файлов на нем? 2 - правильно ли я понимаю что diskpart.exe compact vdisk имеет грубый дефект (сжимает пустой диск с размером vhd-файла на 9 Гб на 1%)? |
kuku1, читаем: DiskPart.exe and managing Virtual Hard Disks (VHDs) in Windows 7 - GES on Windows 7 - Site Home - MSDN Blogs
Цитата:
|
Разумеется диск динамический и разумеется что он отключен.
Программа VhdResizer версии 1.0.42.0 имеет дату 18.06.2007. Ничего удивительного что она сейчас вообще не работает с форматом vhd. Она выдает сообщение: "Invalid Vhd file, please select another". Тем не менее с этим vhd файлом прекрасно работает win7 и diskpart.exe, только не сжимает. Кстати, довольно глупо публиковать статьи восхваляющие неработающие утилиты четырехлетней давности. Что там такое намудрила Микрософт с форматом vhd, что файл контейнера занимает в два(!) раза больше места чем объем файлов в нем, а естественная функция уменьшения размера файла контейнера просто не работает. Это ведь какая-то дикость! Вообще хотелось бы чтобы контейнер прозрачно сжимал файлы с выбором степени сжатия, как во всяких акронисах и чтобы функция автоматической дефрагментации и, главное, оптимизации была, а тут такой позор для Микрософт, если я не ошибаюсь. |
kuku1, не нужно так строго относиться к своим "хотелкам" (не сочтите за обиду :))
Справка по compact vdisk говорит о попытке сжатия без гарантии результата. Не проще создать новый VHD файл нужного размера, поместить на него свои файлы и успокоиться? |
Хотелки хотятся, но все что я пишу - это надеюсь полезный кому-то негативный отчет.
В отличие от бесполезных статей, пересказывающих документацию. Да, конечно, после того как я понял, что compact vdisk не сжимает (а почему? дефект формата, дефект алгоритма? нет нужной утилиты? кстати, Парагон программа по виртуализации P2V делает все что угодно кроме сжатия) я сделал новый вхд-диск и переместил туда все файлы со старого. Он тут же стал по объему в 2 раза больше чем объем файлов (6 Гб против 3 Гб). Самое интересное, что полностью пустой вхд-диск совсем без файлов по прежнему имеет размер 9 Гб. Интересно также, что Парагоновская утилита при попытке монтирования показывает его объем как 380 Мб. Вообще мне нравится формат vhd - он легко поддерживается в win7 и Virtualbox и я могу легко представить что через там 20-50 лет на новых компах будут запускаться ВМ с сегодняшними дисками, но для этого размер vhd-файлов должен быть оптимизирован, тут важен каждый процент накладных расходов, а тут траты непонятно на что по 100-200%. В конце концов я могу держать файлы в rar-архивах внутри vhd-контейнера, но для этого он должен быть эффективным (по критерию размер vhd-файла/суммарный размер всех файлов внутри), но он как-то экстремально неэффективен, почему? |
kuku1, а файловая система - NTFS? Забыли, что MFT занимает место.
|
Все и всегда NTFS. Сколько бы там чего в этом vhd ни занимало, это не должно быть иметь размер пару гигов.
В итоге я пришел к следующему, может кому будет полезно. Формат vhd удобный, но сильно неоптимальный мягко говоря. Приходится делать костыль в виде архивации vhd-дисков в rar файлы. Архиватор это продвинутый, развивается, позволяет выбирать файлы по дате (например за прошедший день), делать солид-архивы, хранить версии и имеет продвинутые экспериментальные настройки супер-архивации. В общем, можно сказать что лучше rar сжать нельзя. Я использую для сжатия диска такой бат-файл: "C:\Program Files\WinRAR\rar.exe" u -r -as -ep2 -ibck -m5 -dh -ms -ri1 -ver5 -ed -x%1:\*RECYCLE*\* %1.rar %1:\ > %1.log Обновление файлов в готовом архиве занимает пару минут и слабо нагружает процессор. Размер файла меньше размера диска в 2-10 раз. Памяти сейчас много, ядер процессора тоже и почему не сжимать диски vhd разумно-фоново я не понимаю. Может Рошал и напишет когда-нибудь нахлобучку чтобы она эмулировала vhd-диска на rar-архивах, но это получится тогда какой-то Acronis. |
Мужики, сам долго искал, упрощу кому то жизнь, в ру-нете ответа не нашел)) но все же нашел:
В общем процедура такая: Сжатие VHD Скачиваем SDelete v1.61, http://technet.microsoft.com/ru-ru/s.../bb897443.aspx Запускаем: sdelete.exe -z V: [где V: уже подключенный виртуальный диск VHD] Потом уже рекомендованными везде командами, которые все таки сжимают в конце концов диск:): diskpart select vdisk file="d:\VHD\d1.vhd" [d:\VHD\d1.vhd - путь к тому же образу виртуального диска] compact vdisk PS кстати если кому надо, автоподключение виртуального VHD диска при загрузке: Создаем Файл attach.cmd: diskpart -s "D:\VHD\attachvhd.s" создаем Файл attachVHD.s: select vdisk file="D:\VHD\games.vhd" attach vdisk attach.cmd в планировщик при старте системы. - Выполнять вне зависимости от регистрации пользователя ОБЯЗАТЕЛЬНО!!! Все. До появления пользователя у клавиатуры диск уже доступен по сети. |
Ребят, уже всю голову сломал. Спрошу тут, чтоб не плодить темы.
Вот у меня есть два динамических VHD файла (бэкапы системы с разницей в месяц например). Можно ли на основе второго сделать дифферинциальный VHD, чтоб там были только изменения относительно первого архива? |
Делал на 8.1. Не знаю, сработает ли на 7.
1. Подключаем диск. 2. Пытаемся сжать, чтобы узнать доступный размер сжатия. Покажет окно, где "размер сжимаемого пространства" = максимально возможное сжатие. Например - 5658Мб 3. Пробуем согласиться с этим размером. В 98% результат будет отрицательный :) 4. Запускаем cmd. 5. diskpart 6. select volume D (буква на которую подключен том) 7. shrink desired=1000 (пытаемся ужать том на 1Гб) 8. если повезет, то ужмется. но скорее всего скажет, что "не шмогла" 9. еще раз эту же команду. может ужмет, может нет :) цикл повторяем, пока не ужмет. обычно 2-5 попыток. 10. Если место есть, а не шринкает, то дефрагментацию запускаем. Лучше с графическим интерфейсом - чтобы видеть где файлы разбросаны. И как они замапятся после дефрагментации. Очень хорошо, если дефрагментатор все подожмет в начало диска. Я использую Auslogick Disk Defrag. Для деврагментации может понадобиться дополнительное место - расширьте диск на 10%. После дефрагментации - опять шринкаем до максимума 10. После этого отсоединяем диск. 11. Дальше так: select vdisk file="d:\VHD\d1.vhd" [d:\VHD\d1.vhd - путь к тому же образу виртуального диска] attach vdisk readonly compact vdisk |
Время: 17:34. |
Время: 17:34.
© OSzone.net 2001-