virtio-scsi implementation details, documentation & other references..

virtio-scsi going to be really a cool implementation on virtio stream. Indeed virtio-blk was arranging that position. How-ever virtio-blk lagged/skipped lots of scsi command ioctls which paved the way to virtio-scsi. Along with virtio-scsi implementation, other downsides of virtio-blk have been lifted, for ex: the number of disk limitation..etc.. To know more about virtio-scsi, I …

Read more

“error: internal error Process exited while reading console log output: Supported machines are:” …

Today one of my friend came into this error and I was called up to find a solution.. [root@host]# virsh create /etc/libvirt/qemu/rhel5.4-x86_64-kvm.xml error: Failed to create domain from /etc/libvirt/qemu/rhel5.4-x86_64-kvm.xml error: internal error Process exited while reading console log output: Supported machines are: pc         Standard PC (alias of pc-0.14) pc-0.14    Standard PC (default) fedora-13  Standard PC …

Read more

interpret-indirect-addressing-mode-example-in-assembly

Today one of my friend asked me to interpret below assembly instruction for him, so this post 🙂 The instruction  have below format, It is one of indirect addressing modes, so this should be read in such a way that, What that basically means is that IR * Width + offset

Whats new in RHEL 6.3 KVM ?

RHEL 6.3 KVM is out with lots of new/coool  features  ( virtio-scsi, s3/s4 support, PMU , guest agent, vcpu hot plug, per-kvm..etc 🙂 ..  Brief idea on each is listed here .. KVM scalability enhancements KVM scalability enhancements in Red Hat Enterprise Linux 6.3 include: The maximum supported virtual guest size increased from 64 to …

Read more

Ovirt Videos ( ovirt architecture, gui , hypervisor/node) ..etc

Hey my friends, Videos are always better place to learn about a technology 🙂  ..  You can watch “ovirt” videos from below urls.. I am sure it will help you to achieve good understanding on ovirt-{engine, node, architecture..etc} 1) OVIRT ARCHITECTURE ( Overview ) ovirt introduction   virtualization in an ovirt way   2) OVIRT …

Read more

Get BIOS and SYSTEM information on hypervisor system using ‘virsh’ commands..

Hmm.. Recently I noticed “virsh sysinfo” command which can show you “bios” and “system” information of hypervisor system as shown below..

 

[root@humbles-lap /]# virsh sysinfo
<sysinfo type=’smbios’>
<bios>
American Megatrends Inc.
<entry name=’version’>R0300Y8</entry>
<entry name=’date’>07/20/2010</entry>
<entry name=’release’>3.0</entry>
</bios>
<system>
<entry name=’manufacturer’>Sony Corporation</entry>
<entry name=’product’>VPCEA16FG</entry>
<entry name=’version’>C605PM4E</entry>
<entry name=’serial’>27506073-7003630</entry>
<entry name=’uuid’>C1465820-D74B-11DD-8400-54424964B92E</entry>
<entry name=’sku’>N/A</entry>
<entry name=’family’>VAIO</entry>
</system>
</sysinfo>

[root@humbles-lap /]#

Configure openvswitch in virtualization environment and use it for simple and complex (ex: vlan) testing in centos/rhel/fedora..etc

Open vSwitch (OVS) is a software switch. It consist of user space tools provided by openvswitch rpm and kernel modules provided by kmod-openvswitch rpm. Unlike the bridge available in old versions of distros ( fedora, rhel..etc ) it provides many advanced configuration options like tagged vlan. Full details available at http://www.openvswitch.org/

Open vSwitch is a network switch; at its lowest level, it is concerned with routing packets between interfaces. It is aimed at virtualization users, so, naturally, it is used in the creation of virtual networks. A switch can be set up with a number of virtual network interfaces, most of which are used by virtual machines to communicate with each other and the wider world. These virtual networks can be connected across hosts and across physical networks. One of the key features of Open vSwitch appears to be the ability to easily migrate virtual machines between physical hosts and have their network configuration (addresses, firewall rules, open connections, etc.) seamlessly follow.

Below Process will outline the steps required in CentOS/RHEL..etc

STARTING THE SERVICE

modprobe -r bridge (OVS kernel modules conflict with the “bridge” module)

modprobe openvswitch_mod

modprobe brcompat_mod (OVS bridge compatibility support module. Without this lbvirt cannot use OVS)

