Re: booting from a CEPH rbd or CEPH filesystem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 28/01/14 13:37, Schlacta, Christ wrote:
> Has anyone done the work to boot a machine (physical or virtual) from a
> CEPH filesystem or RBD?

Booting a VM from RBD is doable in modern QEMU.

The QEMU process connects to RBD and presents it to the VM as a standard
block device, the VM doesn't know what implements its storage, and
doesn't care.  Whatever is presented as sda or vda, will be booted from.

This is a dump of an actual domain for a test VM, you'll notice only one
virtual disk, and that disk, is on Ceph.

> root@cn2:~# virsh dumpxml testceph
> <domain type='kvm' id='3'>
>   <name>testceph</name>
>   <uuid>9500e87f-822b-d54f-a4a3-39134a2c367d</uuid>
>   <memory unit='KiB'>4194304</memory>
>   <currentMemory unit='KiB'>4194304</currentMemory>
>   <vcpu placement='static'>1</vcpu>
>   <resource>
>     <partition>/machine</partition>
>   </resource>
>   <os>
>     <type arch='x86_64' machine='pc-1.1'>hvm</type>
>     <boot dev='hd'/>
>   </os>
>   <features>
>     <acpi/>
>     <apic/>
>     <pae/>
>   </features>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>restart</on_crash>
>   <devices>
>     <emulator>/usr/bin/kvm-spice</emulator>
>     <disk type='network' device='disk'>
>       <driver name='qemu' type='raw'/>
>       <auth username='libvirt'>
>         <secret type='ceph' uuid='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'/>
>       </auth>
>       <source protocol='rbd' name='libvirt-pool/testceph-vda'>
>         <host name='sn0.domain' port='6789'/>
>         <host name='sn1.domain' port='6789'/>
>         <host name='sn2.domain' port='6789'/>
>       </source>
>       <target dev='vda' bus='virtio'/>
>       <alias name='virtio-disk0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
>     </disk>
>     <controller type='virtio-serial' index='0'>
>       <alias name='virtio-serial0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
>     </controller>
>     <controller type='usb' index='0'>
>       <alias name='usb0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
>     </controller>
>     <controller type='pci' index='0' model='pci-root'>
>       <alias name='pci0'/>
>     </controller>
>     <interface type='bridge'>
>       <mac address='52:54:00:f8:77:95'/>
>       <source bridge='br0'/>
>       <target dev='vnet0'/>
>       <model type='virtio'/>
>       <alias name='net0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
>     </interface>
>     <serial type='pty'>
>       <source path='/dev/pts/0'/>
>       <target port='0'/>
>       <alias name='serial0'/>
>     </serial>
>     <console type='pty' tty='/dev/pts/0'>
>       <source path='/dev/pts/0'/>
>       <target type='serial' port='0'/>
>       <alias name='serial0'/>
>     </console>
>     <input type='mouse' bus='ps2'/>
>     <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
>       <listen type='address' address='127.0.0.1'/>
>     </graphics>
>     <sound model='ich6'>
>       <alias name='sound0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>     </sound>
>     <video>
>       <model type='cirrus' vram='9216' heads='1'/>
>       <alias name='video0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
>     </video>
>     <memballoon model='virtio'>
>       <alias name='balloon0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
>     </memballoon>
>   </devices>
>   <seclabel type='dynamic' model='apparmor' relabel='yes'>
>     <label>...</label>
>     <imagelabel>...</imagelabel>
>   </seclabel>
> </domain>

http://ceph.com/docs/master/rbd/libvirt/ covers the details pretty well.
 The only thing I'm missing with libvirt, is at present when you create
a storage pool in libvirt; virt-manager doesn't know how to browse or
work with 'rbd' storage pools.

So one must hand-configure these things.  Messy, but it works.  I'm not
sure I'm ready to go burrowing my head into the virt-manager code to
figure out what needs changing, especially if others are possibly doing
this already.

Regards,
-- 
Stuart Longland
Systems Engineer
     _ ___
\  /|_) |                           T: +61 7 3535 9619
 \/ | \ |     38b Douglas Street    F: +61 7 3535 9699
   SYSTEMS    Milton QLD 4064       http://www.vrt.com.au
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux