KVM Kako povećati / smanjiti veličinu diska virtualnog stroja?

U ovom ćemo članku govoriti o promjeni veličine diskova KVM virtualnog stroja, razmotrite formate korištenih virtualnih diskova. Pokazat ćemo kako pravilno povećati disk virtualnog stroja u KVM hipervizoru na Linuxu bez gubitka podataka, a također ćemo razgovarati o opcijama za smanjenje veličine diska.

sadržaj:

  • Povećajte pogon KVM virtualnog stroja
  • Kako smanjiti veličinu virtualnog diska u KVM-u?

Povećajte pogon KVM virtualnog stroja

KVM proširenje virtualnog diska

Da bismo radili s diskom, virtualni stroj mora biti isključen, jer u protivnom nećemo moći ništa učiniti. Razmotrite primjer s povećanjem diska čija je veličina izvorno bila 20 GB.

Za pregled parametara diska virtualnog stroja KVM koristite naredbu:

qemu-img info / drive_path

Izlaz iz naredbe bit će ovako:

Vidimo da imamo dva polja koja označavaju veličinu, to su virtualna veličina i veličina diska:

  • virtual_size - veličina virtualnog diska navedena prilikom stvaranja ili proširivanja diska (u ovom primjeru maksimalna je veličina diska 20 GB);
  • disk_size - trenutna veličina datoteke na disku, tj. koliki je prostor na disku trenutno zauzet na fizičkom poslužitelju (odnosi se samo na format qcow). U našem primjeru virtualni disk zauzima samo 1,6 GB prostora za pohranu.

I odmah o formatima. Prilikom stvaranja virtualnih računala na KVM-u preporučam korištenje qcow2 diskovnog formata, a ne neobrađenog. Kasnije ću objasniti zašto.

Sljedeći je korak proširiti disk virtualnog stroja za 5Gb (za ispravno proširenje diska virtualni stroj ne bi trebao imati snimke!).
# qemu-img resize / drive path + 5G

Slika se mijenja.

Ako odmah provjerimo izlaz podataka o slici diska, vidjet ćemo da se proširila:

# qemu-img info / drive_path

slika: / drive_drive format datoteke staze: qcow2 virtualna veličina: 25G (26843545600 bytes) veličina diska: 1.6G cluster_size: 65536 Specifične informacije o formatu: compat: 0.10 refcount bits: 16 

Obavili smo dio posla, ali to zahtijeva i rad s virtualnog stroja u gostujućem OS-u. Zatim ćemo pokazati kako povećati veličinu diska u CentOS 7 gostu i Windows Server 2012..

Ako na KVM hipervizor planirate dodati dodatni virtualni disk za VM, koriste se qemu-img i virsh.

Proširenje particija u virtualnom stroju Linux CentOS

Nakon što proširite pogon s poslužiteljske strane, morate pokrenuti virtualni stroj i na njega se povezati putem ssh-a. Svi će se poslovi odvijati pomoću uslužnog programa za upravljanje particijama tvrdog diska. fdisk.

Nakon povezivanja s poslužiteljem, provjeravamo dostupnost dodatno priključenog mjesta:

df -h
fdisk -l

Snimak zaslona pokazuje da je odjeljak / dev / vda2 veličine 20 Gb, a mi imamo više dostupnog prostora na disku.

Popravimo ovaj trenutak i proširimo odjeljak / dev / vda2 na maksimalnu veličinu:

# fdisk / dev / vda

Dobrodošli u fdisk (util-linux 2.23.2). Promjene će ostati samo u sjećanju, sve dok ih ne odlučite napisati. Budite oprezni prije upotrebe naredbe za pisanje. Naredba (m za pomoć): d Broj particije (1,2, zadano 2): Particija 2 se briše Naredba (m za pomoć): n Vrsta particije: p primarna (1 primarna, 0 proširena, 3 slobodna) e proširena Odaberite (zadano p): p Broj particije (2-4, zadano 2): Prvi sektor (1050624-52428799, zadano 1050624): Korištenje zadane vrijednosti 1050624 Posljednji sektor, + sektori ili + veličina K, M, G (1050624-52428799, zadano 52428799): Korištenje zadane vrijednosti 52428799 Partition 2 tipa Linux i veličine 24,5 GiB postavljeno je Command (m za pomoć): w Tabela particije je izmijenjena! Pozivanje ioctl () za ponovno čitanje particijske tablice. UPOZORENJE: Ponovno čitanje particijske tablice nije uspjelo s pogreškom 16: Uređaj ili resurs su zauzeti. Kernel i dalje koristi staru tablicu. Nova tablica će se koristiti pri sljedećem ponovnom pokretanju ili nakon što pokrenete partprobe (8) ili kpartx (8) Sinkroniziranje diskova. 