Once kernel module part is loaded, lets try to start the subjected service as shown below:

/etc/init.d/openvswitch start

/etc/openvswitch/conf.db does not exist … (warning).
Creating empty database /etc/openvswitch/conf.db           [  OK  ]
Starting ovsdb-server                                      [  OK  ]
Configuring Open vSwitch system IDs                        [  OK  ]
Starting ovs-vswitchd                                      [  OK  ]

So, ovs-vswitchd service is started successfully..

Below command needs ‘brcompat_mod’ and will enable libvirt to use brctl to manage OVS.

ovs-brcompatd –pidfile –detach

Below are the steps which I followed to configure vlan ..

HOW TO CREATE TAGGED VLANS

On the HOST

ovs-vsctl add-br br0

ovs-vsctl add-port br0 vlan10 tag=10 — set interface vlan10 type=internal [creating a taged vlan 10]

ifconfig vlan10 192.168.10.254 netmask 255.255.255.0

ovs-vsctl add-port br0 vlan20 tag=20 — set interface vlan20 type=internal [creating a tagged vlan 20]

ifconfig vlan20 192.168.20.254 netmask 255.255.255.0

ovs-vsctl show

Now, lets list the bridge configuration in the system via ‘brctl’ command..

brctl show

If something goes wrong  (easiest way ) stop openvswitch service, delete /etc/openvswitch/conf.db and start the service again. Do the configuration again.

To test: Execute below steps in VM1

vconfig add eth0 10 [add vlan interface]

ifconfig eth0.10 192.168.10.100 netmask 255.255.255.0 broadcast 192.168.10.255 up [assign IP]

vconfig add eth0 20

ifconfig eth0.20 192.168.20.100 netmask 255.255.255.0 broadcast 192.168.20.255 up

VM2

vconfig add eth0 10 [add vlan interface]

ifconfig eth0.10 192.168.10.101 netmask 255.255.255.0 broadcast 192.168.10.255 up [assign IP]

vconfig add eth0 20

ifconfig eth0.20 192.168.20.101 netmask 255.255.255.0 broadcast 192.168.20.255 up

Now try pinging  VM1 to VM2

***************************************************************************************************************
Below Process will outline Fedora 17, 18, 19 Versions:

Unlike centos/rhel , the openvswitch support is added in libvirt. So, you dont need ‘brcompat_mod’ mentioned in first/above section to use it with libvirt.

Install these packages

[root@Xman 3.9.9-301.fc19.x86_64]# rpm -qa |grep openvswitch
openvswitch-controller-1.10.0-1.fc19.x86_64
openvswitch-1.10.0-1.fc19.x86_64
openvswitch-test-1.10.0-1.fc19.noarch
python-openvswitch-1.10.0-1.fc19.noarch
[root@Xman 3.9.9-301.fc19.x86_64]#

Load openvswitch module and enable the service.

[root@Xman 3.9.9-301.fc19.x86_64]# modprobe openvswitch
[root@Xman 3.9.9-301.fc19.x86_64]# lsmod |grep openvswitch
openvswitch 43393 0

[root@Xman 3.9.9-301.fc19.x86_64]# systemctl enable openvswitch
ln -s ‘/usr/lib/systemd/system/openvswitch.service’ ‘/etc/systemd/system/multi-user.target.wants/openvswitch.service’

