Pertanyaan Bagaimana Anda meningkatkan ruang disk tamu KVM?


Saya mengatur tamu Ubuntu di host CentOS KVM dengan awalnya 6GB ruang disk. Bagaimana cara meningkatkan ruang disk tamu Ubuntu dari baris perintah?

EDIT # 1: Saya menggunakan file gambar disk (qemu).


84
2017-10-24 14:23




Apakah Anda menggunakan LVM atau disk image dalam file? - Selivanov Pavel


Jawaban:


  1. hentikan VM
  2. menjalankan qemu-img resize vmdisk.img +10G untuk meningkatkan ukuran gambar sebesar 10 Gb
  3. mulai VM, mengubah ukuran partisi dan struktur LVM di dalamnya secara normal

105
2017-10-24 15:32



Ah, Anda memukul saya untuk itu, saya hanya melihat opsi mengubah ukuran pada qemu-img di halaman manual. Jadi ini menyimpan beberapa langkah. Bagus! - slm
Bekerja untuk mengubah ukuran * .qcow2 img saya di RHEL6.6. Terima kasih! - Jacob Goulden
start the VM, resize the partitions and LVM structure within it normally Bagaimana cara melakukannya? Tolong jelaskan itu. - Waki
Anda tidak dapat memiliki semuanya diserahkan kepada Anda di piring. Jika Anda telah mencoba dan gagal mengubah ukuran partisi atau LV, buka pertanyaan baru, jelaskan apa yang Anda coba dan apa yang tidak berhasil - dyasny
Untuk mengubah ukuran partisi dan LVM, ikuti semua langkah seperti yang dijelaskan dalam artikel yang luar biasa ini: sandilands.info/sgordon/… - skonsoft


Metode Online (menggunakan qemu, libvirt, dan virtio-block)

Untuk lebih baik atau lebih buruk, perintah di bawah ini akan berjalan bahkan jika disk virtual target dipasang. Ini dapat berguna di lingkungan di mana disk tidak dapat dilepas (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 disk target terlebih dahulu, sesuatu yang tidak selalu memungkinkan.

Lakukan hal berikut dari hypervisor KVM.

  1. Perbesar ukuran file gambar disk itu sendiri (sebutkan jumlah yang akan ditingkatkan):

    qemu-img resize <my_vm>.img +10G
    
  2. 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]
    
  3. Sinyal driver virtio untuk mendeteksi ukuran baru (tentukan total kapasitas baru):

    virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
    

Lalu masuk ke VM. Lari dmesg harus melaporkan bahwa cakram virtio mendeteksi perubahan kapasitas. Pada titik ini, lanjutkan dan ubah ukuran partisi dan struktur LVM sesuai kebutuhan.


23
2017-09-22 23:08



Halaman manual untuk qemu-img (milik saya tertanggal 2016-05-08) mengatakan: "Peringatan: Jangan pernah menggunakan qemu-img untuk memodifikasi gambar yang sedang digunakan oleh mesin virtual yang sedang berjalan atau proses lainnya; ini dapat merusak gambar. Selain itu, ketahuilah bahwa meng-query gambar yang sedang dimodifikasi oleh proses lain mungkin mengalami keadaan yang tidak konsisten. "Jadi saya tidak yakin apakah (langkah pertama) aman ketika mesin virtual masih berjalan. - user44400
Tidak berfungsi pada centos7 + kvm - e-info128
Ini bekerja dengan sempurna untuk saya. Menggunakan perangkat blok ceph dan virtio. kami menyimpan data aplikasi / MySQL db pada partisi terpisah. Hentikan aplikasi yang mengakses partisi ini. Lepaskan itu. Ubah ukurannya. fsck. lalu pasang lagi dengan ukuran baru. Tidak perlu shutdown. - nelaaro


Pertanyaan-pertanyaan serverfault ini serupa tetapi lebih spesifik, KVM disk secara online mengubah ukuran? & Centos Xen mengubah ukuran partisi DomU dan grup volume. Yang pertama menanyakan pertanyaan tentang cara meningkatkan tamu KVM saat online, sedangkan yang ke-2 adalah XEN spesifik menggunakan LVM. Saya bertanya bagaimana menyelesaikannya sementara KVM offline.

CATATAN: Tautan ini berguna untuk METHOD # 1, dan menunjukkan bagaimana mencapai peningkatan ruang disk KVM (berbasis ext3), HOWTO: Mengubah ukuran Gambar Mesin Virtual KVM.

Satu hal yang harus diperhatikan oleh para tamu KVM adalah bahwa partisi yang mereka gunakan di dalamnya dapat mempengaruhi metode mana yang dapat Anda gunakan untuk meningkatkan ruang disk mereka.