Tada moramo ponovno pokrenuti virtualni stroj i izvršiti naredbu za primjenu proširenja diska:

# xfs_growfs / dev / vda2

meta-podaci = / dev / vda2 isize = 512 agcount = 4, agsize = 1277888 blks = sectsz = 512 attr = 2, projid32bit = 1 = crc = 1 finobt = 0 spinodes = 0 podataka = bsize = 4096 blokova = 5111552, imaxpct = 25 = sunit = 0 swidth = 0 blks imenovanja = verzija 2 bsize = 4096 ascii-ci = 0 ftype = 1 log = unutarnja veličina = 4096 blokova = 2560, verzija = 2 = sectsz = 512 sunit = 0 blks, lazy-count = 1 realtime = none extsz = 4096 blokova = 0, rtextents = 0 blokova podataka promijenjeno je iz 5111552 u 6422272 

# df -h

Upotrijebljena veličina datotečnog sustava% Naziv na montaži na devtmpfs 485M 0 485M 0% / dev tmpfs 496M 0 496M 0% / dev / shm tmpfs 496M 6,6M 489M 2% / run tmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% / / dev / vda1 488M 100M 353M 23% / boot tmpfs 100M 0 100M 0% / run / user / 0 

Kao rezultat toga, dobili smo produženu / dev / vda2 particiju. Eto, kako bismo točno napravili:

  • fdisk / dev / vda - pokrenuo je program fdisk povezivanjem na odjeljak / dev / vda
  • / d - izbrišemo odjeljak, po defaultu nam je potreban drugi odjeljak, pa u sljedećem stavku samo pritisnemo Enter
  • / n - stvorite novi odjeljak, u sljedećem stavku samo pritisnite Enter ili utipkajte p, Sljedeće unesite jer će stvoreni odjeljak biti zadan na 2.
  • Kada određujemo prvi i zadnji sektor, također samo pritisnemo Enter, ako želimo proširiti odjeljak do maksimuma, ako želite odrediti određenu veličinu, u zadnjem sektoru navedite veličinu diska kako je navedena u izborniku + veličina K, M, G Veličina ne može biti manje nego prije!
  • / w - primijenite naše postavke.

Nakon ponovnog pokretanja, provjerite disk sa naredbom:

xfs_growfs / dev / vda2

Neki izvori ukazuju na naredbu za dovršetak ovog postupka:

resize2fs / dev / vda2

Ali to ne radi s datotečnim sustavom xfs!

Rad na proširenju diska na virtualnom stroju CentOS 7 je završen.

Proširenje diska na gostujućem Windows poslužitelju

Povezujemo se s virtualnim strojem putem rdp-a ili VNC-a i radimo na proširenju diska.

  1. Otvorite Upravitelj poslužitelja -> Alati -> Upravljanje računalom;
  2. U prozoru koji se otvori odaberite u izborniku Upravljanje diskom, nakon čega biste trebali vidjeti sve svoje pogone i neraspoređeni prostor koji smo dodali iz KVM hipervizora;
  3. Odaberite željeni pogon i kliknite Prošireni volumen;
  4. Prema zadanim postavkama nudit će se sav raspoloživi prostor za povećanje veličine diska;
  5. Kliknite "sljedeći" i dovršite proširenje. Nakon ovog postupka vaš će se odjeljak u sustavu morati proširiti;

Želio bih dodati da prije postupka proširenja diska na virtualnom stroju savjetujem da napravite sigurnosnu kopiju samog diska. Zaustavite virtualni stroj i kopirajte sliku diska u mapu sigurnosne kopije ili u bilo koji direktorij koji ima slobodnog prostora. Ako tijekom rada nešto pođe po zlu, sliku virtualnog diska uvijek možete vratiti iz sigurnosnih kopija.

Kako smanjiti veličinu virtualnog diska u KVM-u?

U svom radu ranije sam često nailazio na ovaj problem, ali nažalost, ne možete sigurno smanjiti disk na virtualnom stroju u KVM-u! Jedina prihvatljiva veličina za smanjenje veličine diska KVM virtualnog stroja na fizičkoj pohrani jest komprimiranje putem pretvorbe.

Na Internetu postoji mnogo članaka, navodno zbog kojih možete smanjiti veličinu diska u virtualnom stroju, ali to ne radi.

Navest ću nekoliko primjera na koje sam naišao i koje sam osobno provjerio.

Smanjivanje KVM diska s uslugom qemu

Brojni resursi opisuju radnje izvedene pomoću uslužnog programa qemu. Predlažu smanjenje veličine diska virtualnog stroja pomoću naredbe:

qemu-img resize / drive_path -5G - smanjite disk za 5G

Ili ovu opciju s određenom veličinom:

qemu-img resize / 25G drive_path - naznačite veličinu diska u 25G

Što se događa nakon izvršenja ove naredbe? Pokrećemo poslužitelj i, naravno, sustav se ne podiže:

Pokušao sam najprije smanjiti particiju ispod sustava pomoću uslužnog programa fdisk, ali u ovom slučaju sustav se i prestaje učitavati, čak i ako preskočite korak smanjenja diska s fizičkog poslužitelja i to je logično. Odjeljak koji smanjujemo, sustav i, prema tome, OS, prestaju učitavati, jer kad se disk smanji, informacije su očito uništene.

Smanjivanje virtualnog diska zamjenom slike

Već nije tako uobičajena opcija u uputama - to je smanjenje diska, uz zamjenu starog. Odnosno, stvarate novi virtualni stroj s potrebnom veličinom diska. Nakon toga, staru sliku diska zamijenite novom slikom i sudeći po opisu članaka u različitim izvorima, ovo će uspjeti. I ja sam izvršio provjeru i pokvario je datotečni sustav, kao u prvoj verziji. Dat ću primjer naredbe:

virt-resize / old_drive_ image / new_drive_image

Također su date i mogućnosti, s pretvaranjem diska iz neobrađenog u qcow2 format, ali ja u početku kreiram strojeve u ovom formatu i objasnim zašto.

KVM formati diskova i kompresija diska u qcow2 formatu

Na samom početku članka spomenuo sam ta dva formata.

sirov - prevedeno "sirovo". Prednost formata, maksimalne performanse, svestranost formata. Nedostaci mase, glavni su:

  • Disk zauzima sav prostor na disku na fizičkom poslužitelju koji mu je dodijeljen;
  • Ne mogu se stvoriti snimke.

Qcow2 - Ovo je izvorni QEMU format hipervizora, kao i QEMU-KVM. Ovo je najpovoljniji format virtualnog diska od svih podržanih u KVM-u. Slika diska se povećava kako se podaci nakupljaju u virtualnom stroju, podržani su snimci.

Za što je dobar qcow2 format? U principu, ne trebate smanjivati ​​veličinu virtualnog diska, jer disk zauzima server, točno onoliko prostora tamo zauzima. Ako se vaši podaci na poslužitelju neprestano prepisuju i ponekad se dogodi da je disk "natečen", lako ga možete komprimirati. Razmislite o ovoj opciji. Poništit ću prostor na disku i izbrisati datoteku:

dd ako je / / dev / zero of = / mytempfile
rm -rf / mytempfile

Prilikom provjere s poslužitelja, slika diska prvo je težila 2,4G, a zatim se proširila na 5,9G:

# du -sh / image_path

2.4G *****

# du -sh / image_path

5.9G *****

To jest, nakon brisanja podataka u virtualnom stroju, disk se nije komprimirao. Da bi datoteka na disku dobila stvarnu veličinu, koristim sljedeću metodu:

Izrađujemo sigurnosnu kopiju datoteke diska, zaustavljamo virtualni stroj, a zatim napravimo sljedeće:

qemu-img pretvoriti -O qcow2 / old_image / new_image

Tada možete provjeriti veličine dva diska:

# du -sh / new_drive

1.6G / ****

# du -sh / old_disk

5.8G / ****

Kao što vidite, veličina komprimiranog diska je 1.6G. Preimenujte novu sliku diska u onu koja nam je potrebna i pokrenite virtualni stroj:

# df -h

Upotrijebljena veličina datotečnog sustava% Naziv na montaži na devtmpfs 485M 0 485M 0% / dev tmpfs 496M 0 496M 0% / dev / shm tmpfs 496M 6,6M 489M 2% / run tmpfs 496M 0 496M 0% / sys / fs / cgroup / dev / vda2 25G 1.3G 24G 6% / / dev / vda1 488M 100M 353M 23% / boot tmpfs 100M 0 100M 0% / run / user / 0 

Potvrda s poslužitelja:

# du -sh / slika na disku

1.6G / ****

Metoda djeluje. Za sve vrijeme njegove upotrebe datotečni sustav u virtualnom stroju nikada nije umro. Ali toplo preporučujem da prije takvog rada stvorite kopiju diska ako ne želite izgubiti podatke.

To je sve što sam želio reći u ovom članku. Ako jedan od posjetitelja stranice ima način smanjenja diska na KVM-u, naime smanjenje (ne kompresija) i radni, ponudite svoje mogućnosti i definitivno ću ih testirati.