Başlangıçta 6GB disk alanı olan bir CentOS KVM sunucusuna Ubuntu konuğu kurarım. Ubuntu konuğunun disk alanını komut satırından nasıl yükseltebilirim?
EDIT # 1: Bir disk imaj dosyası kullanıyorum (qemu).
Başlangıçta 6GB disk alanı olan bir CentOS KVM sunucusuna Ubuntu konuğu kurarım. Ubuntu konuğunun disk alanını komut satırından nasıl yükseltebilirim?
EDIT # 1: Bir disk imaj dosyası kullanıyorum (qemu).
Yanıtlar:
qemu-img resize vmdisk.img +10G
10Gb tarafından görüntü boyutunu artırmak içinstart the VM, resize the partitions and LVM structure within it normally
Nasıl yapılır? Lütfen açıkla.
Daha iyi veya daha kötüsü için, hedef sanal disk takılı olsa bile aşağıdaki komutlar çalışacaktır. Bu, diskin çıkartılamadığı (kök bölüm gibi), VM'nin açık kalması gereken ve sistem sahibinin veri bozulma riskini üstlenmeye istekli olduğu ortamlarda faydalı olabilir . Bu riski kaldırmak için, VM'de oturum açmanız ve ilk önce hedef diski çıkarmanız gerekir, bu her zaman mümkün olmayan bir şeydir.
KVM hipervizöründen aşağıdakileri yapın.
Disk imaj dosyasının boyutunu arttırın (arttırılacak miktarı belirtin):
qemu-img resize <my_vm>.img +10G
Virtio cihazının adını, libvirt kabuğu aracılığıyla alın ( drive-virtio-disk0
bu örnekte):
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]
Yeni boyutu algılamak için virtio sürücüsüne sinyal verin (toplam yeni kapasiteyi belirtin):
virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
Ardından VM'ye giriş yapın. Çalışan dmesg
, virtio diskin bir kapasite değişikliği tespit ettiğini bildirmelidir. Bu noktada, devam edin ve bölümlerinizi ve LVM yapınızı gerektiği gibi yeniden boyutlandırın.
Bu sunucu hatası soruları benzer ancak daha spesifik, KVM çevrimiçi disk yeniden boyutlandırıldı mı? & Centos Xen, DomU bölümünü ve cilt grubunu yeniden boyutlandırıyor . Birincisi, çevrimiçi iken KVM konuğunu nasıl artıracağı sorusunu sorurken, ikincisi LVM kullanan XEN'e özeldir. KVM çevrimdışı iken bunu nasıl başaracağımı soruyorum.
NOT: Bu bağlantı METHOD # 1 için kullanışlıdır ve KVM'nin disk alanını arttırmayı (ext3 tabanlı), NASIL: Bir KVM Sanal Makine Görüntüsünü Yeniden Boyutlandırmayı gösterir .
KVM misafirlerinin dikkat etmesi gereken bir şey, içinde kullandıkları bölümlerin disk alanlarını artırmak için hangi yöntemi kullanabileceğini etkilemesidir.
YÖNTEM # 1: Bölmeler ext2 / ext3 / ext4 tabanlı
Bu yöntemin somunları aşağıdaki gibidir:
# 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
Şimdi daha büyük mykvm.img dosyası elinizde olduğunda, gparted'i önyükleyin ve mevcut bölümü yeni eklenen disk alanına genişletin. Bu son adım, işletim sistemi bölümünü temel olarak genişleterek ekstra alandan faydalanmasını sağlar.
YÖNTEM # 2: Bölmeler LVM tabanlıdır
LVM'yi dahili olarak kullanan bir KVM konuğunu yeniden boyutlandırmak için kabaca uyguladığım adımlar.
VM içinde fdisk'i çalıştırın ve LVM bölümünü silin ve yeniden oluşturun
% 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.
%
Sanal Makineyi Yeniden Başlatın
LVM fiziksel hacmini yeniden boyutlandırma
% 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
...
LVM Mantıksal Birimini Yeniden Boyutlandırma
% lvresize /dev/VolGroup00/LogVol00 -l +640
Extending logical volume LogVol00 to 43.88 GB
Logical volume LogVol00 successfully resized
Dosya sistemini büyütün
% 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.
Yukarıdaki benim örneğim ama bu web sitesindeki adımları takip ettim.
virt-manager
KVM sunucularımızı daha yeni bir KVM sürümüne (CentOS 5 -> CentOS 6) geçirmeden önce # 1 & # 2 yöntemini kullandım ve kullandım. Şimdi ben de qemu-img resize
yöntemi kullanıyorum .
lvextend /dev/Volgroup/lvname /dev/vda2
(hepsi bir satırda, / dev / vda2 fiziksel hacminiz olur). Başka bir seçenek olmadan, o cilt grubundaki maksimum boyutu kullanır.
İç Bölümleri Tek Adımda Yeniden Boyutlandırın ve Genişletin
Bir qcow2 konuk dosya görüntüsüne sahip bir Ubuntu sunucum vardı ve diski yeniden boyutlandırmak ve uygun bölümleri tek bir adımda genişletmek istedim. Libvirt konuk dosya sistemi yardımcı programlarını ayarlamanızı gerektirir, ancak bunlar yine de bu konuda faydalıdır.
Buradan ilham almak: http://libguestfs.org/virt-resize.1.html
Buradaki anahtar komut: virt-resize
Hazırlık:
* 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
Şimdi aşağıdakileri yapın:
1) konuğu kapat:
2) Mevcut boyutlandırmaya göz atın ve libvirt yardımcı programını kullanarak genişletmek istediğiniz bölüm adını görüntüleyin:
sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file
3) Yeni (40G) çıkış diskini oluşturun:
qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img: sudo truncate -s 40G outdisk
4) Uygun bölümü genişletirken eskisini yeniye kopyalayın (2. adımdaki disk bölümünüzün / dev / sda1 olduğunu varsayarak):
sudo virt-resize --expand /dev/sda1 indisk outdisk
5) Indisk dosyasını yedek olarak yeniden adlandırın, outdisk'i indisk olarak yeniden adlandırın (veya konuk XML'ini değiştirin)
6) Orjinal dosyayı silmeden önce konuğu yeniden başlatın ve yeni disk dosyasını dikkatlice test edin
7) Kar!
-o preallocation=metadata
, seyrek bir dosya oluşturur. Bu seçenekle tüm büyüklüğü önceden tahsis eder.
-o preallocation=metadata
zorunda olmadığınızı ve yapmazsanız truncate
adımı atlamalısınız . virt-resize
Yine de dosyayı uygun şekilde büyütecektir.
VM'de LVM kullanıyorsanız, bu işlemi yapmanın en basit yolu, VM'ye yeni bir sanal disk eklemek ve bunun üzerine birim grubunu ve mantıksal birimleri genişletmektir.
LVM çalıştırması kullanıp kullanmadığınızı kontrol etmek sudo pvs; sudo vgs; sudo lvs
için şöyle bir şey alırsınız:
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
VM’nin işletim sistemi LVM kullanıyorsa. Yukarıdaki örnekte, VM, biri takas için diğeri her biri için olmak üzere iki mantıksal birim içeren vgWWW adlı bir birim grubuyla LVM kullanılarak yapılandırılmış bir 30Gbayt vdisk'e sahiptir.
LV'de VM kullanılıyorsa:
sudo pvcreate /dev/vdb
sudo vgextend vgWWW /dev/vdb
sudo lvextend --extents +100%FREE /dev/vgWWW/root
(veya sudo lvextend --size +8G /dev/vgWWW/root
tamamen büyütmek istemiyorsanız buna benzer bir şey , bu örnek birime 8 Gb ekler)resize2fs /dev/vgWWW/root
Not: Yukarıdakiler, vg / lv adlarının benim örneğimle aynı olduğunu varsayar, uygun olmayan şekilde değiştiririm, VM de zaten vdb
yeni bir adında sanal bir sürücüye sahipse, başka bir şey olur ( vdc
vb.)
Not: resize2fs
sadece ext2, ext3 ve ext4 dosya sistemlerinde çalışacaktır. Başka bir şey kullanıyorsanız hata yapar ve hiçbir şey yapmaz.
Not: Canlı bir dosya sistemini yeniden boyutlandırdığınız için önce resize2fs
sizden fsck
önce kaldırılmış bir dosya sisteminde olduğu gibi çalıştırmanızı istemeyecektir , sadece devam edecektir. Devam etmeden önce herhangi bir sorun olup olmadığını salt okunur bir dosya sistemi denetimi yapmak isteyebilirsiniz.
Online yeniden boyutlandırma yapmak mümkündür. libvirtd bunu yerel olarak destekler:
Blok cihaz adını bulun. "Vda" gibi bir şey olmalı
$ virsh domblklist <libvirtd_vm_name>
Sanal aygıtı yeniden boyutlandırın:
$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>
İşte genişletmek vardı bir örnektir vda
gelen diski 50GB
için 51GB
için undercloud
VM.
[root@gss-rhos-4 ~]# virsh domblklist undercloud
Target Source
------------------------------------------------
vda /home/images/undercloud.qcow2
Şimdi .qcow2 görüntü dosyasının ayrıntılarına bir göz atın:
[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
Şimdi vda blok cihazını yeniden boyutlandıralım:
[root@gss-rhos-4 ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized
Ve onayla:
[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 ~]#
Ardından, blok aygıtlarını ve fs'yi yeniden boyutlandırma komutlarını göstermek için VM'de bu betiği kullanabilirsiniz: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh .
Virtio sürücü ve LVM kullanıyorsanız, VM'yi yeniden başlatmadan VM'nizin diskinin boyutunu artırma olasılığı vardır.
(İsteğe bağlı) / dev / vdb1'i almak için fdisk ile bir birincil bölüm oluşturun, ardından bölüm tablosunu yeniden okumak için kpartx -a / dev / vdb komutunu kullanın.
Vgextend vg_name / dev / vdb1 kullanın (veya bir bölüm oluşturmadıysanız / dev / vdb)
Sen bittin.
Bu şekilde istediğiniz bölümü genişletebilirsiniz:
# 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
Burada daha fazla örneğe bakın .
Bunu yapmanın başka bir yolu
truncate -s +2G vm1.img
Bir diske yeniden tarama yapmak ve sonra lvm resize yapabilirsiniz.
Sanal Makinenizde LVM varsa, bu çılgınca kolay ve hızlıdır.
sudo system-config-lvm
terminalde yazın) *.GUI'yi sezgisel buldum, ancak sorun yaşarsanız sonraki adımları izleyin.
Not! En azından CentOS 6 LVM GUI'de varsayılan olarak yüklü değildir, ancak onu yükleyebilirsiniz yum install system-config-lvm
.
Görüntüyü yeniden boyutlandırmak:
qemu-img resize vmdisk.img +16G
görüntü boyutunu 16 GB artırır.
Görüntünüzde GPT (GUID Partition Table) varsa, GPT'de kullanılan sürücü boyutu yeni boyuttan farklı olacaktır, düzeltmeniz gerekir gdisk
:
MY_DRIVE=/dev/vda
gdisk $MY_DRIVE <<EOF
w
Y
Y
EOF
veya parted
:
parted $MY_DRIVE print Fix
Bazı nedenlerden dolayı parted
, hiçbir tty sunulmadığında (örneğin Vagrant ile provizyon yaparken) düzeltme çalışmadığı için kullanıyorum gdisk
.
Tüm kullanılabilir alanları doldurmak için bölüm boyutunu artırın:
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
x a 2 <Enter>
Eski BIOS kullanıyorsanız, bu parça isteğe bağlıdır ve gereklidir.
MY_PARTITION_GUID=...
ve c $MY_PARTITION_GUID
parçalar da isteğe bağlı ve içinde bölüm UUID kullanırsanız sadece gerekli olan /etc/fstab
başka bir yere veya.
Yeniden başlatın veya bölümleri tekrar okudum partx -u $MY_DRIVE
ya partprobe
.
İçin bölüm, örnek uzatın ext2
, ext3
ya ext4
:
MY_PARTITION="${MY_DRIVE}1"
resize2fs $MY_PARTITION
Gparted mount ile solus vm'yi kullanabilirsiniz. GParted ile birlikte kullanıldığında, sistemi kolayca önyükleyebilir ve alanı ayarlayabilirsiniz. Doğru önyükleme önceliğinin ayarlandığından emin olun. Referans olarak, lütfen kullanışlı olabilecek aşağıdaki URL'ye bakın. https://greencloudvps.com/knowledgebase/11/How-to-Extend-the-Hard-drive-on-KVM-after-upgrading-VPS.html