QEMU는 게스트 OS와 호환이 되는 하드웨어 상에서 실행 될 때에도 많은 에뮬레이션을 진행하기 때문에 그 자체로 아주 빠르지 않다.

더 빠르게 하기 위해서, KVM 이라는 QEMU가 가진 커널 모듈을 사용해서 리눅스에서 x86이나 x86-64 프로세서 가상화 상에서 실행 중일 때 게스트 OS의 코드를 호스트 프로세서상에서 바로 실행한다.

예를 들어 호스트가 x86 리눅스이고 게스트가 윈도우 XP라면, KVM은 윈도우 XP 코드의 대부분을 에뮬레이션 없이 프로세서 상에서 바로 실행 할 수 있다.

QEMU-KVM은 리눅스나 BSD 유닉스 호스트, 가상화가 가능한 CPU를 필요로 한다. (Intel VT 또는 AMD-V).

CPU가 가상화 지원여부를 확인하는 방법은.

egrep '(vmx|svm)' /proc/cpuinfo

아무 것도 출력하는 것이 없다면 가상화를 지원하지 않는 CPU이다.



[root@bharata ~]# qemu-img create gluster://bharata:0/test/F17-new?transport=socket 5G 

[root@bharata ~]# qemu-system-x86_64 --enable-kvm -m 1024 -smp 4 -drive file=gluster://bharata


출처 : http://www.gluster.org/2012/09/using-qemu-to-boot-vm-image-on-glusterfs-volume/


CentOS 템플릿을 수정해야할 일이 생겼다.

qemu-img convert -f qcow2 볼륨파일 -O qcow2 템플릿파일

위와 같이 시도해봤으나 볼륨이 카피되는 것처럼 찝찝했다.

그래서 마운트해서 직접 파일시스템을 고쳐보기로...

하지만 LVM 에서 막혀버렸다... ㅠ


그리도 qcow2 는 qemu-nbd 라는 유틸리티를 이용해서 로드할 수 있는데, CentOS6 버전에서는 없다.


그래서 qcow2 를 raw로 변경해야 한다.

qemu-img convert -f qcow2 originImage.qcow2 -O raw image.raw


raw 로 바뀌었으면 이제 본격적으로 마운트를 시켜보자.

losetup /dev/loop0 image.raw

kpartx -a /dev/loop0

mkdir /mnt/image

mount /dev/mapper/loop0p2 /mnt/image

하지만.

"mount: unknown filesystem type 'LVM2_member'"

에러가 발생한다.

LVM이기 때문에 이렇게 마운트 할수가 없는 것이다.



[root@dev156 mnt]# lvmdiskscan

  /dev/ram0                [      16.00 MiB]

  /dev/loop0               [       8.00 GiB]

  /dev/root                [      50.00 GiB]

  /dev/ram1                [      16.00 MiB]

  /dev/vg_dev154/lv_swap   [       9.80 GiB]

  /dev/ram2                [      16.00 MiB]

  /dev/sda2                [     500.00 MiB]

  /dev/vg_dev154/lv_home   [     871.22 GiB]

  /dev/ram3                [      16.00 MiB]

  /dev/sda3                [     931.02 GiB] LVM physical volume

  /dev/vg_dev156/lv_swap   [       9.78 GiB]

  /dev/ram4                [      16.00 MiB]

  /dev/vg_dev156/lv_home   [     871.22 GiB]

  /dev/ram5                [      16.00 MiB]

  /dev/vg_dev156/lv_root   [      50.00 GiB]

  /dev/ram6                [      16.00 MiB]

  /dev/ram7                [      16.00 MiB]

  /dev/mapper/loop0p2      [       7.90 GiB] LVM physical volume

  /dev/ram8                [      16.00 MiB]

  /dev/VolGroup00/LogVol00 [       6.88 GiB]

  /dev/ram9                [      16.00 MiB]

  /dev/VolGroup00/LogVol01 [       1.00 GiB]

  /dev/ram10               [      16.00 MiB]

  /dev/ram11               [      16.00 MiB]

  /dev/ram12               [      16.00 MiB]

  /dev/ram13               [      16.00 MiB]

  /dev/ram14               [      16.00 MiB]

  /dev/ram15               [      16.00 MiB]

  /dev/sdb1                [     500.00 MiB]

  /dev/sdb2                [     931.02 GiB] LVM physical volume

  6 disks

  21 partitions

  0 LVM physical volume whole disks

  3 LVM physical volumes