[root@Xman 3.9.9-301.fc19.x86_64]# systemctl start openvswitch
[root@Xman 3.9.9-301.fc19.x86_64]# systemctl status openvswitch
openvswitch.service – Open vSwitch
Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; enabled)
Active: active (exited) since Fri 2013-08-02 08:26:25 EDT; 5s ago
Process: 31565 ExecStart=/usr/share/openvswitch/scripts/openvswitch.init start (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/openvswitch.service
├─31590 ovsdb-server: monitoring pid 31591 (healthy)
├─31591 ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info –remote=punix:/var/run/openvswitch/db.sock –private-key=db:Open_vSwitch,SSL,private_key …
├─31599 ovs-vswitchd: monitoring pid 31600 (healthy)
├─31600 ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info –mlockall –no-chdir –log-file=/var/log/openvswitch/ovs-vswitchd.log –pidfile=…
└─31601 ovs-vswitchd: worker process for pid 31600

Aug 02 08:26:25 Xman openvswitch.init[31565]: /etc/openvswitch/conf.db does not exist … (warning).
Aug 02 08:26:25 Xman openvswitch.init[31565]: Creating empty database /etc/openvswitch/conf.db [ OK ]
Aug 02 08:26:25 Xman openvswitch.init[31565]: Starting ovsdb-server [ OK ]
Aug 02 08:26:25 Xman ovs-vsctl[31592]: 00001|vsctl|INFO|Called as ovs-vsctl –no-wait — init — set Open_vSwitch . db-version=6.12.0
Aug 02 08:26:25 Xman ovs-vsctl[31597]: 00001|vsctl|INFO|Called as ovs-vsctl –no-wait set Open_vSwitch . ovs-version=1.10.0 “external-ids:system-id…unknown\””
Aug 02 08:26:25 Xman openvswitch.init[31565]: Configuring Open vSwitch system IDs [ OK ]
Aug 02 08:26:25 Xman openvswitch.init[31565]: Starting ovs-vswitchd [ OK ]
Aug 02 08:26:25 Xman openvswitch.init[31565]: Enabling remote OVSDB managers [ OK ]
Aug 02 08:26:25 Xman openvswitch.init[31565]: Enabling gre with iptables [ OK ]
Aug 02 08:26:25 Xman systemd[1]: Started Open vSwitch.
[root@Xman 3.9.9-301.fc19.x86_64]#

[root@Xman 3.9.9-301.fc19.x86_64]# ps aux |grep openv
root 31591 0.0 0.0 43592 1996 ? S< 08:26 0:00 ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir --log-file=/var/log/openvswitch/ovsdb-server.log --pidfile=/var/run/openvswitch/ovsdb-server.pid --detach --monitor root 31600 0.0 0.1 43880 9028 ? S mtu 1500
inet 192.168.10.254 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::e062:e7ff:fe73:5a0 prefixlen 64 scopeid 0x20 ether e2:62:e7:73:05:a0 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 468 (468.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vlan20: flags=67 mtu 1500
inet 192.168.20.254 netmask 255.255.255.0 broadcast 192.168.20.255
inet6 fe80::8b3:e6ff:fe5a:a2e3 prefixlen 64 scopeid 0x20 ether 0a:b3:e6:5a:a2:e3 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 468 (468.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@Xman 3.9.9-301.fc19.x86_64]#

Now, before starting a guest please edit the guest configuration as shown below:


–> It should be filled with the mac–> This should be the ‘bridge’ you configured for ovs
–> This add ovs support from libvirt layer

Once you started the guest please follow the same process mentioned ( configuration of vlan networks in guest) in section 1 ( inside Centos/RHEL..etc)

You should be good to go.

Reference:

http://openvswitch.org/support/

http://lwn.net/Articles/469775/

openvswitch faq..

How to get BIOS, Motherboard, Processor..etc informaion in a linux system ?

Specifically for BIOS information below commands can be used

#biosdecode

[root@humbles-lap Desktop]# biosdecode
# biosdecode 2.11
ACPI 2.0 present.
OEM Identifier: Sony
RSD Table 32-bit Address: 0xDEF1CF18
XSD Table 64-bit Address: 0x00000000DEF1CE18
SMBIOS 2.6 present.
Structure Table Length: 731 bytes
Structure Table Address: 0x000EBCA0
Number Of Structures: 17
Maximum Structure Size: 113 bytes
PNP BIOS 1.0 present.
Event Notification: Not Supported
Real Mode 16-bit Code Address: F000:BA66
Real Mode 16-bit Data Address: F000:0000
16-bit Protected Mode Code Address: 0x000FBA8E
16-bit Protected Mode Data Address: 0x000F0000
PCI Interrupt Routing 1.0 present.
Router ID: 00:1f.0
Exclusive IRQs: None
Compatible Router: 8086:2912
Slot Entry 1: ID 00:1f, on-board
Slot Entry 2: ID 00:1d, on-board
Slot Entry 3: ID 00:1a, on-board
Slot Entry 4: ID 00:1b, on-board
Slot Entry 5: ID 00:1c, on-board
Slot Entry 6: ID 02:00, slot number 33
Slot Entry 7: ID 00:16, on-board
Slot Entry 8: ID 03:00, slot number 255
Slot Entry 9: ID 00:02, on-board
Slot Entry 10: ID 04:00, slot number 8
Slot Entry 11: ID 05:00, slot number 16
Slot Entry 12: ID 00:01, on-board
Slot Entry 13: ID 01:00, slot number 16
Slot Entry 14: ID 00:03, on-board
[root@humbles-lap Desktop]#

Then comes “dmidecode” with specific options.. The interesting switch of “dmidecode” is “-t” here.. You can use the same option with specifying a “TYPE” value with it..

Below are the different “TYPES” which can be used with “-t” option..

Type   Information
────────────────────────────────────────
0   BIOS
1   System
2   Base Board
3   Chassis
4   Processor
5   Memory Controller
6   Memory Module
7   Cache
8   Port Connector
9   System Slots
10   On Board Devices
11   OEM Strings
12   System Configuration Options
13   BIOS Language
14   Group Associations
15   System Event Log

********** Truncated.. Refer #man dmidecode for more information..

For ex: To get Processor information..

[root@humbles-lap Desktop]# dmidecode -t 4
# dmidecode 2.11
SMBIOS 2.6 present.

Handle 0x0004, DMI type 4, 35 bytes
Processor Information
Socket Designation: N/A
Type: Central Processor
Family: Core i5
Manufacturer: GenuineIntel
ID: 52 06 02 00 FF FB EB BF
Signature: Type 0, Family 6, Model 37, Stepping 2
Flags:
FPU (Floating-point unit on-chip)
VME (Virtual mode extension)
DE (Debugging extension)
PSE (Page size extension)
TSC (Time stamp counter)
MSR (Model specific registers)
PAE (Physical address extension)
MCE (Machine check exception)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
SEP (Fast system call)
MTRR (Memory type range registers)
PGE (Page global enable)
MCA (Machine check architecture)

***********

Thats it…

Getting host/hypervisor system configuration/capabilities using ‘virsh’ commands..

There are couple of ‘virsh’ commands which can be used to get some basic information about the hypervisor which are in use/connected..

I will directly show the command output to get that information..

 

[root@humbles-lap ~]#virsh nodeinfo
CPU model: x86_64
CPU(s): 4
CPU frequency: 1599 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 3909832 kB

[root@humbles-lap ~]#virsh capabilities



205846c1-4bd7-dd11-8400-54424964b92e

x86_64
Nehalem
Intel















tcp















selinux
0


hvm

32
/usr/bin/qemu
pc-0.13
pc
fedora-13
pc-0.12
pc-0.11
pc-0.10
isapc





/usr/bin/qemu-kvm
pc-0.13
pc
fedora-13
pc-0.12
pc-0.11
pc-0.10
isapc








hvm

64
/usr/bin/qemu-system-x86_64
pc-0.13
pc
fedora-13
pc-0.12
pc-0.11
pc-0.10
isapc





/usr/bin/qemu-kvm
pc-0.13
pc
fedora-13
pc-0.12
pc-0.11
pc-0.10
isapc








hvm

32
/usr/bin/qemu-system-arm
integratorcp
syborg
musicpal
mainstone
n800
n810
cheetah
sx1
sx1-v1
tosa
akita
spitz
borzoi
terrier
connex
verdex
lm3s811evb
lm3s6965evb
realview-eb
realview-eb-mpcore
realview-pb-a8
realview-pbx-a9
versatilepb
versatileab




hvm

32
/usr/bin/qemu-system-mips
malta
mipssim
magnum
pica61
mips




hvm

32
/usr/bin/qemu-system-mipsel
malta
mipssim
magnum
pica61
mips




hvm

32
/usr/bin/qemu-system-sparc
SS-5
SS-10
SS-600MP
SS-20
Voyager
LX
SS-4
SPARCClassic
SPARCbook
SS-1000
SS-2000
SS-2




hvm

32
/usr/bin/qemu-system-ppc
g3beige
mpc8544ds
bamboo
bamboo-0.13
bamboo-0.12
ref405ep
taihu
mac99
prep



The above commands can be used get the mentioned information..

 

virsh capabilties got mainly 2 sections.. 1. Host and 2. Guest part as highlighted above.

 

Recently the libvirt API behind this has been improved a lot for fetching above information..

 

Persist a file in an Ovirt node

As you know ‘ovirt-node‘ is almost a live CD image.. How-ever there are some files which are persisted by default in ovirt node..

 

If you would like to make a file persisted/stable in ovirt node ( Live CD image hypervisor)  execute below command in the hypervisor.

Ex:

#persist <filename>