工作,学习,生活,这里将会有一些记录. 备用域名:http://meisw.wdlinux.cn 注册 | 登陆
浏览模式: 标准 | 列表全部文章

XenServer 使用ISO 安装VM

要在 VM 开始安装作业系统,虽然 XenServer 已包含多个范本,例如 RedHat AS 4+5、CentOS、SuSE、Oracle Enterprise Linux 等等,在这些列表内的,安装时都不须额外下载原始安装光盘; 若未在列表内,例如 RedHat AS 3,就必须使用光盘方式安装。这里说明如何在新增 VM 时以 iso 档 方式来安装所需的作业系统。

首先,登录 console,执行以下指令,创建 iso 档型式的存储库(SR - Storage Repositories )
mkdir /boot-iso
xe sr-create name-label=boot-iso type=iso device-config:location=/boot-iso device-config:legacy_mode=true content-type=iso

使用SFTP上传 iso 档至主机的 /boot-iso 即可。

注:
1.如果不小心创建错误,或重复新增,想删除存储库时,就使用 XenCenter UI,直接选择 Detach ..... 就可以了。 
2.上传 iso 档至主机后,XenCenter 不能同步显示,须在 console 执行 xe-toolstack-restart 指令后,XenCenter 才可以识别到。

XenServer命令行下用windows共享的iso镜像安装虚拟机系统(转)

最近由于工作需要接触了XenServer,在学习的过程中发现XenCenter不能很好的来管理XenServer,于是开始学习命令行管理的方式,用XenCenter使用windows下共享的iso镜像文件来安装操作系统这个大家都应该会,但是我想通过命令行的方式使用windows下共享的iso镜像文件来安装操作系统,在网上找了很久,也问过一些高手,都没有能够解决,今天终于搞好了,激动的快哭了。。。。。。与是就有了以下的文章,如有错误,还请各位哥哥姐姐指教。。。。。。在此谢过。。。。。。

一。在XenServer主机上添加windows上的iso镜像文件共享存储

我在我的windows机器192.168.7.9上共享了一个文件夹iso 里面放了安装系统所需要的iso镜像文件

xe-mount-iso-sr  //IP/sharename  -t  cifs  -o username=<username>,password=<password>

示例:xe-mount-iso-sr //192.168.7.9/iso -t cifs -o username=administrator,password=P@ssw0rd

二。使用模板新建一个虚拟机(vm)

xe vm-install template=CentOS\ 5\ \(32-bit\) new-name-label=centos5

e2958c7e-bab7-235b-3426-6bd52efcf6c8

该命令返回新vm的uuid    

xe vdi-resize uuid=e2958c7e-bab7-235b-3426-6bd52efcf6c8 disk-size=20GiB   可以用此命令修改vm虚拟磁盘的大小,这里我们使用默认的大小

三。将vm的虚拟硬盘设置为不可引导

1>根据vm的uuid查找vm vbd(根硬盘)的uuid

xe vbd-list vm-uuid=e2958c7e-bab7-235b-3426-6bd52efcf6c8 userdevice=0 params=uuid --minimal

718cb50b-fdcd-82ed-df5a-b100f62bc627

该命令返回vm虚拟磁盘的uuid

2>使用返回的虚拟磁盘的uuid将vm的虚拟磁盘设置为不可引导

xe vbd-param-set uuid=718cb50b-fdcd-82ed-df5a-b100f62bc627 bootable=false

四。向新建的vm添加光驱,并设置为从光驱引导

1>获取XenServer主机上的挂载的windows共享上的iso镜像文件的名称

xe cd-list

该命令显示XenServer主机上所有的iso文件名称(name-label)

2>将XenServer主机上显示的iso的name-label参数作为虚拟机光驱的cd-name参数,本例中我们安装的是CentOS5.4 32位的,所以iso的name-label为CentOS-5.4-i386-bin-DVD.iso,那么vm光驱的cd-name(名称)也为CentOS-5.4-i386-bin-DVD.iso

xe vm-cd-add vm=centos5 cd-name=CentOS-5.4-i386-bin-DVD.iso device=2

3>获取与vm新建光驱(CD驱动器)对应的VBD的uuid

xe vbd-list vm-uuid=e2958c7e-bab7-235b-3426-6bd52efcf6c8 type=CD params=uuid --minimal