METODE # 1: Partisi adalah ext2 / ext3 / ext4 berbasis

Kacang-kacangan dari 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 memperpanjang 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 kira-kira diikuti untuk mengubah ukuran seorang tamu KVM yang menggunakan LVM secara internal.

  1. Matikan VM
  2. tambahkan lebih banyak ruang untuk "file gambar" tamu (sesuatu seperti: cat old.img 10G_addon.raw >> new.img
  3. mulai VM (menggunakan new.img yang baru dibuat)
  4. jalankan fdisk di dalam VM dan hapus & buat ulang 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.
    %
    
  5. Boot ulang VM

  6. 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
      ...
    
  7. Ubah ukuran Volume Logika LVM

      % lvresize /dev/VolGroup00/LogVol00 -l +640
      Extending logical volume LogVol00 to 43.88 GB
      Logical volume LogVol00 successfully resized
    
  8. Tumbuhkan 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 ini situs web


17
2017-10-24 14:36



metode # 1 dalam posting ini tampaknya tidak bekerja dengan baik - manajer mesin virtual dalam topi merah tidak melaporkan ukuran baru sesudahnya. Metode yang disarankan oleh @dyasny tampaknya bekerja paling baik dalam hal ini. - Iwan Aucamp
@IwanAucamp - menarik, saya gunakan virt-manager dan telah menggunakan metode # 1 & # 2 secara ekstensif sebelum saya memigrasikan server KVM kami ke versi terbaru KVM (CentOS 5 -> CentOS 6). Saya sekarang menggunakan qemu-img resize metode juga. - slm
Untuk metode # 2, Anda mungkin menemukan lvextend handier sebagai langkah 7: lvextend /dev/Volgroup/lvname /dev/vda2 (semua pada satu baris, di mana / dev / vda2 akan menjadi volume fisik Anda). Tanpa opsi lain, itu akan menggunakan ukuran maksimum dalam kelompok volume. - Mike S
Metode # 2, langkah 4 tidak akan berfungsi jika ada volume logis dalam tabel partisi. Setelah rekreasi perluasan jenis partisi, sektor pertama yang tersedia tidak akan lagi sesuai dengan apa yang dimiliki sebelum perubahan. Misalnya. jika sektor pertama partisi logical Anda adalah 1001472, setelah perubahan itu akan menjadi 1003518 (dengan asumsi 10G disk sebelum dan 50G setelah mengubah ukuran). Ada yang tahu cara membuat ulang, jika memungkinkan, volume logis pada sektor pertama yang sama? - ILIV
Ini karena fdisk secara default menerapkan batasan penyejajaran (langkah 1MB) ke partisi. Untuk mengatasi, terima nilai default 1003518, masukkan mode pakar (x) lalu pilih b dan atur sektor pertama ke 1001472. Lihat unix.stackexchange.com/a/320447 untuk detailnya. - ILIV


Ubah ukuran dan Perluas Partisi Internal dalam Satu Langkah

Saya memiliki host Ubuntu dengan file gambar tamu qcow2 dan ingin mengubah ukuran disk dan memperluas partisi yang sesuai semua dalam satu langkah. Ini mengharuskan Anda untuk mengatur utilitas filesystem libvirt guest, tetapi itu berguna untuk memiliki sekitar pula.

Inspirasi dari sini: http://libguestfs.org/virt-resize.1.html

Perintah utama di sini adalah: virt-resize

  • ini adalah utilitas libvirt
  • itu dapat memperluas disk tamu DAN memperluas partisi di dalam satu langkah
  • itu menyalin disk, itu tidak memperluasnya di tempat
    • ini bagus karena Anda memiliki aslinya yang tidak tersentuh sebagai cadangan

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 perluas menggunakan utilitas libvirt:

sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file

3) Buat disk keluaran baru (40G):

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) Ubah 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!


11
2018-06-13 14:02



Ini hampir melakukan pekerjaan dalam kasus saya. Sayangnya, hampir. Ketika tamu (CentOS 7 server) di-reboot, ia menemukan disk yang diperluas tidak dapat di-boot. - Urhixidur
Ini sangat berhasil bagi saya. Omiting -o preallocation=metadata membuat file yang jarang. Dengan opsi itu, ia akan mengalokasikan seluruh ukuran. - Dennis Williamson
Luar biasa, jawaban ini memakukannya untuk saya. Terima kasih banyak! Dokumentasi "resmi" untuk libguestfs (libguestfs.org/virt-resize.1.html), sayangnya tidak ditulis dengan baik dan akhirnya menjadi cukup membingungkan. - mbello
Bekerja dengan baik untuk saya, ingat bahwa Anda sebenarnya tidak perlu menggunakannya -o preallocation=metadata dan jika Anda tidak, Anda juga harus melewatkan truncate langkah. virt-resize akan menumbuhkan file sebagaimana mestinya. - amoe


