KVM ile sanallaştırdığınız makinelerinizin diskini makineyi açmadan düzenlemek isteyebilirsiniz. Bu senaryo örneğin sanallaştırma servislerinizi otomasyona bağlamak istediğiniz durumlarda veya yanlış düzenlemelerden dolayı sanal makinenizin açılmaması durumlarında sizi kurtaracaktır.
Not: Bu dokümanda yer alan uygulamalar Centos 6.4 64Bit üzerinde gerçekleştirilmiştir. Sanal makinelerin yönetimi Virt-Manager ve libvirt servisi ile gerçekleştirilmiştir.
Normal bir diski bağlama
Sanal makinelerinizin imajları varsayılan olarak /var/lib/libvirt/images yolu altında yer alır.
İmaj'ın yolu: /var/lib/libvirt/images/centos6.4-64bit-baseimg.img
Aşağıda anlatılan işlemlerin gerçekleştirilmesi için root haklarına ihtiyaç vardır.
İmajın loopback aygıtına bağlanması
İmaj dosyamızı öncelikle sisteme bir disk -blockdevice- olarak göstermemiz gerekli. Bu işlemi aşağıdaki komut ile gerçekleştirebiliriz.losetup /dev/loop0 /var/lib/libvirt/images/centos6.4-64bit-baseimg.img
Diskin bölümlendirmesinin haritalanması
Diskimiz birden fazla disk bölümünden -partition- oluşuyor olabilir. Bu durumda diskin partition-table'ının okunarak ona göre bölümlerin başlangıç ve bitiş noktalarını işaret edecek şekilde disk bölümlerini haritalamamız -mapping- gerekir.[root@host ~]# kpartx -av /dev/loop0 add map loop0p1 (253:0): 0 1024000 linear /dev/loop0 2048 add map loop0p2 (253:1): 0 82860032 linear /dev/loop0 1026048
Yukarıda komutun çıktısından da gördüğümüz gibi disk iki bölümden oluşuyor. Bu bölümler /dev/mapper altında loop0p1 ve loop0p2 şeklinde gözlemlenebilir.
Diskin bölümünün bağlanması
Bu işlemde tahmin edeceğiniz gibi mount komutu ile gerçekleştiriliyor.mount /dev/mapper/loop0p1 /mnt/part1
Diskin sistemden çözülmesi
Diski bağladık, gerekli değişiklikleri yaptık, şimdi sıra diski sistemden ayırmaya. Öncelikle mount ettiğimiz disk bölümünü sistemden ayırıyoruz.umount /dev/mapper/loop0p1
Sonra haritaladığımız disk bölümlerini çözüyoruz.
kpartx -dv /dev/loop0
Son olarak da loop0 aygıtına bağlamış olduğumuz diskimizi çözüyoruz ve bitiyor.
losetup -d /dev/loop0
Olaki benim gibi bir hata yapıp sanal makinenizin diskine lvm kurduysanız ne olacak? O zaman lvm'in kurulu olduğu disk bölümünü bağlamak istediğinizde bir hata ile karşılaşacaksınız.
LVM Bölümü Bağlama
LVM kurulu bir disk bölümünü ile çalışmak için yukarıda anlatıldığı gibi disk bölümlerini haritaladıktan sonra aşağıdaki işlemleri yapmanız gerekli.
VolumeGroup'ları bulma
vgscan
Bulunan VolumeGroup'ları listeleme
[root@host ~]# lvscan inactive '/dev/VolGroup/lv_root' [37.54 GiB] inherit inactive '/dev/VolGroup/lv_swap' [1.97 GiB] inherit
Çıktıdan da görüldüğü gibi yukarıda listelenmiş olan VolumeGroup'lar inactive durumdadır, yani devre dışıdır.
VolumeGroup'ları aktif etme
[root@host ~]# vgchange -ay VolGroup 2 logical volume(s) in volume group "VolGroup" now active
Artık VolumeGroup'umuz da aktif oldu ve LVM kurulu olan disk bölümümüzü de haritalamış olduk.
[root@host ~]# ll /dev/VolGroup/ total 0 lrwxrwxrwx 1 root root 7 Dec 28 18:16 lv_root -> ../dm-2 lrwxrwxrwx 1 root root 7 Dec 28 18:16 lv_swap -> ../dm-3
LVM bölümlerin bağlanması
LVM bölümlerimizi haritaladığımıza göre artık onları bağlayabiliriz, takibi yine mount komutu ile,mount /dev/VolGroup/lv_root /mnt
Diskin çözülmesi
[root@host ~]# umount /mnt [root@host ~]# vgchange -an VolGroup 0 logical volume(s) in volume group "VolGroup" now active [root@host ~]# kpartx -dv /dev/loop0 del devmap : loop0p2 del devmap : loop0p1 [root@host ~]# losetup -d /dev/loop0