LVM 볼륨이 보인다.

/dev/mapper/loop0p2      [       7.90 GiB] LVM physical volume


lvdisplay와 vgdisplay를 확인해서 LV, VG 이름을 확인한다.

[root@dev156 mnt]# vgdisplay

  --- Volume group ---

  VG Name               vg_dev154

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  6

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               3

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               931.02 GiB

  PE Size               4.00 MiB

  Total PE              238341

  Alloc PE / Size       238341 / 931.02 GiB

  Free  PE / Size       0 / 0

  VG UUID               Dully9-Bnix-hrHe-czD0-HfDK-pE60-wNLdmb


  --- Volume group ---

  VG Name               VolGroup00

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  3

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                2

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               7.88 GiB

  PE Size               32.00 MiB

  Total PE              252

  Alloc PE / Size       252 / 7.88 GiB

  Free  PE / Size       0 / 0

  VG UUID               984Syc-oChm-BdAX-TKcD-l95D-JkTY-1FdH6M


  --- Volume group ---

  VG Name               vg_dev156

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  4

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               931.00 GiB

  PE Size               32.00 MiB

  Total PE              29792

  Alloc PE / Size       29792 / 931.00 GiB

  Free  PE / Size       0 / 0

  VG UUID               zzp60Z-uCg8-2A6T-M6aU-LfBP-QXqx-U1SDpB


[root@dev156 mnt]# lvdisplay

  --- Logical volume ---

  LV Name                /dev/vg_dev154/lv_root

  VG Name                vg_dev154

  LV UUID                Qx338T-4L2V-mVsj-Idhd-MN0Y-zRM8-WXZBKK

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                50.00 GiB

  Current LE             12800

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:0


  --- Logical volume ---

  LV Name                /dev/vg_dev154/lv_home

  VG Name                vg_dev154

  LV UUID                Ht9ZKI-0tUv-aYCr-hEjO-ArBT-VOaW-J2vcRM

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                871.22 GiB

  Current LE             223033

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:2


  --- Logical volume ---

  LV Name                /dev/vg_dev154/lv_swap

  VG Name                vg_dev154

  LV UUID                3pLedP-5ctg-1BVo-gSwA-Tbyg-V1gy-X5CaFP

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                9.80 GiB

  Current LE             2508

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:1


  --- Logical volume ---

  LV Name                /dev/VolGroup00/LogVol00

  VG Name                VolGroup00

  LV UUID                8Yp1YF-dfjF-tg8n-JHNh-iYwL-PJqy-TRlOEz

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                6.88 GiB

  Current LE             220

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:8


  --- Logical volume ---

  LV Name                /dev/VolGroup00/LogVol01

  VG Name                VolGroup00

  LV UUID                Fd4zHI-S1sp-Xz20-KIuO-QaJJ-RQ1y-mbtIzW

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                1.00 GiB

  Current LE             32

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:9


  --- Logical volume ---

  LV Name                /dev/vg_dev156/lv_swap

  VG Name                vg_dev156

  LV UUID                d6c20U-pQYM-xGfe-yER1-uSgF-wUYx-5OrboZ

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                9.78 GiB

  Current LE             313

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:3


  --- Logical volume ---

  LV Name                /dev/vg_dev156/lv_home

  VG Name                vg_dev156

  LV UUID                V1jSbh-ZqZM-XOh7-PFCL-JqTN-jxuc-yoP6Sk

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                871.22 GiB

  Current LE             27879

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:4


  --- Logical volume ---

  LV Name                /dev/vg_dev156/lv_root

  VG Name                vg_dev156

  LV UUID                RpA6xx-qI6s-WhG6-ZEu8-DCiY-Uprz-C039Cz

  LV Write Access        read/write

  LV Status              available

  # open                 0

  LV Size                50.00 GiB

  Current LE             1600

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           253:5