Jika Anda menggunakan LVM dalam VM cara termudah untuk melakukan ini adalah dengan menambahkan disk virtual baru ke VM dan memperluas volume grup 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 30 GB, dikonfigurasi menggunakan LVM dengan satu grup volume yang disebut vgWWW berisi dua volume logis, satu untuk swap dan satu untuk yang lainnya.

Jika LV sedang digunakan di VM:

  1. Matikan VM
  2. Pada host membuat file disk virtual baru dan menambahkannya ke VM
  3. Mulai ulang VM dan masuk
  4. Tandai drive baru sebagai volume fisik untuk LVM dengan sudo pvcreate /dev/vdb
  5. Perluas grup volume untuk menyertakan blok disk baru ini sudo vgextend vgWWW /dev/vdb
  6. Perluas volume logis untuk mengambil ruang baru dengan sudo lvextend --extents +100%FREE /dev/vgWWW/root (atau sesuatu seperti itu sudo lvextend --size +8G /dev/vgWWW/root jika Anda tidak ingin mengembangkannya, contoh ini akan menambah 8Gb ke volume)
  7. Ubah ukuran sistem file dengan resize2fs /dev/vgWWW/root

catatan: asumsi di atas nama vg / lv adalah sama dengan contoh saya yang tidak mungkin, ubah sesuai, 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 filesystem ext2, ext3 dan ext4. Jika Anda menggunakan sesuatu yang lain, itu akan salah dan tidak melakukan apa-apa.

catatan: saat Anda mengubah ukuran sistem file langsung resize2fs tidak akan meminta Anda untuk berlari fsck pertama seperti untuk filesystem yang tidak di-mount, itu hanya akan pergi ke depan. Anda mungkin ingin menjalankan pemeriksaan filesystem read-only tidak ada masalah sebelum melanjutkan.


5
2017-10-24 15:10



Ini juga bisa dilakukan dengan GUI yang cukup bagus centos.org/docs/5/html/Deployment_Guide-en-US/… - Nux


Ada kemungkinan untuk menambah ukuran disk VM Anda tanpa me-reboot VM jika Anda menggunakan drive virtio dan LVM.

  1. Gunakan virt-manager atau virsh untuk menentukan disk kosong baru
  2. Kernel harus melihat file baru / dev / vdb
  3. (Opsional) Buat partisi primer dengan fdisk untuk mendapatkan / dev / vdb1, kemudian gunakan kpartx -a / dev / vdb untuk membaca ulang tabel partisi

  4. Gunakan vgextend vg_name / dev / vdb1 (atau / dev / vdb jika Anda tidak membuat partisi)

  5. Gunakan lvextend -l + 100% GRATIS / dev / vg_name / lv_name
  6. Gunakan resize2fs / dev / vg_name / lv_name untuk memperluas sistem file Anda

Kamu sudah selesai.


3
2017-07-12 10:25



Saya akan menambahkan itu libguestfs.org/virt-resize.1.html juga harus membantu. - FearlessFuture


Cara lain untuk melakukannya

truncate -s +2G vm1.img 

masuklah dalam pemindaian ulang disk dan setelah Anda dapat mengubah ukuran LVM Anda.


2
2018-04-18 17:50





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 sini.


2
2017-10-01 15:50





Jika Anda memiliki LVM di VM Anda maka ini gila mudah dan cepat.

  1. Matikan VM (mesin tamu).
  2. Di mesin host Anda tambahkan perangkat penyimpanan baru.
  3. Nyalakan tamu.
  4. Buka Sistem -> Administrasi -> Manajemen Volume Logis (atau ketik sudo system-config-lvm di terminal) *.

Saya menemukan GUI cukup intuitif, tetapi ikuti langkah selanjutnya jika Anda memiliki masalah.

  1. Buka "Entitas yang Belum Diinisialisasi" dan temukan drive baru Anda.
  2. Setelah memilih drive baru, di bawah gambar Anda akan menemukan tombol inisialisasi. Tekan itu.
  3. Ini akan menanyakan Anda tentang partisi - Anda tidak membutuhkannya.
  4. Setelah selesai, tambahkan drive Anda ke grup volume yang ada.
  5. Akhirnya Anda perlu menumbuhkan volume logis Anda - ini dilakukan dalam Logical View grup dengan mengedit properti volume Anda.
  6. Simpan dan selesai. Tidak perlu memulai ulang VM.

Catatan! Setidaknya pada CentOS 6 LVM GUI tidak diinstal secara default, tetapi Anda dapat menginstalnya dengan yum install system-config-lvm.


1
2018-06-07 16:12