xen 虚拟化操作笔记(无理论版)――基本安装配置以..


所属类别:Linux

文章作者:rha030

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


文件:xen 虚拟化操作笔记(无理论版)——基本安装配置以及基本网络配置(第二次修改).pdf大小:309KB下载:下载xen虚拟化操作笔记(无理论版)——基本安装配置以及基本网络配置版权GNU作者信息Alin Fang (Fang Yunlin)MSN: cst05001@hotmail.comG Talk: cst05001@gmail.comBlog: http://www.alinblog.cn/修改日期21 Oct, 2008第二次修改声明本人实验笔记,非权威文档。如有错误请告知。十分感谢!预科班虽说是物理论版,为了保险,基础的东西还是提一点吧。上图是xen的简易框架图。有不少哥们以为说xen虚拟机是启动了Domain0(宿主机)后,在宿主机上启动了DomainU。其实不是这样的。Domain0只是一个具有控制Hypervisor特权的Domain,而所有的Domain都是由Hypervisor调度运行的!也就是从某种意义上来说,所有的Domain都是平行的。你眼睛所看到的操作系统,也是运行在由Hypervisor调度的Domain0这个环境里面的虚拟机。安装xen虚拟套件以及配置Domain0这个是我的本地yum源配置[root@dhcp-0-122 ~]# cat /etc/yum.repos.d/custom.repo[VT]name=VTbaseurl=file:/misc/cd/VTenabled=1gpgcheck=0[Client]name=Clientbaseurl=file:/misc/cd/Clientenabled=1gpgcheck=0[Workstation]name=Workstationbaseurl=file:/misc/cd/Workstationenabled=1gpgcheck=0[root@dhcp-0-122 ~]#先安装虚拟化组件[root@dhcp-0-122 ~]# yum grouplistLoading "rhnplugin" pluginLoading "security" pluginThis system is not registered with RHN.RHN support will be disabled.Setting up Group ProcessInstalled Groups:Office/ProductivityAdministration ToolsEditorsSystem ToolsText-based InternetGames and EntertainmentLegacy Software DevelopmentNetwork ServersLegacy Software SupportX Window SystemWeb ServerPrinting SupportMail ServerServer Configuration ToolsGraphical InternetAvailable Groups:Engineering and ScientificMySQL DatabaseGNOME Software DevelopmentX Software DevelopmentVirtualizationLegacy Network ServerDNS Name ServerAuthoring and PublishingFTP ServerJava DevelopmentOpenFabrics Enterprise DistributionGraphicsWindows File ServerEclipseKDE Software DevelopmentKDE (K Desktop Environment)Sound and VideoPostgreSQL DatabaseDevelopment LibrariesNews ServerDevelopment ToolsDone[root@dhcp-0-122 ~]# yum groupinstall VirtualizationLoading "rhnplugin" pluginLoading "security" pluginThis system is not registered with RHN.RHN support will be disabled.Setting up Group ProcessPackage Virtualization-en-US - 5.2-9.noarch already installed and latest versionResolving Dependencies--> Running transaction check---> Package gnome-applet-vm.i386 0:0.1.2-1.el5 set to be updated--> Processing Dependency: libxenstore.so.3.0 for package: gnome-applet-vm---> Package xen.i386 0:3.0.3-64.el5 set to be updated--> Processing Dependency: python-virtinst for package: xen--> Processing Dependency: bridge-utils for package: xen---> Package kernel-xen.i686 0:2.6.18-92.el5 set to be installed---> Package libvirt.i386 0:0.3.3-7.el5 set to be updated--> Processing Dependency: dnsmasq for package: libvirt---> Package virt-manager.i386 0:0.5.3-8.el5 set to be updated--> Processing Dependency: libvirt-python >= 0.3.3 for package: virt-manager--> Processing Dependency: gtk-vnc-python for package: virt-manager--> Processing Dependency: gnome-python2-gnomekeyring >= 2.15.4 for package: virt-manager---> Package virt-viewer.i386 0:0.0.2-2.el5 set to be updated--> Processing Dependency: libgtk-vnc-1.0.so.0 for package: virt-viewer--> Running transaction check---> Package libvirt-python.i386 0:0.3.3-7.el5 set to be updated---> Package python-virtinst.noarch 0:0.300.2-8.el5 set to be updated---> Package gtk-vnc.i386 0:0.3.2-3.el5 set to be updated---> Package bridge-utils.i386 0:1.1-2 set to be updated---> Package gtk-vnc-python.i386 0:0.3.2-3.el5 set to be updated---> Package xen-libs.i386 0:3.0.3-64.el5 set to be updated---> Package dnsmasq.i386 0:2.39-2.el5 set to be updated---> Package gnome-python2-gnomekeyring.i386 0:2.16.0-2.el5 set to be updated--> Finished Dependency ResolutionDependencies Resolved=============================================================================Package Arch Version Repository Size=============================================================================Installing:gnome-applet-vm i386 0.1.2-1.el5 VT 75 kInstalling for dependencies:bridge-utils i386 1.1-2 Client 28 kdnsmasq i386 2.39-2.el5 Client 151 kgnome-python2-gnomekeyring i386 2.16.0-2.el5 Client 15 kgtk-vnc i386 0.3.2-3.el5 Client 51 kgtk-vnc-python i386 0.3.2-3.el5 Client 9.8 kkernel-xen i686 2.6.18-92.el5 Client 15 Mlibvirt i386 0.3.3-7.el5 VT 917 klibvirt-python i386 0.3.3-7.el5 VT 74 kpython-virtinst noarch 0.300.2-8.el5 VT 161 kvirt-manager i386 0.5.3-8.el5 VT 1.2 Mvirt-viewer i386 0.0.2-2.el5 VT 24 kxen i386 3.0.3-64.el5 VT 1.8 Mxen-libs i386 3.0.3-64.el5 Client 141 kTransaction Summary=============================================================================Install 14 Package(s)Update 0 Package(s)Remove 0 Package(s)Total download size: 20 MIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning TransactionInstalling: xen-libs ####################### [ 1/14]Installing: bridge-utils ####################### [ 2/14]Installing: gtk-vnc ####################### [ 3/14]Installing: gtk-vnc-python ####################### [ 4/14]Installing: gnome-python2-gnomekeyring ####################### [ 5/14]Installing: dnsmasq ####################### [ 6/14]Installing: libvirt ####################### [ 7/14]Installing: libvirt-python ####################### [ 8/14]Installing: virt-viewer ####################### [ 9/14]Installing: python-virtinst ####################### [10/14]Installing: virt-manager ####################### [11/14]Installing: kernel-xen ####################### [12/14]Installing: xen ####################### [13/14]Installing: gnome-applet-vm ####################### [14/14]Installed: gnome-applet-vm.i386 0:0.1.2-1.el5Dependency Installed: bridge-utils.i386 0:1.1-2 dnsmasq.i386 0:2.39-2.el5 gnome-python2-gnomekeyring.i386 0:2.16.0-2.el5 gtk-vnc.i386 0:0.3.2-3.el5 gtk-vnc-python.i386 0:0.3.2-3.el5 kernel-xen.i686 0:2.6.18-92.el5 libvirt.i386 0:0.3.3-7.el5 libvirt-python.i386 0:0.3.3-7.el5 python-virtinst.noarch 0:0.300.2-8.el5 virt-manager.i386 0:0.5.3-8.el5 virt-viewer.i386 0:0.0.2-2.el5 xen.i386 0:3.0.3-64.el5 xen-libs.i386 0:3.0.3-64.el5Complete![root@dhcp-0-122 ~]#修改grub配置,使其默认引导hypervisor,而不是普通kernel。这个是我修改后的grub配置[root@dhcp-0-122 ~]# cat /boot/grub/grub.conf# grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file# NOTICE: You have a /boot partition. This means that# all kernel and initrd paths are relative to /boot/, eg.# root (hd0,0)# kernel /vmlinuz-version ro root=/dev/vg0/LogVol00# initrd /initrd-version.img#boot=/dev/sdadefault=0timeout=5splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Red Hat Enterprise Linux Client (2.6.18-92.el5xen)root (hd0,0)kernel /xen.gz-2.6.18-92.el5module /vmlinuz-2.6.18-92.el5xen ro root=/dev/vg0/LogVol00 rhgb quietmodule /initrd-2.6.18-92.el5xen.imgtitle Red Hat Enterprise Linux Client (2.6.18-92.el5)root (hd0,0)kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/vg0/LogVol00 rhgb quietinitrd /initrd-2.6.18-92.el5.img[root@dhcp-0-122 ~]#重启加载hypervisor,启动Dom0。[root@dhcp-0-122 ~]# reboot确认Dom0启动。[root@dhcp-0-122 ~]# uname -r2.6.18-92.el5xen[root@dhcp-0-122 ~]#安装基于LVM存储的虚拟机我打算安装一台装有Red Hat Enterprise Linux update 2 Server的虚拟机。搭建安装树[root@dhcp-0-122 public]# pwd/public[root@dhcp-0-122 public]# tree.-- install`-- iso`-- rhel-5.2-server-i386-dvd.iso2 directories, 1 file[root@dhcp-0-122 public]#编辑fstab,使得系统开机自动能自动挂载光盘镜像作为安装树这个是我fstab的配置[root@dhcp-0-122 public]# cat /etc/fstab/dev/vg0/LogVol00 / ext3 defaults 1 1LABEL=/boot1 /boot ext3 defaults 1 2tmpfs /dev/shm tmpfs defaults 0 0devpts /dev/pts devpts gid=5,mode=620 0 0sysfs /sys sysfs defaults 0 0proc /proc proc defaults 0 0LABEL=SWAP-sda2 swap swap defaults 0 0/public/iso/rhel-5.2-server-i386-dvd.iso /public/install iso9660 loop,ro0 0让fstab配置生效[root@dhcp-0-122 public]# mount -a[root@dhcp-0-122 public]#搭建ftp服务器使得DomainU可以远程使用安装树[root@dhcp-0-122 misc]# yum install vsftpdLoading "rhnplugin" pluginLoading "security" pluginThis system is not registered with RHN.RHN support will be disabled.Setting up Install ProcessParsing package install argumentsResolving Dependencies--> Running transaction check---> Package vsftpd.i386 0:2.0.5-12.el5 set to be updatedfilelists.xml.gz 100% ========================= 762 kB 00:00filelists.xml.gz 100% ========================= 1.7 MB 00:00filelists.xml.gz 100% ========================= 31 kB 00:00--> Finished Dependency ResolutionDependencies Resolved=============================================================================Package Arch Version Repository Size=============================================================================Installing:vsftpd i386 2.0.5-12.el5 Workstation 138 kTransaction Summary=============================================================================Install 1 Package(s)Update 0 Package(s)Remove 0 Package(s)Total download size: 138 kIs this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning TransactionInstalling: vsftpd ######################### [1/1]Installed: vsftpd.i386 0:2.0.5-12.el5Complete![root@dhcp-0-122 misc]# vim /etc/vsftpd/vsftpd.conf在里面添加一行anon_root=/public重启ftp服务器[root@dhcp-0-122 misc]# service vsftpd restartShutting down vsftpd: [FAILED]Starting vsftpd for vsftpd: [ OK ][root@dhcp-0-122 misc]# chkconfig vsftpd --level 35 on[root@dhcp-0-122 misc]#检测ftp服务器是否正常工作[root@dhcp-0-122 misc]# lftp 127.0.0.1lftp 127.0.0.1:~> lsdrwxr-xr-x 8 0 0 16384 Apr 30 23:23 installdrwxr-xr-x 2 0 0 4096 Oct 21 09:24 isolftp 127.0.0.1:/> exit[root@dhcp-0-122 misc]#安装虚拟机Red Hat Enterprise Linux 5 update 2提供了两种常规情况下的虚拟机安装工具,一个是GUI的virt-manager,一个是CLI的virt-install。我这里选择virt-install。查看下帮助[root@dhcp-0-122 misc]# virt-install --helpusage: virt-install [options]options:-h, --help show this help message and exit-n NAME, --name=NAME Name of the guest instance-r MEMORY, --ram=MEMORYMemory to allocate for guest instance in megabytes-u UUID, --uuid=UUID UUID for the guest; if none is given a random UUIDwill be generated. If you specify UUID, you should usea 32-digit hexadecimal number.--vcpus=VCPUS Number of vcpus to configure for your guest--check-cpu Check that vcpus do not exceed physical CPUs and warnif they do.--cpuset=CPUSET Set which physical CPUs Domain can use.-f DISKFILE, --file=DISKFILEFile to use as the disk image-s DISKSIZE, --file-size=DISKSIZESize of the disk image (if it doesn't exist) ingigabytes--nonsparse Don't use sparse files for disks. Note that this willbe significantly slower for guest creation--nodisks Don't set up any disks for the guest.-m MAC, --mac=MAC Fixed MAC address for the guest; if none or RANDOM isgiven a random address will be used-b BRIDGE, --bridge=BRIDGEBridge to connect guest NIC to; if none given, willtry to determine the default-w NETWORK, --network=NETWORKConnect the guest to a virtual network, forwarding tothe physical network with NAT--vnc Use VNC for graphics support--vncport=VNCPORT Port to use for VNC--sdl Use SDL for graphics support--nographics Don't set up a graphical console for the guest.--noautoconsole Don't automatically try to connect to the guestconsole-k KEYMAP, --keymap=KEYMAPset up keymap for a graphical console--accelerate Use kernel acceleration capabilities--connect=CONNECT Connect to hypervisor with URI--livecd Specify the CDROM media is a LiveCD-v, --hvm This guest should be a fully virtualized guest-c CDROM, --cdrom=CDROMFile to use a virtual CD-ROM device for fullyvirtualized guests--pxe Boot an installer from the network using the PXE bootprotocol--os-type=OS_TYPE The OS type for fully virtualized guests, e.g.'linux', 'unix', 'windows'--os-variant=OS_VARIANTThe OS variant for fully virtualized guests, e.g.'fedora6', 'rhel5', 'solaris10', 'win2k', 'vista'--noapic Disables APIC for fully virtualized guest (overridesvalue in os-type/os-variant db)--noacpi Disables ACPI for fully virtualized guest (overridesvalue in os-type/os-variant db)--arch=ARCH The CPU architecture to simulate-p, --paravirt This guest should be a paravirtualized guest-l LOCATION, --location=LOCATIONInstallation source for paravirtualized guest (eg,nfs:host:/path, http://host/path, ftp://host/path)-x EXTRA, --extra-args=EXTRAAdditional arguments to pass to the installer withparavirt guests-d, --debug Print debugging information--noreboot Disables the automatic rebooting when the installationis complete.--force Do not prompt for input. Answers yes where applicable,terminates for all other prompts[root@dhcp-0-122 misc]#创建存储我磁盘上已经搭建好了LVM,搭建方法不在本篇讨论反问之内。这个是我的LVM结构[root@dhcp-0-122 misc]# pvdisplay--- Physical volume ---PV Name /dev/sda3VG Name vg0PV Size 146.91 GB / not usable 4.80 MBAllocatable yesPE Size (KByte) 32768Total PE 4701Free PE 4233Allocated PE 468PV UUID K0uQRz-cdSh-SnqZ-Ut15-Qjvu-LjVb-Dmh7m4[root@dhcp-0-122 misc]# vgdisplay--- Volume group ---VG Name vg0System IDFormat lvm2Metadata Areas 1Metadata Sequence No 2VG Access read/writeVG Status resizableMAX LV 0Cur LV 1Open LV 1Max PV 0Cur PV 1Act PV 1VG Size 146.91 GBPE Size 32.00 MBTotal PE 4701Alloc PE / Size 468 / 14.62 GBFree PE / Size 4233 / 132.28 GBVG UUID A6IMDs-QhHl-E3Fy-HZim-R8GS-jKhm-TDxGSE[root@dhcp-0-122 misc]# lvdisplay--- Logical volume ---LV Name /dev/vg0/LogVol00VG Name vg0LV UUID m23mY9-gdBv-kHmy-T4X3-AbWb-bYof-0PiWEzLV Write Access read/writeLV Status available# open 1LV Size 14.62 GBCurrent LE 468Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0[root@dhcp-0-122 misc]#为即将安装的虚拟机创建存储[root@dhcp-0-122 misc]# lvcreate -n vm1 -L 8G vg0/dev/cdrom: open failed: Read-only file systemLogical volume "vm1" created[root@dhcp-0-122 misc]# lvdisplay--- Logical volume ---LV Name /dev/vg0/LogVol00VG Name vg0LV UUID m23mY9-gdBv-kHmy-T4X3-AbWb-bYof-0PiWEzLV Write Access read/writeLV Status available# open 1LV Size 14.62 GBCurrent LE 468Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:0--- Logical volume ---LV Name /dev/vg0/vm1VG Name vg0LV UUID 5wYSoW-1Atl-o7fT-PUKs-xGUA-RjyW-mNEF1hLV Write Access read/writeLV Status available# open 0LV Size 8.00 GBCurrent LE 256Segments 1Allocation inheritRead ahead sectors auto- currently set to 256Block device 253:1[root@dhcp-0-122 misc]#这个是当前的网络环境[root@dhcp-0-122 misc]# ifconfigeth0 Link encap:Ethernet HWaddr 00:18:8B:0E:32:24inet addr:10.66.0.122 Bcast:10.66.1.255 Mask:255.255.254.0inet6 addr: fe80::218:8bff:fe0e:3224/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2188964 errors:0 dropped:0 overruns:0 frame:0TX packets:1136096 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:3235426395 (3.0 GiB) TX bytes:89795414 (85.6 MiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:1837 errors:0 dropped:0 overruns:0 frame:0TX packets:1837 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:4732456 (4.5 MiB) TX bytes:4732456 (4.5 MiB)peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:2188962 errors:0 dropped:0 overruns:0 frame:0TX packets:1136096 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:3244181923 (3.0 GiB) TX bytes:94339990 (89.9 MiB)Interrupt:16vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:1136096 errors:0 dropped:0 overruns:0 frame:0TX packets:2188964 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:89795414 (85.6 MiB) TX bytes:3235426395 (3.0 GiB)virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:45 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:9984 (9.7 KiB)xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:15304 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:2090964 (1.9 MiB) TX bytes:0 (0.0 b)[root@dhcp-0-122 misc]#安装虚拟机[root@dhcp-0-122 misc]# virt-install --name=vm1 --file=/dev/vg0/vm1 --ram=512 --nographics --location=ftp://192.168.122.1/install --brdge=virbr0然后就开始安装了如何在文本界面下安装一个linux的具体细节不在本篇讨论范围之内。配置私有网络由于种种原因,你的DomainU需要加入一个私有网络,不能连入共有网络,比如当你无聊做个DHCP服务器的时候。Xen常用的管理工具有xm和virsh。其子命令以及参数繁多,可看manpage参考。这里有几条常用命令:xm list列出所有domainxm create [domain-name domain-id]从配置文件创建domain,配置文件的位置默认在/etc/xen/目录下。xm shutdown [domain-name domain-id]关闭domainxm destroy [domain-name domain-id]摧毁domain,相当于直接拉机器的电闸xm console [domain-name domain-id]连接到domain的 串口,可和xm create结合使用:xm craete [domain-name domain-id] -c这是目前的网络状况:[root@dhcp-0-122 misc]# ifconfigeth0 Link encap:Ethernet HWaddr 00:18:8B:0E:32:24inet addr:10.66.0.122 Bcast:10.66.1.255 Mask:255.255.254.0inet6 addr: fe80::218:8bff:fe0e:3224/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2219611 errors:0 dropped:0 overruns:0 frame:0TX packets:1139993 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:3239956666 (3.0 GiB) TX bytes:90397038 (86.2 MiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:4405 errors:0 dropped:0 overruns:0 frame:0TX packets:4405 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:20662633 (19.7 MiB) TX bytes:20662633 (19.7 MiB)peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:2219609 errors:0 dropped:0 overruns:0 frame:0TX packets:1140011 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:3248834948 (3.0 GiB) TX bytes:94959471 (90.5 MiB)Interrupt:16vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:1139993 errors:0 dropped:0 overruns:0 frame:0TX packets:2219611 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:90397038 (86.2 MiB) TX bytes:3239956666 (3.0 GiB)vif4.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:48 errors:0 dropped:0 overruns:0 frame:0TX packets:35 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:32RX bytes:9236 (9.0 KiB) TX bytes:2400 (2.3 KiB)virbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:186944 errors:0 dropped:0 overruns:0 frame:0TX packets:406219 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:9946768 (9.4 MiB) TX bytes:557860551 (532.0 MiB)xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:38089 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:5234164 (4.9 MiB) TX bytes:0 (0.0 b)[root@dhcp-0-122 misc]# xm listName ID Mem(MiB) VCPUs State Time(s)Domain-0 0 1508 2 r----- 976.0vm1 4 511 1 -b---- 17.0[root@dhcp-0-122 misc]# brctl showbridge name bridge id STP enabled interfacesvirbr0 8000.feffffffffff yes vif4.0xenbr0 8000.feffffffffff no peth0vif0.0[root@dhcp-0-122 misc]#Domain vm1是连接到virbr0这个桥的。在配置文件里面我们也可以看到[root@dhcp-0-122 misc]# cat /etc/xen/vm1name = "vm1"uuid = "93a47e55-6844-f3fb-a1f0-5eff07a80478"maxmem = 512memory = 512vcpus = 1bootloader = "/usr/bin/pygrub"on_poweroff = "destroy"on_reboot = "restart"on_crash = "restart"vfb = [ ]disk = [ "phy:/dev/vg0/vm1,xvda,w" ]vif = [ "mac=00:16:3e:5c:d2:70,bridge=virbr0" ][root@dhcp-0-122 misc]#我们可以通过vif参数的bridge属性选择Domain U桥接到哪个桥。创建一个私有桥[root@dhcp-0-122 misc]# brctlUsage: brctl [commands]commands:addbr add bridgedelbr delete bridgeaddif add interface to bridgedelif delete interface from bridgesetageing set ageing timesetbridgeprio set bridge prioritysetfd set bridge forward delaysethello set hello timesetmaxage set max message agesetpathcost set path costsetportprio set port priorityshow show a list of bridgesshowmacs show a list of mac addrsshowstp show bridge stp infostp {onoff} turn stp on/off[root@dhcp-0-122 misc]# brctl addbr mybr0[root@dhcp-0-122 misc]# ifconfig mybr0 up[root@dhcp-0-122 misc]# ifconfig mybr0 192.168.0.1[root@dhcp-0-122 misc]# ifconfigeth0 Link encap:Ethernet HWaddr 00:18:8B:0E:32:24inet addr:10.66.0.122 Bcast:10.66.1.255 Mask:255.255.254.0inet6 addr: fe80::218:8bff:fe0e:3224/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:2221957 errors:0 dropped:0 overruns:0 frame:0TX packets:1140296 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:3240314113 (3.0 GiB) TX bytes:90443364 (86.2 MiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:4429 errors:0 dropped:0 overruns:0 frame:0TX packets:4429 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:20665225 (19.7 MiB) TX bytes:20665225 (19.7 MiB)mybr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:27 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:9632 (9.4 KiB)peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:2221953 errors:0 dropped:0 overruns:0 frame:0TX packets:1140314 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:3249201451 (3.0 GiB) TX bytes:95007027 (90.6 MiB)Interrupt:16vif0.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:1140296 errors:0 dropped:0 overruns:0 frame:0TX packets:2221957 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:90443364 (86.2 MiB) TX bytes:3240314113 (3.0 GiB)vif4.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:LinkUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:48 errors:0 dropped:0 overruns:0 frame:0TX packets:201 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:32RX bytes:9236 (9.0 KiB) TX bytes:11032 (10.7 KiB)virbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFinet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:186944 errors:0 dropped:0 overruns:0 frame:0TX packets:406219 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:9946768 (9.4 MiB) TX bytes:557860551 (532.0 MiB)xenbr0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FFUP BROADCAST RUNNING NOARP MTU:1500 Metric:1RX packets:39981 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:5501810 (5.2 MiB) TX bytes:0 (0.0 b)[root@dhcp-0-122 misc]#大家可以看到一个桥就做出来了。现在我们把虚拟机桥接到mybr0修改Domain vm1的配置文件[root@dhcp-0-122 misc]# cat /etc/xen/vm1name = "vm1"uuid = "93a47e55-6844-f3fb-a1f0-5eff07a80478"maxmem = 512memory = 512vcpus = 1bootloader = "/usr/bin/pygrub"on_poweroff = "destroy"on_reboot = "restart"on_crash = "restart"vfb = [ ]disk = [ "phy:/dev/vg0/vm1,xvda,w" ]vif = [ "mac=00:16:3e:5c:d2:70,bridge=mybr0" ][root@dhcp-0-122 misc]#重新启动虚拟机使其读取新配置[root@dhcp-0-122 misc]# xm listName ID Mem(MiB) VCPUs State Time(s)Domain-0 0 1508 2 r----- 1022.0vm1 7 512 1 -b---- 0.5[root@dhcp-0-122 misc]# xm destroy vm1[root@dhcp-0-122 misc]# xm create vm1 -c在虚拟机vm1里面配置网络[root@vm1 ~]# ifconfiglo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:8 errors:0 dropped:0 overruns:0 frame:0TX packets:8 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)[root@vm1 ~]# system-config-network-tui[root@vm1 ~]# service network restartShutting down loopback interface: [ OK ]Bringing up loopback interface: [ OK ]Bringing up interface eth0: [ OK ][root@vm1 ~]# ifconfigeth0 Link encap:Ethernet HWaddr 00:16:3E:5C:D2:70inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::216:3eff:fe5c:d270/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:27 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 b) TX bytes:6262 (6.1 KiB)lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:8 errors:0 dropped:0 overruns:0 frame:0TX packets:8 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)[root@vm1 ~]#我们检查一下配置是否正确在虚拟机vm1里面操作[root@vm1 ~]# ping 192.168.0.1 -c 4PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=1.31 ms64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.104 ms64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.107 ms64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.108 ms--- 192.168.0.1 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3001msrtt min/avg/max/mdev = 0.104/0.408/1.314/0.523 ms[root@vm1 ~]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.255.0 U 0 0 0 eth0169.254.0.0 * 255.255.0.0 U 0 0 0 eth0default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0[root@vm1 ~]#在domain0里操作[root@dhcp-0-122 misc]# ping 192.168.0.2 -c 4PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.246 ms64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.127 ms64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.129 ms64 bytes from 192.168.0.2: icmp_seq=4 ttl=64 time=0.115 ms--- 192.168.0.2 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3000msrtt min/avg/max/mdev = 0.115/0.154/0.246/0.053 ms[root@dhcp-0-122 misc]# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.255.0 U 0 0 0 mybr0192.168.122.0 * 255.255.255.0 U 0 0 0 virbr010.66.0.0 * 255.255.254.0 U 0 0 0 eth0169.254.0.0 * 255.255.0.0 U 0 0 0 eth0default 10.66.1.254 0.0.0.0 UG 0 0 0 eth0[root@dhcp-0-122 misc]# brctl showbridge name bridge id STP enabled interfacesmybr0 8000.feffffffffff no vif8.0virbr0 8000.000000000000 yesxenbr0 8000.feffffffffff no peth0vif0.0[root@dhcp-0-122 misc]# xm listName ID Mem(MiB) VCPUs State Time(s)Domain-0 0 1508 2 r----- 1048.8vm1 8 511 1 -b---- 18.5[root@dhcp-0-122 misc]#可以看到Domain Id为8的Domain是加入桥mybr0了。但是这样有一个不足。brctl添加的桥是动态的。只要重启物理机,桥就会失效。所以我要把添加桥的操作写到配置脚本里面。配置在虚拟机启动时自动搭建桥我们在Domain0里面操作[root@dhcp-0-122 misc]# cd /etc/xen/[root@dhcp-0-122 xen]# pwd/etc/xen[root@dhcp-0-122 xen]# tree.-- auto-- qemu-ifup-- scripts -- blktap -- block -- block-common.sh -- block-enbd -- block-nbd -- external-device-migrate -- locking.sh -- logging.sh -- network-bridge -- network-nat -- network-route -- vif-bridge -- vif-common.sh -- vif-nat -- vif-route -- vtpm -- vtpm-common.sh -- vtpm-delete -- vtpm-hotplug-common.sh -- vtpm-impl -- vtpm-migration.sh -- xen-hotplug-cleanup -- xen-hotplug-common.sh -- xen-network-common.sh `-- xen-script-common.sh-- vm1-- xend-config.sxp-- xend-pci-permissive.sxp-- xend-pci-quirks.sxp-- xmexample.hvm-- xmexample.vti-- xmexample1`-- xmexample22 directories, 34 files[root@dhcp-0-122 xen]#xend-config.sxp是xend的主要配置文件。scripts是xen的脚本存放目录,里面也存放了xen的网络初始化脚本。Red Hat Enterprise Linux 5 update如果安装了xen包,便自带了这几个网络初始化脚本供用户选择[root@dhcp-0-122 xen]# ls scripts/network-*scripts/network-bridge scripts/network-nat scripts/network-route[root@dhcp-0-122 xen]#我们看下xend-config.sxp这个配置文件[root@dhcp-0-122 xen]# cat xend-config.sxp grep -v "#"(xend-unix-server yes)(xend-unix-path /var/lib/xend/xend-socket)(xend-relocation-hosts-allow '^localhost$ ^localhost\\.localdomain$')(network-script network-bridge)(vif-script vif-bridge)(dom0-min-mem 256)(dom0-cpus 0)(vncpasswd '')[root@dhcp-0-122 xen]#脚本调用了network-bridge这个脚本。我们要做的就是改成调用我们自己写的初始化脚本。我们创建一个新脚本[root@dhcp-0-122 xen]# vim /etc/xen/scripts/network-custom内容如下#!/bin/bashbrctl addbr mybr0ifconfig mybr0 upifconfig mybr0 192.168.0.1添加脚本可执行的权限[root@dhcp-0-122 xen]# chmod 755 /etc/xen/scripts/network-custom.sh[root@dhcp-0-122 xen]#修改xend-config.sxp(network-script network-bridge) 为 (network-script network-custom)这样自己做的私有桥就不会因为物理机重启而消失了。但是这样有一个不足:大家重启物理机后,查看下网络情况:[root@dhcp-0-122 ~]# ifconfigeth0 Link encap:Ethernet HWaddr 00:18:8B:0E:32:24inet addr:10.66.0.122 Bcast:10.66.1.255 Mask:255.255.254.0inet6 addr: fe80::218:8bff:fe0e:3224/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:182 errors:0 dropped:0 overruns:0 frame:0TX packets:222 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:32794 (32.0 KiB) TX bytes:35161 (34.3 KiB)Interrupt:16lo Link encap:Local Loopbackinet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:1534 errors:0 dropped:0 overruns:0 frame:0TX packets:1534 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:4559456 (4.3 MiB) TX bytes:4559456 (4.3 MiB)mybr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:27 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:10130 (9.8 KiB)virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0inet6 addr: fe80::200:ff:fe00:0/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:45 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 b) TX bytes:10084 (9.8 KiB)[root@dhcp-0-122 ~]#xenbr0这个桥接到物理网卡peth0的桥不见了!怎么办?在xend-config.sxp里面多加一个(network-script network-bridge)吗?这样是没用的。xend只会读取第一个解析到的network-script。但是,我们可以这么做,使得我们的network-custom脚本既创建一个私有桥,又保留了network-bridge脚本的功能。我们重新编辑/etc/xen/scripts/network-custom修改成#!/bin/bash. /etc/xen/scripts/network-bridgebrctl addbr mybr0ifconfig mybr0 upifconfig mybr0 192.168.0.1这样就可以了。

相关信息

· 字符串hash算法比较

· Linux操作系统下一款比较易用的截图工具

· 如何在ASP中使用mySQL

· HtmlTextWriter和相关的枚举类型








....

100038 94084