[root@dev156 mnt]# vgdisplay

  --- Volume group ---

  VG Name               vg_dev154

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  6

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               3

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               931.02 GiB

  PE Size               4.00 MiB

  Total PE              238341

  Alloc PE / Size       238341 / 931.02 GiB

  Free  PE / Size       0 / 0

  VG UUID               Dully9-Bnix-hrHe-czD0-HfDK-pE60-wNLdmb


  --- Volume group ---

  VG Name               VolGroup00

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  3

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                2

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               7.88 GiB

  PE Size               32.00 MiB

  Total PE              252

  Alloc PE / Size       252 / 7.88 GiB

  Free  PE / Size       0 / 0

  VG UUID               984Syc-oChm-BdAX-TKcD-l95D-JkTY-1FdH6M


  --- Volume group ---

  VG Name               vg_dev156

  System ID

  Format                lvm2

  Metadata Areas        1

  Metadata Sequence No  4

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               0

  Max PV                0

  Cur PV                1

  Act PV                1

  VG Size               931.00 GiB

  PE Size               32.00 MiB

  Total PE              29792

  Alloc PE / Size       29792 / 931.00 GiB

  Free  PE / Size       0 / 0

  VG UUID               zzp60Z-uCg8-2A6T-M6aU-LfBP-QXqx-U1SDpB


mount /dev/VolGroup00/LogVol00 /mnt/image

"mount: special device /dev/VolGroup00/LogVol00 does not exist"

에러가 발생했다...


그래서.

