Jawaban:
qemu-img resize vmdisk.img +10G
untuk meningkatkan ukuran gambar sebesar 10Gbstart the VM, resize the partitions and LVM structure within it normally
Bagaimana cara melakukannya? Tolong jelaskan itu.
Untuk lebih baik atau lebih buruk, perintah di bawah ini akan berjalan bahkan jika disk virtual target dipasang. Ini dapat berguna dalam lingkungan di mana disk tidak dapat di-unmount (seperti partisi root), VM harus tetap aktif, dan pemilik sistem bersedia menanggung risiko korupsi data . Untuk menghapus risiko itu, Anda harus masuk ke VM dan melepas dahulu disk target, sesuatu yang tidak selalu mungkin.
Lakukan hal berikut dari hypervisor KVM.
Tambah ukuran file gambar disk itu sendiri (tentukan jumlah yang akan ditingkatkan):
qemu-img resize <my_vm>.img +10G
Dapatkan nama perangkat virtio, melalui shell libvirt ( drive-virtio-disk0
dalam contoh ini):
virsh qemu-monitor-command <my_vm> info block --hmp
drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
Memberi sinyal driver virtio untuk mendeteksi ukuran baru (tentukan total kapasitas baru):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
Kemudian masuk ke VM. Menjalankan dmesg
harus melaporkan bahwa disk virtio mendeteksi perubahan kapasitas. Pada titik ini, silakan ubah ukuran partisi dan struktur LVM Anda sesuai kebutuhan.
Pertanyaan-pertanyaan serverfault ini serupa tetapi lebih spesifik, ukuran disk KVM online? & Centos Xen mengubah ukuran partisi DomU dan grup volume . Yang pertama menanyakan pertanyaan tentang bagaimana meningkatkan tamu KVM saat online, sedangkan yang ke-2 adalah spesifik XEN menggunakan LVM. Saya bertanya bagaimana menyelesaikan ini saat KVM sedang offline.
CATATAN: Tautan ini berguna untuk METHOD # 1, dan menunjukkan cara menyelesaikan peningkatan ruang disk KVM (berbasis ext3), HOWTO: Mengubah ukuran Gambar Mesin Virtual KVM .
Satu hal yang perlu diperhatikan dengan tamu KVM adalah bahwa partisi yang mereka gunakan di dalam dapat mempengaruhi metode mana yang dapat Anda gunakan untuk menambah ruang disk mereka.
METODE # 1: Partisi berbasis ext2 / ext3 / ext4
Kacang metode ini adalah sebagai berikut:
# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak
# 3. create a new image
qemu-img create -f raw addon.raw 30G
# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img
Sekarang dengan file mykvm.img yang lebih besar di tangan, boot gparted dan perpanjang partisi yang ada ke dalam ruang disk yang baru ditambahkan. Langkah terakhir ini pada dasarnya memperluas partisi OS sehingga dapat memanfaatkan ruang ekstra.
METODE # 2: Partisi berbasis LVM
Berikut adalah langkah-langkah yang saya ikuti secara kasar untuk mengubah ukuran tamu KVM yang menggunakan LVM secara internal.
jalankan fdisk di dalam VM dan hapus & buat kembali partisi LVM
% fdisk /dev/vda
...
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 3263 26105625 8e Linux LVM
Command (m for help): d
Partition number (1-4): 2
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5874, default 14): 14
Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874):
Using default value 5874
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 83 Linux
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p
Disk /dev/vda: 48.3 GB, 48318382080 bytes
255 heads, 63 sectors/track, 5874 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/vda1 * 1 13 104391 83 Linux
/dev/vda2 14 5874 47078482+ 8e Linux LVM
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or
resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
%
Nyalakan ulang VM
Ubah ukuran volume fisik LVM
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 24.90 GB / not usable 21.59 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 796
Free PE 0
...
% pvresize /dev/vda2
% pvdisplay
--- Physical volume ---
PV Name /dev/vda2
VG Name VolGroup00
PV Size 44.90 GB / not usable 22.89 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 1436
Free PE 640
...
Ubah ukuran Volume Logika LVM
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
Kembangkan sistem File
% resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
Di atas adalah contoh saya, tetapi saya mengikuti langkah-langkah di situs web ini
virt-manager
dan telah menggunakan metode # 1 & # 2 secara ekstensif sebelum saya memigrasi server KVM kami ke versi KVM yang lebih baru (CentOS 5 -> CentOS 6). Saya sekarang menggunakan qemu-img resize
metode ini juga.
lvextend /dev/Volgroup/lvname /dev/vda2
(semua dalam satu baris, di mana / dev / vda2 akan menjadi volume fisik Anda). Tanpa opsi lain, itu akan menggunakan ukuran maksimum dalam grup volume itu.
Ubah Ukuran dan Perluas Partisi Internal dalam Satu Langkah
Saya memiliki host Ubuntu dengan gambar file tamu qcow2 dan ingin mengubah ukuran disk dan memperluas partisi yang sesuai semua dalam satu langkah. Ini mengharuskan Anda untuk mengatur utilitas sistem file guest libvirt, tetapi itu berguna untuk tetap ada.
Inspirasi dari sini: http://libguestfs.org/virt-resize.1.html
Perintah kuncinya di sini adalah: virt-resize
Persiapan:
* Install libvirt file system utilities package
* sudo apt-get install libguestfs-tools
* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
* sudo libguestfs-test-tool
* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
* sudo update-guestfs-appliance
* Run the test again and verify it works
* sudo libguestfs-test-tool
Sekarang lakukan hal berikut:
1) mematikan tamu:
2) Periksa ukuran saat ini dan lihat nama partisi yang ingin Anda kembangkan menggunakan utilitas libvirt:
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3) Buat disk keluaran (40G) baru:
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4) Salin yang lama ke yang baru sambil memperluas partisi yang sesuai (dengan asumsi partisi disk Anda dari langkah 2 adalah / dev / sda1):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5) Ganti nama file indisk sebagai cadangan, ganti nama outdisk sebagai indisk (atau ubah XML tamu)
6) Reboot tamu dan uji file disk baru dengan hati-hati sebelum menghapus file asli
7) Untung!
-o preallocation=metadata
membuat file jarang. Dengan opsi itu, pra-mengalokasikan seluruh ukuran.
-o preallocation=metadata
dan jika tidak, Anda juga harus melewati truncate
langkah ini. virt-resize
akan tumbuh file yang sesuai pula.
Jika Anda menggunakan LVM dalam VM, cara paling sederhana untuk melakukannya adalah dengan menambahkan disk virtual baru ke VM dan memperluas grup volume dan volume logis ke dalamnya.
Untuk memeriksa apakah Anda menggunakan LVM run sudo pvs; sudo vgs; sudo lvs
, Anda akan mendapatkan sesuatu seperti ini:
PV VG Fmt Attr PSize PFree
/dev/vda1 vgWWW lvm2 a- 30.00g 0
VG #PV #LV #SN Attr VSize VFree
vgWWW 1 2 0 wz--n- 30.00g 0
LV VG Attr LSize
root vgWWW -wi-ao 28.80g
swap vgWWW -wi-ao 1.19g
jika OS VM menggunakan LVM. Dalam contoh di atas VM memiliki vdisk 30Gbyte, dikonfigurasi menggunakan LVM dengan satu grup volume bernama vgWWW yang berisi dua volume logis, satu untuk swap dan satu untuk yang lainnya.
Jika LV digunakan di VM:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(atau sesuatu seperti sudo lvextend --size +8G /dev/vgWWW/root
jika Anda tidak ingin tumbuh sepanjang jalan, contoh ini akan menambah 8Gb ke volume)resize2fs /dev/vgWWW/root
Catatan: di atas mengasumsikan nama vg / lv sama dengan contoh saya yang tidak mungkin, ubah sesuai kebutuhan, juga jika VM sudah memiliki drive virtual yang disebut vdb
yang baru akan menjadi sesuatu yang lain ( vdc
, dan seterusnya)
Catatan: resize2fs
hanya akan bekerja pada sistem file ext2, ext3 dan ext4. Jika Anda menggunakan sesuatu yang lain itu akan kesalahan dan tidak melakukan apa pun.
Catatan: karena Anda mengubah ukuran sistem file langsung resize2fs
tidak akan meminta Anda untuk menjalankannya fsck
terlebih dahulu seperti halnya untuk sistem file yang tidak di-mount, itu hanya akan berjalan terus. Anda mungkin ingin menjalankan sistem file read-only memeriksa tidak ada masalah sebelum melanjutkan.
Dimungkinkan untuk melakukan pengubahan ukuran online. libvirtd mendukung ini secara asli:
Temukan nama perangkat blok. Seharusnya sesuatu seperti "vda"
$ virsh domblklist <libvirtd_vm_name>
Ubah ukuran perangkat virtual:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
Berikut adalah contoh di mana saya memperluas vda
disk dari 50GB
ke 51GB
untuk undercloud
VM.
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
Sekarang lihat detail file gambar .qcow2:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
Sekarang mari kita mengubah ukuran perangkat blok vda:
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
Dan konfirmasikan:
[root@gss-rhos-4 ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
[root@gss-rhos-4 ~]#
Kemudian Anda dapat menggunakan skrip ini di dalam VM untuk menampilkan perintah untuk mengubah ukuran perangkat blok dan fs: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh .
Ada kemungkinan untuk meningkatkan ukuran disk VM Anda tanpa me-reboot VM jika Anda menggunakan virtio drive dan LVM.
(Opsional) Buat partisi utama dengan fdisk untuk mendapatkan / dev / vdb1, kemudian gunakan kpartx -a / dev / vdb untuk membaca ulang tabel partisi
Gunakan vgextend vg_name / dev / vdb1 (atau / dev / vdb jika Anda tidak membuat partisi)
Kamu sudah selesai.
Dengan cara ini Anda dapat memperluas partisi yang Anda inginkan:
# see what partitions you have?
virt-filesystems --long -h --all -a olddisk
truncate -r olddisk newdisk
truncate -s +5G newdisk
# Note "/dev/sda2" is a partition inside the "olddisk" file.
virt-resize --expand /dev/sda2 olddisk newdisk
Lihat lebih banyak contoh di sini .
Cara lain untuk melakukannya
truncate -s +2G vm1.img
pergi di make a disk scan ulang dan setelah Anda dapat melakukan ukuran lvm Anda.
Jika Anda memiliki LVM di VM Anda maka ini gila mudah dan cepat.
sudo system-config-lvm
terminal) *.Saya menemukan GUI cukup intuitif, tetapi ikuti langkah selanjutnya jika Anda memiliki masalah.
Catatan! Setidaknya pada CentOS 6 LVM GUI tidak diinstal secara default, tetapi Anda dapat menginstalnya dengan yum install system-config-lvm
.
Ubah ukuran gambar:
qemu-img resize vmdisk.img +16G
meningkatkan ukuran gambar sebesar 16 GB.
Jika gambar Anda memiliki GPT (GUID Partition Table) maka ukuran drive yang digunakan dalam GPT akan berbeda dari ukuran baru, Anda harus memperbaikinya dengan gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
atau dengan parted
:
parted $MY_DRIVE print Fix
Untuk beberapa alasan parted
perbaikan tidak berfungsi ketika tidak ada tty yang disajikan (misalnya saat penyediaan dengan Vagrant) jadi saya gunakan gdisk
.
Tambah ukuran partisi untuk mengisi semua ruang yang tersedia:
MY_PARTITION_GUID=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^Partition unique GUID: //p'
i
EOF
)
MY_PARTITION_FIRST_SECTOR=$(
gdisk $MY_DRIVE <<EOF | sed -n -e 's/^First sector: \([0-9]\+\).*/\1/p'
i
EOF
)
gdisk $MY_DRIVE <<EOF
d
n
$MY_PARTITION_FIRST_SECTOR
x
a
2
c
$MY_PARTITION_GUID
w
Y
EOF
Bagian x a 2 <Enter>
ini opsional dan diperlukan jika Anda menggunakan BIOS lawas.
MY_PARTITION_GUID=...
dan c $MY_PARTITION_GUID
bagian juga opsional dan hanya diperlukan jika Anda menggunakan UUID partisi di /etc/fstab
atau di tempat lain.
Reboot atau baca ulang partisi dengan partx -u $MY_DRIVE
atau partprobe
.
Perpanjang partisi, contoh untuk ext2
, ext3
atau ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
Anda dapat menggunakan solus vm dengan gparted mount. Setelah digunakan dengan gparted, Anda dapat dengan mudah mem-boot sistem dan menyesuaikan ruang. Pastikan Anda memiliki prioritas boot yang benar. Sebagai referensi, silakan merujuk url di bawah ini yang bisa berguna. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html