Оптимизация файла .vhdx дистрибутива WSL2 для Docker Desktop v4.37.x на Windows 10

Вопрос или проблема

К сожалению, файлы .vhdx всегда увеличиваются. Ранее я использовал следующие команды для сжатия файлов vhdx:

wsl --manage docker-desktop-data --set-sparse false
optimize-vhd -Path C:\Users\<user>\AppData\Local\Docker\wsl\data\ext4.vhdx -Mode full

После последних обновлений Docker этот файл переместился в C:\Users\<user>\AppData\Local\Docker\wsl\disk\docker_data.vhdx. И дистрибутив с именем docker-desktop-data больше не существует.

Следующие команды не работают:

wsl --manage docker-desktop --set-sparse false
optimize-vhd -Path C:\Users\<user>\AppData\Local\Docker\wsl\disk\docker_data.vhdx -Mode full

Возвращает следующую ошибку:

optimize-vhd : Не удалось сжать виртуальный диск.
Не удалось открыть вложение 
'C:\Users\<user>\AppData\Local\Docker\wsl\disk\docker_data.vhdx'. 
Ошибка: 'Запрошенная операция не может быть выполнена из-за ограничения системы виртуального диска.  
Файлы виртуального жесткого диска должны быть не сжатыми и
не зашифрованными, и не должны быть разреженными.'. 

At line:1 char:1
+ optimize-vhd -Path C:\Users\<user>\AppData\Local\Docker\wsl\disk\dock ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Optimize-VHD], VirtualizationException
    + FullyQualifiedErrorId : OperationFailed,Microsoft.Vhd.PowerShell.Cmdlets.OptimizeVhd

Как сохранить пространство без потери данных тома?

.

Ответ или решение

Оптимизация файлов VHDX для WSL2 актуальна для пользователей Docker Desktop, поскольку эти файлы занимаются расширяющимся пространством на диске. Ваша задача — сжать файл docker_data.vhdx, связанный с Docker Desktop v4.37.x на Windows 10.

Теория:
Файлы VHDX, используемые WSL2 и Docker Desktop, имеют тенденцию к постоянному увеличению, поскольку данные добавляются, но редко освобождают освободившееся пространство. Инструменты типа optimize-vhd позволяют сжимать эти файлы для высвобождения лишнего дискового пространства. Однако, для этого файл VHDX должен быть "несжатым" и "не зашифрованным".

Пример:
В вашем случае, после последних обновлений Docker, путь расположения файла изменился на C:\Users\<user>\AppData\Local\Docker\wsl\disk\docker_data.vhdx, и команды, которые вы использовали раньше, больше не работают, как и у всех пользователей, столкнувшихся с этой проблемой. Попытка его оптимизации возвращает ошибку о невозможности сжатия из-за системных ограничений виртуального диска.

Применение:
Чтобы решить эту проблему и сжать VHDX без потери данных, следуйте следующим шагам:

  1. Проверьте свойства файла:

    • Перейдите к файлу docker_data.vhdx в Windows Explorer.
    • Щелкните правой кнопкой мыши и выберите "Свойства".
    • Убедитесь, что атрибуты "Сжатый" и "Шифрованный" не установлены. Если они установлены, снимите соответствующие флажки и примените изменения.
  2. Отключите WSL и Docker Desktop:

    • Завершите все процессы Docker Desktop.
    • В командной строке выполните команду wsl --shutdown, чтобы остановить все распределения WSL.
  3. Сожмите через PowerShell:

    • Откройте PowerShell с правами администратора.
    • Выполните команду optimize-vhd -Path C:\Users\<user>\AppData\Local\Docker\wsl\disk\docker_data.vhdx -Mode full.

Если команда продолжает возвращать ошибку, проверьте настройки антивируса или брандмауэра, так как они могут блокировать операции с файлами VHDX. Также убедитесь, что у вас установлены все необходимые обновления Windows и версия PowerShell совместима с используемыми вами командами и функциями.

Следуя этим шагам, вы получите более компактный VHDX-файл для Docker Desktop, что позволит лучше управлять доступным пространством на вашем устройстве.

Оцените материал
Добавить комментарий

Капча загружается...