[root@dev156 mnt]# lvscan

  ACTIVE            '/dev/vg_dev154/lv_root' [50.00 GiB] inherit

  ACTIVE            '/dev/vg_dev154/lv_home' [871.22 GiB] inherit

  ACTIVE            '/dev/vg_dev154/lv_swap' [9.80 GiB] inherit

  inactive            '/dev/VolGroup00/LogVol00' [6.88 GiB] inherit

  inactive            '/dev/VolGroup00/LogVol01' [1.00 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_swap' [9.78 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_home' [871.22 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_root' [50.00 GiB] inherit

상태가 inactive가 되어있다.


active로 바꿔줘야한다.

[root@dev156 mnt]# modprobe dm-mod

[root@dev156 mnt]# vgchange -ay

[root@dev156 mnt]# lvscan

  ACTIVE            '/dev/vg_dev154/lv_root' [50.00 GiB] inherit

  ACTIVE            '/dev/vg_dev154/lv_home' [871.22 GiB] inherit

  ACTIVE            '/dev/vg_dev154/lv_swap' [9.80 GiB] inherit

  ACTIVE            '/dev/VolGroup00/LogVol00' [6.88 GiB] inherit

  ACTIVE            '/dev/VolGroup00/LogVol01' [1.00 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_swap' [9.78 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_home' [871.22 GiB] inherit

  ACTIVE            '/dev/vg_dev156/lv_root' [50.00 GiB] inherit


다시

mount /dev/VolGroup00/LogVol00 /mount/image

이제 마운트가 된다.


수정 후

raw 를 qcow2 다시 변환해주어야한다.

qemu-img convert -f qcow2 image.raw -O raw modifiedImage.qcow2


해제

#lvremove /dev/VolGroup00/LogVol00

#lvremove /dev/VolGroup00/LogVol01

#kpartx -d /dev/loop0

#losetup -d /dev/loop0

참고

http://stackoverflow.com/questions/4966213/changing-password-of-a-virtual-machine

http://pissedoffadmins.com/?p=481


뭔가 있어보이게 그림을 만들고 싶다면 Visio를 사용한다.

책을 쓸때도 그렇고 PPT를 만들때도 아키텍쳐 그림을 그릴 때는 Visio가 좋은 것 같다.

스텐실을 찾다가 괜찮은 사이트를 발견~ 북마크해둬야지 ㅎ

http://www.visiocafe.com/vsdfx.htm

HD 지원하는 화면 녹화(스크린 레코딩) 웹 서비스

크롬으로 실행이 가능하며 자바를 설치하면 실행이된다.

Screencast-o-Matic

녹화한 내용을 유튜브로 바로 보낼 수 있다. 돈을 내면 로고를 지워준다. ㅎ

다운로드 받으려면 1년에 15$ 비용이 든다.


개인적인 생각으로는 1년에 15$ 치고 퀄리티가 상당히 좋은듯 ^^

그 동안 Beta 였던 3.3 버전이 드디어 정식버전으로 릴리즈 되었다.

아래는 3.3 버전에서의 새로워 진 점이다.

Hadoop , Openstack의 Swift와 연동과 replicated+striped 볼륨 타입을 지원하는게 눈에 띈다.


New features

    • Unified File & Object access.
    • Hadoop hooks - HDFS compatibility layer

New Volume Type

    • Repstr - replicated + striped (+ distributed) volumes

Enhancements to Distributed volumes (DHT translator)

    • Rebalance can migrate open files
    • Remove-brick can migrate data to remaining bricks

Enhancements to Replicated volumes (AFR translator)

    • Ability to change replica count on an active volume (possibly including ability to add replication to distribute-only volumes)
    • Granular locking - useful for running VM images needing to be healed. Glusterfs will not have to lock & freeze the whole VM disk image, only the parts that need healing.
    • Proactive self-heal - when a brick comes back online the gluster daemon should begin the self-heal process without waiting for the files to be accessed.
    • Round-trip reduction - should improve performance especially for smaller files.
    • Quorum enforcement - should help resolve or avoid split brain scenarios



본딩에 관한 글!


http://sangchul.kr/4695354

kvm 모듈은 일반적인 것이고,

kvm_intel 혹은 kvm_amd 와 같이 지정을 해주어야 한다.

그래서,

# modprobe kvm

# modprobe kvm_intel

과 같이 명시해서 등록해주어야 한다.


만약, 등록시 에러가 난다면,

자신의 cpu가 가상화를 지원하고 있는지 확인하고, 만약 지원한다면 bios에서 vt 지원을 enabled로 하였는지 확인하도록 하자.


모듈이 잘 되었다면, /dev/kvm 처럼 잘 올라와있을것이다.



GlusterFS의 Native Client(FUSE) 로 스토리지를 구성하여 VM을 생성하려 했으나,

아래처럼 Libvirt에서 실패...

Libvirt 로그

qemu: could not open disk image /mnt/gluster/test-vol2: Invalid argument


이유는, FUSE 모듈이 마운트된 FUSE기반 파일시스템상의 디스크 이미지를 열기 위한 O_DIRECT system call을 지원하지 않기 때문이다.

Gluster에서 fuse 모듈을 다운받고 compile / install을 하면 된다.

http://download.gluster.com/pub/gluster/glusterfs/LATEST/CentOS/

qemu-kvm은 raw 디스크 이미지를 열기 위해 O_SYNC (cache=writethough)을 사용할 것이다.  qcow2 이미지는 O_DIRECT (cache=none)을 사용한다.

http://thr3ads.net/gluster-users/2010/09/477455-Failed-on-booting-qcow2-image-files-on-glusterfs



libvirt disk option "cache=none" prevents VM from booting on GlusterFS/FUSE

"cache=none" 을 제거하라.

https://bugs.launchpad.net/nova/+bug/959637




계정알아보기

# fuser -cu /mnt/temp


해당 계정 종료

# fuser -ck /mnt/temp


Unmount

# umount /mnt/temp

+ Recent posts