ba6e0365-46b2-6972-a8f4-730139802deb

该命令会显示与vm光驱对应的VBD的uuid

4>将vm光驱的VBD设置为可引导

xe vbd-param-set uuid=ba6e0365-46b2-6972-a8f4-730139802deb bootable=true

5>将vm的安装库设置为新建的虚拟光驱,即告诉vm我们要从cdrom来安装系统

xe vm-param-set uuid=e2958c7e-bab7-235b-3426-6bd52efcf6c8 other-config:install-repository=cdrom

此处的uuid为vm的uuid

五。启动新建的vm即开始安装

xe vm-start uuid=e2958c7e-bab7-235b-3426-6bd52efcf6c8

安装过程很简单这里不写了

MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

今天在为数据库中的某两个字段设置unique索引的时候,出现了Specified key was too long; max key length is 1000 bytes错误,经过查询才知道,是Mysql的字段设置的太长了,于是我把这两个字段的长度改了一下就好了。

建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
举例能看得更明白些,以GBK为例:
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`);
其中report_name varchar(200), report_client varchar(200), report_city varchar(200)
(200 + 200 +200) * 2 = 1200 > 1000,所有就会报1071错误,只要将report_city改为varchar(100)那么索引就能成功建立。
如果表是UTF8字符集,那索引还是建立不了。

perl模块安装

perl -MCPAN -e 'shell'
install HTML::Template::JIT

 

[root@srv3340 xen-tools-4.3.1]# xen-create-image
Can't locate File/Slurp.pm in @INC (@INC contains:

 

cpan> install File::Slurp

Xen安装错误解决笔记和mkinitrd命令

问题:CentOS 5.1 and Xen - mount: could not find filesystem '/dev/root'
现象:http://www.centos.org/modules/newbb/viewtopic.php?topic_id=11685
解决:http://wiki.xensource.com/xenwiki/Fedora5Xen0DomU
mkinitrd --with=xennet --preload=xenblk initrd.img $(uname -r)
 
mkinitrd
功能说明:建立要载入ramdisk的映像文件。
Linux启动时,要先载入硬盘驱动,如IDE,SCSI,RAID,然后才能加载root分区。
该工具根据/etc/modprobe.conf文件,自动寻找要加载的驱动文件。

语  法:mkinitrd [-fv][--omit-scsi-modules][--version][--preload=<模块名称>][--with=<模块名称>][映像文件][Kernel 版本]

参  数:
  --builtin=<模块名称>  如果驱动被编译进内核,mkinitrd就找不到相应驱动模块。该选项用用于忽略这些驱动,而不显示成错误;
  --fstab=fstab 指定fstab文件,默认是:/etc/fstab
  --omit-scsi-modules   不要载入SCSI模块
  --omit-lvm-modules 不要载入LVM模块
  --omit-raid-modules 不要载入Raid模块
  --preload=<模块名称>   指定要在载入Scsi模块前就要载入的模块
  --with=<模块名称>   指定要在载入Scsi模块后才载入的模块
  --version   显示版本信息。
-v  执行时显示详细的信息。
  -f   若指定的映像问家名称与现有文件重复,则覆盖现有的文件。

 

XEN故障与解决方法汇总

1、Hint to configure libvirt without bothering qemu errors in xen 
This is not a bug, but annoying
Since I have xen and no kvm the qemu dirvers report errors all the time - This may help everyone with the same setup.

libvir: QEMU error : connect: /usr/local/var/run/libvirt/qemud-sock: No such file or directory 
libvir: warning : Failed to find the network: Is the daemon running ?
libvir: error : library call virConnectNumOfNetworks failed, possibly not supported libvir: error : library call virConnectNumOfDefinedNetworks failed, possibly not supported 
[..]
The last two lines are printed every second!
To "unconfigure" qemu and therefore prevent these message flooding use
./configure --without-qemu
simple but useful ;-)

2、系统日志中大量如下警告:
Dec 2 16:11:08 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-13093
Dec 2 16:11:08 gamebbs2 kernel: audit(1228205468.528:120): avc: denied { read append } for pid=1056 comm="snmpd" name="snmpd.log" dev=dm-0 ino=3717987 scontext=system_u:system_r:snmpd_t:s0 tcontext=user_u:object_r:var_log_t:s0 tclass=file
Dec 2 16:11:08 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-13092
Dec 2 16:11:08 gamebbs2 kernel: audit(1228205468.940:121): avc: denied { read append } for pid=1056 comm="snmpd" name="snmpd.log" dev=dm-0 ino=3717987 scontext=system_u:system_r:snmpd_t:s0 tcontext=user_u:object_r:var_log_t:s0 tclass=file
Dec 2 16:16:15 gamebbs2 snmpd[1056]: Received SNMP packet(s) from UDP: [192.168.239.93]:-12384
原因是开启了selinux,snmp的日志文件因受selinux保护,snmp不能正常写入,解决方法有几种:
(1)停止snmpd,删除snmpd日志文件,再启动snmpd即可恢复,不过此方法处理后可能在下次重启系统后仍然会出现这个情况。
(2)直接关闭selinux(setenforce 0)
(3)修改selinux的策略(selinux不熟,哪位高手提供一下方法)

3、网卡lo流量很高
   初步估计与IPv6有关,关闭IPv6支持,重启系统后恢复
   vi /etc/modprobe.conf 加入下面两行
alias net-pf-10 off
alias ipv6 off

4、ssh远程连接到服务器后进行操作会停顿,在控制台相接操作没有此情况
   初步估计与IPv6有关,关闭IPv6支持,重启系统后恢复
   vi /etc/modprobe.conf 加入下面两行
alias net-pf-10 off
alias ipv6 off
   另可能与网卡流量限制有关,查看网卡流量限制
tc qdisc show dev eth0

5、在rh5u2前的系统上安装Fedora10作为DomU不成功
   可能是python-virtinst包版本过低,可以尝试更新此包再安装。

6、在XEN主机上,写在/etc/init.d/network上的路由不生效,但是改为非虚拟系统的时候正常
   因XEN系统中启动网络的方法与非虚拟主机系统有些不同,具体可以参考XEN相关文档,将路由写到/etc/init.d/xend中即可正常生效

7、ssh连接domU可以正常连接,使用xm console domname连接domU的控制台的时候报如下错误:
xenconsole: Could not read tty from store: No such file or directory
某些客户机还可能出现无法启动的现象。
可能是xend进程有问题,可以考虑重启xend进程:
/etc/init.d/xend restart

8、安装domU过程中,在输入客户机IP后不能获取到安装源的数据,使用DHCP获取不到地址
查看dom0中网络配置情况,检查是否domU连接到了错误的网桥上
brctl show
如果是,修正vif连接到的网桥,用brctl命令进行删除和添加
例如:
#brctl show   #查看网络连接情况
#xm list   #查看该DomU所的ID来确定vif号码(ID号与vif号相同)
#brctl delif virbr0 vifx.0 #从错误的网桥中删除vifx.0(x.0中x为ID编号,0表示第一块网卡,下同)
#brctl addif xenbr0 vifx.0 #在正确的网桥中加入vifx.0
#brctl show   #检查最终结果

9、安装客户机过程中跨网段安装失败
   首先检查安装客户机的时候配置的网络,客户机网络与主机网络应该相同,同时主机与安装服务器够连通,并且客户机设置的网关应该为该客户机所配置网段连通安装服务器的路由网关,可能不是默认网关,对于系统安装服务器与xen主机之间跨网段的情况网关设置非常重要。如果使用DHCP来安装客户机,通常可能会遇到此情况。

10、64位的RHEL5U2机器,安装客户机,重启客户机等都会卡住,在check image附近
初步估计为在有客户机运行期间,主机的时间跟实际时间有较大的差距的情况下运行了ntpdate的原因,如果已经运行了该命令,暂时未发现较好的解决方法,只能重启物理服务器。
如果还未运行客户机,可考虑先关闭客户机,再运行ntpdate校准,然后再启动客户机。

11、在单台物理XEN主机上同时进行两个虚拟客户机的安装可能会出现冲突,导致系统无响应

12、用virt-install安装客户机的时候报如下错误:
virDomainCreateLinux() failed XML description for domain is not well formed or invalid
Domain installation may not have been
successful. If it was, you can restart your domain
by running 'virsh start new216'; otherwise, please
restart your installation.
Mon, 09 Mar 2009 14:57:22 ERROR    virDomainCreateLinux() failed XML description for domain is not well formed or invalid
Traceback (most recent call last):
File "/usr/sbin/virt-install", line 502, in ?
    main()
File "/usr/sbin/virt-install", line 462, in main
    dom = guest.start_install(conscb,progresscb)
File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line 813, in start_install
    return self._do_install(consolecb, meter)
File "/usr/lib/python2.4/site-packages/virtinst/Guest.py", line 834, in _do_install
    self.domain = self.conn.createLinux(install_xml, 0)
File "/usr/lib64/python2.4/site-packages/libvirt.py", line 573, in createLinux
    if ret is None:raise libvirtError('virDomainCreateLinux() failed', conn=self)
libvirtError: virDomainCreateLinux() failed XML description for domain is not well formed or invalid
出现此报错应该是主机系统在启动的时候有起libvirtd服务,但是后来关闭了,而virt-install工具在进行客户机系统安装的时候错误地将客户机的网卡连接到libvirtd服务起的网桥virbr0上,此时libvirtd是关闭的,所以virbr0也不存在了,就出现了上面的错误信息。
解决方法有两个:
(1)、启动libvirtd服务后重新用原来的virt-install命令安装客户机操作系统;
#/etc/init.d/libvirtd start
(2)、在原来的virt-install命令后面加-b参数指定需要连接的网桥,如果未调整网络,一般默认的网桥应该为xenbr0
要查看网桥的名称可以使用brctl命令查看
#brctl show
[root@XenHost ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.feffffffffff       no              vif5.0
                                                        vif4.0
                                                        vif3.0
                                                        vif2.0
                                                        peth0
                                                        vif0.0
此处我们已经关闭了libvirtd服务,剩下的网桥的名称为xenbr0(如果创建了多个网桥,选择自己需要的网桥名称)
#virt-install -n kiro-test -r 256 --vcpus=1 -f /data/rh5 --nographics -p -d -l "http://192.168.0.1" -b xenbr0

squid cache-dir

cache_dir scheme directory size L1 L2 [options]
这个选项可以说是squid.conf中最重要的参数设定之一了。所以必须要吃透它!

 

Scheme:
可以从编译参数—enable-storeio=LIST 中指定,默认为ufs。其他有:aufs, diskd, coss, null

Directory:
存储缓存对象的目录,建议将一个缓寸目录放在单独的分区中,另外最好放在一个单独的物理磁盘来使用。

Size:
没有上限,一般建议是整个分区的90%以下,因为还有10%要给swap.state和一些临时文件使用。
下限可以自己测试,先设一个比较小的值,比如100M,并且设置可以用满,等待一周,如果分区满了,那么你就要适当的调大。
Inodes也是一个相当重要的标准,如果inode用完的话,就算磁盘空间还有很多空余也是浪费。
可以通过df -ik来察看,另外一些创建文件系统的命令(newfs,mkfs)也有相应的参数,一般是-i。

磁盘空间和进程大小之间的关系:
每一个在磁盘上的缓存对象都会占有一小块内存。Squid用这些内存来建立磁盘上的缓存数据的索引,以便快速找到。如果要增加一个新的cache目录或者增加磁盘空间的大小,先要确认有足够的内存。如果Squid进程占有的太大导致内存不够,Squid的性能会降低的非常明显。
每个在缓存目录中的对象都将会根据系统的不同而占有76或者112个字节。其中在32位的Inter架构上的占有76个字节。可以通过cache manager察看多少内存被使用了。

L1 and L2:
Squid会建立2级目录树在缓存目录。L1指定第一层,L2指定第二层各是多少目录数。默认为16和256。真正的缓存目录放在二级目录下,并且数据存放是按次序的,Squid有一套算法storeUfsDirFullPath( )实现一组页面的数据存储在相同的二级目录中。而且从实际情况来看,数据都是按顺序一个目录一个目录存放下去的。

Options: (read-only max-size)
read-only:用在当你将缓存目录下面的内容移动到其他硬盘上,并且还需要这些数据的时候。如果不加read-only,Squid的hit率会急剧下降。等运行一段时间后再去掉这个选项即可。
max-size:指定最大缓存的数据大小。单位是字节。

dz messages

$post['message'] = str_replace('','thread-'.$tid.'-'.$page.'-1.html<br>',discuzcode(