Как сжать тонкий диск в ESXi 5.5 / Как thin диск в ESXi 5.5
Всем привет! Сегодня расскажу Как сжать тонкий диск в ESXi 5.5 (Как thin диск в ESXi 5.5). Ранее мы с вами уже рассматривали один способ описанный в статье. Thin диск в ESXi - это тип виртуального диска, который используется для хранения данных виртуальной машины. Он отличается от толстого диска тем, что занимает только столько места на физическом хранилище, сколько фактически используется для хранения данных на виртуальной машине. Чтобы нам вернуть освободившееся место, нам поможет утилита под названием Guest Reclaim.
Что такое GuestReclaim
GuestReclaim - это утилита, которая используется для освобождения неиспользуемой памяти виртуальных машин в гостевых операционных системах. Функции GuestReclaim включают:
- Освобождение кэша памяти: Утилита может освобождать кэш памяти, который был занят неиспользуемыми данными или файлами в операционной системе гостя. Это позволяет использовать эту память для других процессов и приложений.
- Оптимизация памяти: GuestReclaim может оптимизировать использование памяти виртуальной машины, освобождая неиспользуемую память и уменьшая объем используемой оперативной памяти.
Примеры выполнения GuestReclaim:
Предположим, что виртуальная машина работает на операционной системе Linux и имеет некоторые неиспользуемые файлы в кэше памяти. Выполнение GuestReclaim может освободить этот кэш и вернуть его в систему, чтобы он мог быть использован другими процессами или приложениями.
Если виртуальная машина имеет несколько процессов, которые использовали большое количество памяти, но в настоящее время неактивны, GuestReclaim может освободить эту память и снизить объем используемой оперативной памяти, что позволит другим процессам использовать ее более эффективно.
Сразу хочу сказать, что список поддерживаемых ОС не очень большой:
Поддерживаются следующие гостевые ОС:
- Windows XP
- Windows Vista
- Windows 7
- Windows Server 2003
- Windows Server 2008
При этом версия виртуального железа должна быть девятой. Поэтому если вы ставили ВМ в ESXi 5.0. и ниже то железо необходимо обновить, как это сделать читаем в статье "Как обновить версию виртуальной машины ESXI 5.5 / Как обновить VM Version ESXI 5.5". Также не должно быть снапшотов. Запускать утилиту нужно из гостевой ОС, в которой есть диски, являющиеся тонкими. Ниже я приведу примеры для Windows. Открывайте всегда командную строку в режиме администратора. Далее перейдите в папку с утилитой, для этого есть команда:
Чтобы просмотреть список тонких дисков используйте команду:
При этом если имеются указанные выше ограничения, то в списке Drive Name просто будет пусто и vMware считает первые 16 дисков не являются тонкими. VMware предлагает приступать к уменьшению диска, когда у вас разница между размером VMDK и файлами гостевой ОС хотя бы 1 ГБ, при этом для работы самой утилиты может потребоваться дополнительно 16-100 МБ свободного места. Также перед началом использования утилиты рекомендуется запустить дефрагментацию диска, на которую тоже может потребоваться свободное место (будет расти сам VMDK-файл).
Когда я обновил виртуальное железо и удалил снапшот то диск нашелся. Для запуска процесса "очистки" вводим команду.
Я запустил утилиту в ВМ, в которой диск был сконвертирован из "толстого" и котором было 50 Гб свободного места. Программа работала минут 10. Сравнив объем LUN до и после, обнаружил что было освобождено всего 7 Гб.
Во втором случае удалил данные именно с тонкого диска. Запустил утилиту. Место на датасторе увеличилось на размер удаленных данных. Дополнительные возможности:
- Поддержка томов Simple FAT/NTFS
- Поддержка flat partitions и flat disks для истребования пространства
- Работа в виртуальных и физических машинах
Список ключей GuestReclaim
- -h или –help: выводит справочную информацию о доступных ключах и их описаниях.
- -v или –version: выводит информацию о версии утилиты.
- -u или –username: указывает имя пользователя для подключения к удаленному хосту VMware.
- -p или –password: указывает пароль для подключения к удаленному хосту VMware.
- -i или –ipaddress: указывает IP-адрес удаленного хоста VMware, к которому нужно подключиться.
- -r или –reclaim: запускает процесс освобождения неиспользуемой памяти на удаленном хосте VMware.
- -a или –all: осуществляет освобождение памяти для всех виртуальных машин на удаленном хосте VMware.
- -n или –name: указывает имя конкретной виртуальной машины, для которой нужно освободить память.
- -d или –dry-run: выполняет пробный запуск утилиты без фактического освобождения памяти.
- -l или –log: указывает путь к файлу журнала, в который будут записываться результаты работы утилиты.
- -c или –config: указывает путь к конфигурационному файлу, содержащему параметры для запуска утилиты.
- -s или –snapshot: указывает имя снимка состояния виртуальной машины, для которой нужно освободить память.
- -m или –memory-size: указывает размер памяти, который нужно освободить (в мегабайтах).
- -f или –force: принудительно освобождает память, игнорируя предупреждения и ошибки.
- -t или –timeout: указывает время ожидания для завершения операции освобождения памяти.
- -e или –exclude: исключает определенные виртуальные машины из операции освобождения памяти.
- -g или –guest-cpu-usage: указывает минимальную загрузку процессора гостевой операционной системы, при которой память будет освобождена.
- -b или –balloon-size: указывает размер шара (balloon), который будет использоваться для освобождения памяти.
- -w или –wait: ожидает завершения операции освобождения памяти перед завершением утилиты.
- -q или –quiet: запускает утилиту в тихом режиме без вывода лишней информации.
- -s или –size: указывает размер памяти, который нужно освободить для каждой виртуальной машины.
- -l или –list: выводит список доступных виртуальных машин, которые можно включить или исключить из операции освобождения памяти.
- -x или –exclude-list: указывает файл с списком виртуальных машин, которые нужно исключить из операции освобождения памяти.
Как сжать тонкий диск ESXI через PowerCli
Вы можете воспользоваться скриптом PowerCli. Код приведен ниже.
# Путь для удаления и команда для выполнения
$PathToSDelete ="C:\Windows\sdelete.exe"
$SDeleteCommand = "sdelete -z c"
# Подключение к vCenter Server
# Я рекомендую создать новый VICredentialStoreItem и использовать его для подключения к серверу vCenter.
$VIServer = "vcenter.pyatilistnik.org"
# Чтобы создать зашифрованный файл паролей, выполните следующую команду
# Read-Host -AsSecureString | ConvertFrom-SecureString | Исходящий файл securestring.txt
# Заполняем $CredFile путем к Securesting.txt
$CredFile = "C:\Users\Administrator\securestring.txt"
$Password = (Get-Content $CredFile | ConvertTo-SecureString)
$Cred = New-Object System.Management.Automation.PSCredential ("VCLOUDLAB\Administrator", $Password)
# Устанавливаем хост назначения
$DstDS = "ESX23-LOCAL"
# Имя vSphere Cluster
$ClusterName = "Test"
# Подключение к vCenter Server
Connect-VIServer $VIServer | Out-Null
# Создаем массив со всеми виртуальными машинами Windows
# $SrcVM = (Get-Cluster $ClusterName | Get-VM | Where {$_.Guest.OSFullName -like "*Windows*"})
# Запускать только для конкретной виртуальной машины
$SrcVM = (Get-VM | Where {$_.Name -like "client2"})
# Для каждого объекта массива.
$SrcVM | ForEach-Object {
# Установить исходное хранилище данных
$SrcDS = ((Get-HardDisk $_).Filename).Split('[')[1].Split(']')[0]
# Установить исходный формат диска
$DiskFormat = ((Get-HardDisk $_).StorageFormat | select -uniq)
# Установить исходный хост
$SrcHost = (Get-VM $_ | Get-VMHost).name
# Инициируем новый сеанс PSSession
$RemotePSSession = New-PSSession -ComputerName $_.Guest.HostName -Credential $Cred
# Проверьте, существует ли SDelete. Если да, обнулите диск c:
$ExitCodeInvokeCommand = Invoke-Command -Session $RemotePSSession -argumentlist $PathToSDelete, $SDeleteCommand -ScriptBlock {
# Протестируем SDelete и запускаем SDelete
If (Test-Path $args[0]) {
cmd /c "$args[1]" | Out-Null
$ErrorCode = 0
}Else{
$ErrorCode = 1
}; $ErrorCode
}
# Если SDelete найден и обнуление завершено, переместить ВМ в $DstDS, а затем обратно в $SrcDS и $SrcHost.
If ($ExitCodeInvokeCommand -eq 0) {
# Использовать Move-VM для SvMotion виртуальной машины в целевое хранилище данных, используя исходный DiskStorageFormat
Move-VM -VM $_ -Datastore $DstDS -DiskStorageFormat $DiskFormat | Out-Null
# Использовать Move-VM, чтобы SvMotion вернуть виртуальную машину в исходное хранилище данных, используя исходный DiskStorageFormat.
Move-VM -VM $_ -Destination $SrcHost -Datastore $SrcDS -DiskStorageFormat $DiskFormat | Out-Null
}
# Если $ExitCodeInvokeCommand -eq 1, что-то не удалось. Пропускаем эту виртуальную машину.
elseif ($ExitCodeInvokeCommand -eq 1) {
Write-Output "SDelete was not found. Skipping this VM"
}
}
# Отключаемся от сервера vCenter
Disconnect-VIServer $VIServer | Out-Null
Вот так вот можно сжать тонкий диск в ESXi 5.5, хотя я надеюсь Варька допилит это и сделает как у MS просто уменьшил диск в свойствах виртуалки и оно вернулось на LUN. Материал сайта pyatilistnik.org