- Перенос/уменьшение виртуального диска на меньший
- Ubuntu Linux (сжатие VHD диска)
- Уменьшение размера тонкого диска в ESXi
- KVM: Как увеличить/уменьшить размер диска виртуальной машины?
- Увеличение диска виртуальной машины KVM
- Расширение виртуального диска со стороны KVM
- Расширение раздела в виртуальной машине с Linux CentOS
- Увеличение диска в гостевой Windows Server
- Как уменьшить размер виртуального диска в KVM?
- Уменьшение KVM диска с помощью утилиты qemu
- Уменьшение виртуального диска с подменой образа
- Форматы дисков KVM и сжатие диска в qcow2 формате
Перенос/уменьшение виртуального диска на меньший
Всем привет, возникла проблема, необходимо уменьшить виртуальный диск. Гипервизор — proxmox, размер диска — 500гб, надо уменьшить до 100, файлы занимают 39гб. ОС — centos 7, без графического интерфейса. К сожалению с линуксом не знаком, а пока администратор в отпуске, надо это сделать. Пробовал через rsync все файлы передать на другой диск, но он не включился по итогу. Пробовал переводить диск в raw и выполнял сделать qemu-img resize -f raw vm-763-disk-2.raw 100G, результат как вы понимаете не превзошел ожидания, сам образ диска qcow2 формата. Файловая система как я понял xfs. dd не хочет переносить на меньший диск. Подскажите пожалуйста как это сделать
а пока администратор в отпуске, надо это сделать
лучше бы тебе в раздел job написать.
тебя интересует уменьшение файла qcow или чего ты в конечном итоге получить желаешь ?
Подсказать? Ты понимаешь, что все вариации работы с диском в Linux тянут на лекцию? Я имею в виду буквально на лекцию — вот я новичку подборку статей делал, и это без учета шифрования и без учета особенностей работы с виртуалками, там есть более атипичные варианты, чем эмуляция ЖД: Как разметить жёсткий диск? (комментарий)
Нет, в самом простом случае, если там один нешифрованный обычный раздел на XFS на эмулируемом жестком, то придется просто перенести файлы с сохранением прав и меток да поправить фстаб. Но это если очень повезло. А так — без конфигурации сказать способ переноса нельзя. Там _действительно_ много вариантов.
Источник
Ubuntu Linux (сжатие VHD диска)
Ни для кого не секрет, что в Hyper-V Manager есть возможность сжатия диска:
Консоль редактирования VHD диска
Выбор VHD диска для сжатия
Выбор сжатия диска
В случае если на виртуальной машине у вас установлена ОС отличная от Windows, то при сжатии диска вы можете увидеть нулевой результат, точнее говоря, размер диска не изменится и останется таким же как и был.
Данная картина довольно часто встречается в случае если на виртуальной машине Hyper-V установлена операционная систему Ubuntu Linux.
Для ее решения вам необходимо установить программу secure-delete в Ubuntu:
После чего выполнить команду:
Данная команда заполнит все свободное пространство на диске 0 и пометит его свободным. Процедура по выполнению команды может длится довольно долго, от 10 минут и до нескольких часов. Во многом все зависит от производительности вашего сервера и его дисковой подсистемы.
Пока команда выполняется никакой новой информации появляться не будет, нужно просто дождаться ее завершения.
После того как команда выполнилась можно заново начать сжимать диск предварительно выключив виртуальную машину:
Информация о диске до сжатия
Идет сжатие диска
Идет сжатие диска
Процесс может занимать довольно длительное время от 5 минут и нескольких часов, в зависимости от скорости вашей дисковой системы и на сколько она сейчас занята другими виртуальными машинами.
По окончании, проверяем наш размер VHD диска:
Размер диска после сжатия
Как видим размер диска уменьшился на 5 Гб. Что составляет порядка 42% процентов, что весьма неплохо.
В зависимости от занятости вашей виртуальной машине дискового места, данный процент может варьироваться и быть больше или меньше.
Источник
Уменьшение размера тонкого диска в ESXi
Когда я начал работать с ESXi, столкнулся с проблемой нехватки дискового пространства из-за сильно разросшихся тонких дисков. Вообще, лучше создавать диски меньшего размера, потому что увеличить диск в ESXi намного проще, чем уменьшить. Но что же делать, если все-таки возникла необходимость уменьшить диск? Причем, мое положение усугубляли LVM разделы на сервере, которые не распознавал Acronis, и, следовательно, не мог изменить размер раздела.
Опишу способ, которым воспользовался я:
1 этап) Уменьшение диска внутри виртуальной машины
Сперва нужно уменьшить диск внутри самой виртуальной машины, для этого существует множество универсальных программ: Acronis disc director, paragon partition manager, встроенная утилита управления дисками в windows и т.д. Мне ни одна из этих программ не помогла, поэтому пришлось использовать средства линукса и LiveCD.
1) Для начала нужно загрузиться с livecd linux, я использовал для этого centos 7. При загрузке виртуальной машины клавиша ESC для появления меню загрузки.
2) Активируем LVM разделы
3) Проверка активированных логических томов
4) Проверяем файловые системы
5) Уменьшаем размер файловой системы
6) Уменьшаем размер тома до размера файловой системы
Также мы можем добавить это место к другом тому
Для этого:
Увеличиваем том root:
Увеличиваем размер файловой системы на томе root до размера тома:
7) Опять проверяем целостность файловой системы
8) Далее можно запустить виртуальную машину и убедиться, что все корректно работает
2 этап) уменьшение provisioning space.
10) Выключаем виртуальную машину
11) Подключаемся по SSH к физическому серверу, на котором установлен ESXi
12) Переходим в каталог, в котором хранится vmdk файл ВМ (путь можно узнать в свойствах виртуального диска в графическом клиенте vSphere). У меня это
Каталог имеет подобную структуру:
-rw——- 1 root root 3424256 Feb 2 08:24 vmmcores-1.gz
-rw-r—r— 1 root root 240722 Dec 20 20:46 vmware-1.log
-rw-r—r— 1 root root 1252287 Feb 2 08:24 vmware-2.log
-rw-r—r— 1 root root 43555 Feb 2 08:24 vmware-3.log
-rw-r—r— 1 root root 151873 Feb 2 08:25 vmware.log
-rw——- 1 root root 122683392 Feb 2 08:24 vmx-VM_name-186599173-1.vswp
/vmfs/volumes/53114b32-24d88d5a-2cbe-0025b500004f/VM_name #
13) Просмотрим содержимое конфигурационного файла с расширением *.vmdk с помощью команды cat или vi:
# Disk DescriptorFile
version=1
encoding=«UTF-8»
CID=829544ab
parentCID=ffffffff
isNativeSnapshot=«no»
createType=«vmfs»
# Extent description
RW 44000000 VMFS «VM_name-flat.vmdk»
# The Disk Data Base
#DDB
ddb.adapterType = «lsilogic»
ddb.geometry.cylinders = «17884»
ddb.geometry.heads = «255»
ddb.geometry.sectors = «63»
ddb.longContentID = «c78bccbfd4724f0ee20a1ef2829544ab»
ddb.thinProvisioned = «0»
ddb.uuid = «60 00 C2 98 20 ac 05 4a-e5 39 e4 40 e8 a2 d8 d0»
ddb.virtualHWVersion = «8»
14) Размер vmdk диска задается в секции #Extent description (после символов RW). Меняем это значение, например, чтобы установить размер диска в 20Гб ставим 41943040 (20 Гб*1024*1024*1024 / 512)
Я ставлю значение немного больше, чем размер, вычисленный по методике выше (41943040 (20 Гб*1024*1024*1024 / 512)), на всякий случай.
15) Осталось склонировать или смигрировать виртуальную машину, после чего отобразится новый размер диска.
Физическое уменьшение тонкого диска без изменения provisioning
Также возможно только уменьшить размер файла виртуальной машины, путем удаления нулевых блоков.
Для этого:
1) Нужно заполнить все неиспользованное пространство, внутри виртуальной машины, нулями. Создаем файл по размерам неиспользуемой области диска, а потом удаляем его.
2) Подключаемся по SSH к консоли ESXi как описано выше и переходим в каталог с виртуальной машиной.
3) В консоли гипервизора есть специальная утилита, которая позволяет затереть нулевые блоки, тем самым уменьшив физический размер тонкого диска.
Делается это с помощью ключа -K (можно также использовать ключ —punchzero) в консоли сервера ESXi
Надо отметить, что утилита vmkfstools, запущенная с ключом -K, еще и может преобразовать обычный диск (zeroedthick или eagerzeroedthick) в thin disk с вычищением нулевых блоков и, соответственно, уменьшением размера vmdk.
Источник
KVM: Как увеличить/уменьшить размер диска виртуальной машины?
В этой статье мы поговорим об изменении размера дисков виртуальной машины KVM, рассмотрим используемые форматы виртуальных дисков. Покажем, как правильно увеличить диск виртуальной машины в гипервизоре KVM на Linux без потери данных, а также обсудим варианты уменьшения размеров дисков.
Увеличение диска виртуальной машины KVM
Расширение виртуального диска со стороны KVM
Для того, чтобы проводить работы с диском, виртуальная машина должна быть отключена, иначе мы не сможем что-либо сделать. Рассмотрим пример с увеличением диска размер которого изначально был 20Гб.
Чтобы посмотреть параметры диска виртуальной машины KVM, воспользуйтесь командой:
qemu-img info /путь_до_диска
Вывод команды будет примерно такой:
Мы видим, что у нас есть два поля которые указывают на размер, это virtual_size и disk_size:
- virtual_size – размер виртуального диска, указанный при создании или расширении диска (в этом примере максимальный размер диска – 20 Гб);
- disk_size — размер файла диска в текущий момент, т.е. сколько сейчас занимает образ диска места на физическом сервере (относится только к формату qcow). В нашем пример виртуальный диск занимает всего 1,6 Гб на хранилище.
И сразу о форматах. Я рекомендую при создании виртуальных машин на KVM использовать формат диска qcow2, а не raw. Чуть позже я объясню почему.
Следующим шагом расширим диск виртуальной машины, на 5Gb (для корректного расширения диска у виртуальной машины не должно быть снапшотов!).
# qemu-img resize /путь до диска +5G
Если сразу проверить вывод информации об образе диска, мы увидим, что он расширился:
# qemu-img info /путь_до_диска
Часть работы мы сделали, но требуется и проведение работ со стороны виртуальной машины в гостевой ОС. Далее мы покажем, как увеличить размер диска в гостевых CentOS 7 и Windows Server 2012.
Расширение раздела в виртуальной машине с Linux CentOS
После расширения диска со стороны сервера, нужно запустить виртуальную машину и подключиться к ней по ssh. Все работы будут проводиться с помощью утилиты управления разделами жестких дисков fdisk.
После подключения к серверу, проверяем наличие нашего дополнительно подключенного места:
На скриншоте видно, раздел /dev/vda2 имеет размер 20Gb, а доступное место на диске у нас больше.
Подправим этот момент и расширим раздел /dev/vda2 до максимального объема:
После чего нам нужно сделать рестарт виртуальной машины и выполнить команду для применения расширения диска:
В итоге мы получили расширенный раздел /dev/vda2. Теперь по порядку, что именно мы сделали:
- fdisk /dev/vda — запустили утилиту fdisk подключившись к разделу /dev/vda
- /d — удаляем раздел, по умолчанию это раздел 2 который нам и нужен, поэтому в следующем пункте жмем просто Enter
- /n – создаем новый раздел, в следующем пункте так же просто жмем Enter или вводим p, далее Enter так как создаваемый раздел по умолчанию будет 2.
- При указании первого и последнего сектора так же жмем просто Enter, если мы хотим расширить раздел до максимума, если вы хотите указать конкретный размер, в последнем секторе указывайте размер диска как указано в меню +size
Размер не может быть меньше, чем был ранее! - /w — применяем наши настройки.
После перезагрузки проверим диск командой:
В некоторых источниках для выполнения данной процедуры указывают команду:
Но с файловой системой xfs это не работает!
Работы по расширению диска на виртуальной машине с ОС CentOS 7 закончены.
Увеличение диска в гостевой Windows Server
Подключаемся к виртуальной машине через rdp или VNC и выполняем работы по расширению диска.
- Откройте Server Manager -> Tools -> Computer Management;
- В открывшемся окне выбираем в меню Disk Management, после чего у вас должны отобразиться все ваши диски и неразмеченное пространство, которые мы добавили со стороны гипервизора KVM;
- Выбираем нужный диск и нажимаем Extended Volume;
- По умолчанию для увеличения размера диска будет предложено все доступное место;
- Нажимаем «далее» и завершаем расширение. После данной процедуры, ваш раздел в системе должен будет расшириться;
Хотелось бы добавить, что перед процедурой расширения диска для виртуальной машины, я советую выполнять резервное копирование самого диска. Остановите виртуальную машину и скопируйте образ диска в директорию для бэкапа или в любую директорию, в которой есть свободное место. Если в ходе работ, что-то пойдет не так, вы всегда сможете вернуть образ виртуального диска из бэкапа.
Как уменьшить размер виртуального диска в KVM?
В своей работе, ранее я довольно часто сталкивался с данным вопросом, но к сожалению, безболезненно уменьшить диск на виртуальной машине в KVM нельзя! Единственный приемлемый размер уменьшения размер диска виртуальной машины KVM на физическом хранилище – его сжатие через конвертацию.
В интернете фигурирует много статей, якобы благодаря которым вы можете уменьшить размер диска на виртуальной машине, но это не работает.
Я приведу несколько примеров, на которые я натыкался и которые лично мною были проверены.
Уменьшение KVM диска с помощью утилиты qemu
На ряде ресурсов описаны действия, выполняемые с помощью утилиты qemu. В них предлагается уменьшить размер диска виртуальной машины с помощью команды:
qemu-img resize /путь_до_диска -5G — уменьшаем диск на 5G
Или такой вариант с указанием конкретного размера:
qemu-img resize /путь_до_диска 25G — указываем размер диска в 25G
Что происходит после выполнения данной команды? Запускаем сервер и конечно система не грузится:
Я пробовал сначала уменьшить раздел из-под системы с помощью утилиты fdisk, но в таком случае, система так же перестает загружаться, даже если вы пропустите шаг уменьшения диска с физического сервера и это логично. Раздел который мы уменьшаем, системный и соответственно ОС перестает загружаться, так как при уменьшении диска, информация по всей видимости уничтожается.
Уменьшение виртуального диска с подменой образа
Уже не такой распространенный в инструкциях вариант — это уменьшение диска, с подменой на старый. То есть, вы создаете новую виртуальную машину с нужным вам размером диска. После чего, подменяете старый образ диска в новый образ и судя по описанию статей в разных источниках, это работает. Я так же сделал проверку и это сломало файловую систему, как и в первом варианте. Я приведу пример команды:
virt-resize /старый_образ_диска /новый_образ_диска
Приводились так же варианты, с конвертацией диска с формата raw в формат qcow2, НО я изначально создаю машины в данном формате и объясню почему.
Форматы дисков KVM и сжатие диска в qcow2 формате
В самом начале статьи, я упомянул про эти два формата.
raw – в переводе «сырой». Преимущество формата, максимальная производительность, универсальность формата. Минусов масса, основные это:
- Диск занимает все дисковое пространство на физическом сервере, которое ему выделили;
- Нельзя создать снапшоты.
Qcow2 – это родной формат гипервизора QEMU, а так же QEMU-KVM. Это максимально удобный формат виртуального диска из всех поддерживаемых в KVM. Образ диска увеличивается по мере накопления данных на виртуальной машине, поддерживаются снапшоты.
Чем хорош формат qcow2? Вам в принципе не нужно уменьшать размер виртуального диска, так как диск занимает на сервере, ровно столько, сколько места там занято. Если же у вас данные на сервере постоянно перезаписываются и бывает такое, что диск «распух», его можно с легкостью сжать. Рассмотрим такой вариант. Я забью нулями некоторое дисковое пространство и после чего удалю файл:
dd if=/dev/zero of=/mytempfile
rm -rf /mytempfile
При проверке с сервера, образ диска сначала весил 2.4G после чего расширился до 5.9G:
# du -sh /путь_образа
# du -sh /путь_образа
То есть после удаления информации на виртуальной машине, диск обратно не сжался. Чтобы файл диска получил актуальный размер, я использую следующий метод:
Бэкапим файл диска, останавливаем виртуальную машину и после чего выполняем следующие действия:
qemu-img convert -O qcow2 /старый_образ /новый_образ
После чего можно проверить размеры двух дисков:
# du -sh /новый_диск
# du -sh /старый_диск
Как видим, размер сжатого диска 1.6G. Переименуем новый образ диска в нужный нам и запустим виртуальную машину:
Контрольная проверка с сервера:
# du -sh /образ_диска
Способ рабочий. За все время его использования, ни разу файловая система на виртуальной машине не умирала. Но настоятельно рекомендую перед подобными работами, создавать копию диска, если не хотите потерять данные.
Это все, что я хотел в данной статье рассказать. Если у кого-то из посетителей сайта есть рабочий способ по уменьшению диска на KVM, именно уменьшения (не сжатие) и именно рабочий, предлагайте свои варианты и я обязательно их протестирую.
Ваша система на CentOS не грузится после уменьшения ввиду того, что xfs не поддерживает уменьшение раздела, что нельзя сказать об ext4, например. Но и ресайзить qcow2 образ в сторону уменьшения его объема так же плохая идея. Если говорить о файловой системе xfs, применимой в образе виртуального диска, то лучше создать новый образ qcow2 и в resque, например, подцепить оба образа и выполнить xfs_dump и xfs_restore. Но в этом случае так же придется править grub.
На самом деле в своей работе и ext4 пробовали уменьшать, получилось то, что получилось выше)
Ни разу нормально ничего не уменьшилось. Посыл раздела по уменьшению был такой: куча статей с вариантами уменьшения диска, которые гробят систему. А некоторые в принципе не срабатывают даже, непонятно тестируют ли вообще люди то, о чем пишут. Да и с образом в формате qcow2 смысла уменьшать разделы не вижу, лишние нервы. Есть vds не занимает место, то пусть и будет там раздел хоть на 100Гб) На днях еще раз проверю с ext4 и отпишусь, но последний раз это окончилось плачевно.
Виртуалка с диском на 1000гб будет делать бэкапы гораздо дольше чем со 100гб
Чтобы руками не чистить место от удаленных файлов на дисках ВМ — пользуем TRIM
Win начиная с Vista и любой современный Linux (вкл. службу TRIM) умеют TRIM. Единственное, TRIM должен поддерживаться самим виртуальным контроллером. Virtio только недавно этому научился, а вот SCSI умеет давно. В Proxmox VE TRIM вкл. галкой прямо в свойствах ВМ forum.netgate.com/topic/120102/proxmox-ceph-zfs-pfsense-и-все-все-все
fstrim на kvm тоже работает, но замечал, что не всегда диск виртуальной машины сжимается в актуально состояние, поэтому приходится конвертацию делать.
Господа. Ваша ошибка с fdisk’ом в том, что вы не уменьшили файловую систему. Уменьшать надо сначала ФС, потом раздел, а потом уже диск. Проблема конкретно с xfs — да, она не уменьшается напрямую. Для остальных есть абсолютно рабочий способ уменьшить диск, многократно проверенный. Повторюсь, это для файловых систем, нормально поддерживающих изменение размера в минус. Даже если это qcow2 — добавьте конвертацию в тип raw, и все работает и с ext[234], и c ntfs.
Для ntfs проще всего, там уменьшение ФС и раздела за один шаг — 1) сжать раздел в консольной оснастке diskmgmt.msc, лучше, чтобы он был несколько меньше конечного объема диска, так не пострадает «хвост» файловой системы. 2) если это qcow/qcow2 — преобразовать в raw (qemu-img convert -p -O raw /»путь к текущему диску» /»путь к новому диску»). 3) уменьшить размер raw диска настолько, чтобы он был несколько больше суммы размеров ваших разделов на нем (если не сделали разделы меньше желаемого объема — см п.1) — той же утилитой (qemu-img resize «/путь к raw-диску» -«размер уменьшения»). 4) меняем в конфигурации виртуалки «/путь к диску qcow» на «/путь к диску raw» и, соответственно, тип диска. 5) пробуем запуск ОС. Если работает (у меня еще не было случаев, чтобы не сработало), то можем удалять старый диск qcow и затем, по желанию, конвертировать назад из raw в qcow(2) с изменением настроек виртуалки. 6) опять заходим в diskmgmt.msc и расширяем раздел до новой границы.
Плюсы — всегда есть старая копия диска до предыдущей операции. Минусы — нужно дополнительное место на диске.
В случае с ext[234] — все то же самое, только вместо diskmgmt и сжатия раздела — resize2fs. Однако, стоит заметить, если ФС примонтирована, лучше этого не делать. Или отмонтировать, если это некритичный для работы раздел, либо загрузиться с live-системы и сделать это, например, если это root
По поводу того, зачем разные форматы — вот так работает 100%, т.е. диск raw отлично меняет свой размер, если вы позаботились о размере ФС (в случае уменьшения). Кроме того, он быстрее на 10% и нет варианта, что вы отдали всем виртуалкам в сумме больше диска, чем у вас есть. Но тут нужно для себч решить — нужны ли эти 10% производительности или снапшоты, которых raw не поддерживает. С другой стороны, если у вас образы лежат на любой структуре, поддерживающей снапшоты (zfs, lvm, та же xfs) — может и не нужен qcow. Вот только смешивать на одном разделе хоста образы в разных форматах не рекомендую: если не уследите за разрастанием qcow-дисков, будет беда. Машины с qcow-дисками при невозможности расшириться дальше просто станут на паузу, а машины с, например, raw-дисками в «тонких» lvm при невозможности расшириться или записать на диск, исковеркают свою ФС и упадут.
Добавлю свои 5 коп.: Если после увеличения размера образа свободное место не отражается в VM c Windows Server, а перезагрузка VM затруднительна, то можно решить проблему командой DISKPART RESCAN
Источник