?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
注:physical machine redhat6.4Q但是虚拟机装了个redhat 5.5Q在vm上面用lsscsi看不到盘,因此觉得虚拟5.5版本太低了,内核不能识别Q因此装了个内核版本高点儿redhat6.4来确认这个问题,发现能看到盘了,把我所研究学习的过Esharel各位?/strong>
一Q修改系l配|的xml文g
具体路径是在Q?etc/libvirt/qemu/guest_os.xmlQ不要手动修改这个文Ӟ修改了你会发现用virsh dumpxml guest_os看到的xml文gq是修改以前的)
修改的方式有两种Q?/strong>
a:d控制?/strong>
随便找个目录Qtouch tmp.xml,然后~辑q个文gQ添加以下内容:
<?xml version="1.0"?>
<controller index="bruce" model="virtio-scsi" type="scsi"/>
然后写个脚本,d控制器:
# for i in {0..3}
> do
> sed "s/bruce/$i/g" /controller.xml > /con.xml
> virsh attach-device johnny_zeng /con.xml --config
> echo "Begin to attach device $i ..."
> done
Device attached successfully
Begin to attach device 0 ...
Device attached successfully
Begin to attach device 1 ...
Device attached successfully
Begin to attach device 2 ...
Device attached successfully
Begin to attach device 3 ...
bQ添加scsi disk
随便找个目录Qtouch tmp.xml,然后~辑q个文gQ添加以下内容:
<disk type="block" device="lun" sgio="unfiltered">
<driver name="qemu" type="raw" cache="none" />
<source dev="/dev/disk/by-path/pci-0000:08:00.0-fc-0x500009780800a124-lun-20" />
<target dev="sda" bus="scsi" />
<shareable />
<alias name="scsi0-0-0-4" />
<address type="drive" controller="0" bus="0" target="0" unit="5" />
</disk>
以上内容按以下方式修改,W一行红色部分内定w过Qls -l /dev/disk/by-path/|grep -v part|grep -i fc 查找Q会发现有很多的san 盘。第二部分的内容l过试Q发现只要开头是vdx,sdx,hdxQ至于x的内容字母,数字都可以,但是要保证每ơdev属性值都不一栗第三个U线部分内容Q顾名思义Q是一个别名,因此最好是写成scsi+controller-0-0-id方式。第四处U色部分表示Q第一个ؓ控制器idQ在映射多\径盘的时候需要)Q第二个个盘的idQ但是这个控制器的id+盘的id不能与其它盘重合Q比如我q个盘加的是控制?Q盘id?Q则表示?:1Q下ơ不能加同样的控制器?Q盘id?的属性?/p>
修改好了以后Q然后virsh attach-device guest_os /tmp.xml --configd讑֤。也可以通过另外一U方式,virsh edit guest_osQ然后修改保存,再通过save guest_os /etc/libvirt/qemu/guest_os.xml 保存到系l生效?/p>
如果你要加入几百个盘的话Q这U方式显然不得行Q所以,p写脚本啦Q我把我的脚本share一下,其实真的很简单?/p>
在根目录下面新徏了个模板文gbruce.xml:
<disk type="block" device="lun" sgio="unfiltered">
<driver name="qemu" type="raw" cache="none" />
<source dev="/dev/disk/by-path/kenny" />
<target dev="sdyang" bus="scsi" />
<shareable />
<alias name="scsicontrollers-0-0-number" />
<address type="drive" controller="controllers" bus="0" target="0" unit="number" />
</disk>
然后通过以下脚本dQ?/p>
#!/bin/sh
controler=0
count=0
ls /dev/disk/by-path/|grep -v part|grep fc|while read line
do
number=`echo $line|cut -d - -f 6`
sed "s/kenny/$line/g" bruce.xml | sed "s/yang/$number$controler/g" |sed "s/controllers/$controler/g"|sed "s/number/$number/g" > /yang.xml
echo "begin to attach device $number to xml file,controler is $controler ..."
virsh attach-device bruce_yang /yang.xml --config
if test $? -eq 1
then
echo "Failed to attach device to xml file ..."
exit 1
fi
count=`expr $count + 1`
if test $count -eq 10
then
count=0
controler=`expr $controler + 1`
fi
done
~
~
因ؓ我知道有十个盘,所以判断它{于10Q计方法很?ls /dev/disk/by-path/|grep -v part|grep fc|wc -l Q将计算的结果除以pathsQ也是多少条\径?/p>
二:dvmQ确认scsi?/strong>
# lsscsi
[2:0:0:1] disk EMC SYMMETRIX 5874 /dev/sdd
[2:0:0:4] disk EMC SYMMETRIX 5874 /dev/sde
[2:0:0:5] disk EMC SYMMETRIX 5874 /dev/sdf
[3:0:0:15] disk EMC SYMMETRIX 5874 /dev/sda
[4:0:0:3] disk EMC SYMMETRIX 5874 /dev/sdb
[5:0:0:1] disk EMC SYMMETRIX 5874 /dev/sdc