本帖最后由 zhouzh 于 2011-7-2 16:44 编辑
声明:本人是vBox菜鸟级用户,还没学到这个地方呢,翻译此部分是由于卡饭 豆先生 的指导,说是前边的部分基本上都可以找到中文资料了,有哪里翻译不合适的地方,请各位多提宝贵意见。
第九章9.5--9.10(未完待续)
9.5 CPU 热插拔 运行现在服务器操作系统的虚拟机,VirtualBox 支持CPU热插拔。然而,在一个物理计算机上,这意味着可以在计算机运行时添加或移除一块CPU,当虚拟机运行时,VirtualBox支持添加和移除虚拟CPU。 CPU热插拔只在支持它的客户机操作系统上工作。到现在为止,这仅应用于Linux and Windows Server 2008×64 Data Center版本。Windows只支持热添加而Linux支持热添加和热移除,为了在超过8个CPU的系统上的使用该功能,需要一个64位的Linux客户机。 此时,CPU热插拔需要使用VboxManage命令行接口。首先,需要在虚拟机上使能热插拔。 VBoxManage modifyvm "VM name" --cpuhotplug on 然后,-cpus选项指定CPU的最大数量,虚拟机可以有: VBoxManage modifyvm "VM name" --cpus 8 当VM关闭时,你可以通过使用vm-plugcpu和-unplugcpu子命令添加和移除虚拟CPU,把虚拟CPU的数量作为参数,像这样: VBoxManage modifyvm "VM name" --plugcpu 3 VBoxManage modifyvm "VM name" --unplugcpu 3 注意:当CPU为0时不能再移除。 然而当VM正在运行时,CPU相反可以使用controlvm plugcpu/unplugcpu命令添加。 VBoxManage controlvm "VM name" plugcpu 3 VBoxManage controlvm "VM name" unplugcpu 3 详见8.7节,VboxManage modifyvm,109页,以及8.11节,VboxManage controlvm,117页。 Linux客户机,一下应用:当CPU仍在使用的时候防止弹出,它只能在之前的客户机下弹出。TheLinux Guest Additions包括接受热移除事件以及弹出CPU的服务。同时,在CPU添加到VM时,它不能被Linux使用。如果安装好它,Linux Guest Additions服务照顾它。如果没有CPU,那么使用下面的命令开始: echo 1 > /sys/devices/system/cpu/cpu<id>/online
9.6 高级显示配置 9.6.1自定义VESA分辨率 除了标准VESA分辨率,VirtualBox VESA BIOS允许你添加到16个自定义视频模式,这些模式将报告给客户机操作系统。当使用带有VirtualBox Guest Additions的Windows 客户机时,将使用一个自定义的图形驱动程序代替VESA解决方案,因此这个信息不能用。 使用额外数据设备为每个VM配置另外的视频模式。这个额外数据项叫做CustomVideoMode<x>,x表示从1到16的数字。请注意这些模式将从1到任一个以下未定义的数字读出。下面的例子添加了一个视频模式,这相当于许多笔记本电脑的本机显示分辨率: VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16" 自定义视频模式的VESA模式IDs开始于0x160。为了使用上述自定义视频模式,Linux提供下面的命令行: vga = 0x200 | 0x160 vga = 864 对于带有VirtualBoxGuest Additions的客户机操作系统,通过使用视频模式提示功能设置一个自定义视频模式。
9.6.2配置使用图形前端客户机的最大分辨率 当安装了带有Guest Additions的客户机系统开始使用图形前端时(正常VirtualBox的应用程序),他们不允许使用比主机屏幕更大的屏幕分辨率,除非用户通过拖动窗口手动的重新调整屏幕大小,切换到全屏或者无缝模式或者使用VBoxManage发送视频模式提示。这种行为是大多数用户都希望的,但如果你有不同的需要,它有可能从以下命令行的命令之一改变它: VBoxManage setextradata global GUI/MaxGuestResolution any 将删除所有在客户机分辨率上的限制。 VBoxManagesetextradata global GUI/MaxGuestResolution >width,height< 手动指定最大分辨率。 VBoxManage setextradata global GUI/MaxGuestResolution auto 恢复默认设置。注意,这些设置应用与全球所有的客户机系统,不只对一个计算机。
9.7 高级存储配置 9.7.1从客户机上使用原主机硬盘 从1.4版本开始,作为使用虚拟磁盘映像的一种选择(见5节所述,虚拟存储,71页),virtualbox也能代表整个物理硬盘或选择分区以及虚拟机的虚拟磁盘。 有了VirtualBox,这种类型的访问称为“原硬盘访问”;它允许客户机操作系统访问其虚拟硬盘而不用通过主机OS文件系统。图像文件和原磁盘的实际性能的差异很大,取决于主机文件系统的开销,是否使用动态增长图像和主机Os caching 策略。这种caching直接影响了其他方面,如失效行为,即在主机OS崩溃之前虚拟磁盘是否包含所有数据。在此请求主机OS文档的详细信息。、 警告:原硬盘访问仅限专家用户。不正确使用或超时配置的使用能够导致物理磁盘上数据的全部丢失。更重要的是,不要尝试在客户机上启动分离当前正在运行的主机操作系统。这将导致严重的数据损坏。 原始硬盘访问——代表整个磁盘和单独分区——作为VMDK格式支持的一部分实施。因此,你将需要创建一个特殊的VDMK镜像文件,该文件定义了数据将存储在哪里。在创建这样一个VMDK镜像之后,你可以像常规的虚拟磁盘图像一样使用它。例如,你可以使用Virtual Media Manager(5.3节,The Virtual Media Manager,74页)或者VboxManage把图像分配给虚拟机。
9.7.1.1访问整个物理硬盘 当变量是最简单的方式建立时,你必须知道这将给客户机操作系统直接和全访问整个物理磁盘。如果你的主机操作系统也从磁盘中启动,请特别注意不要在客户机上访问分区。好的方面是,物理磁盘可以任意的方式重新被分区,而不用重新创建已分配给原磁盘的镜像文件。 创建一个代表整个物理硬盘(不包括任何真实数据,由于这些数据将全部存储在物理磁盘上)的镜像,在Linux主机上,使用命令: VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda 创建了镜像/path/to/file.vmdk(必须是绝对的),并且所有数据将从/dev/sda中读和写。 在Windows主机上,代替以上的设备规范,使用例如[url=]\\.\PhysicalDrive0[/url]。在MacOS X主机上,代替以上的设备规范,使用例如/dev/disk1。注意在OS X中,如果没有安装声音,你只能访问整个磁盘。 创建镜像需要读/写访问给定的设备。当使用虚拟机镜像时,稍后也需要读/写访问。 就像使用常规磁盘镜像一样,它不会自动连到最近创建的虚拟机镜像。这可以做到,例如: VBoxManage storageattach WindowsXP --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk 这时通过选定的虚拟机特定的物理磁盘启动。
9.7.1.2 访问单个物理硬盘分区 这种“原始分区支持”与上面描述的“全硬盘”访问非常相似。然而,在这种情况下,每个分区信息将存储在VMDK镜像中,例如,你可以在虚拟硬盘上安装不同的启动装载,在不影响主机分区信息的情况下。而客户机可以看到所有物理磁盘上存在的分区,从分区读出访问将被过滤掉,因为分区不允许访问,只能为零,并且忽略所有的写访问。 为了创建一个基于原区分支持的特殊镜像(包括小量数据,像已提及的),在Linux主机上,使用命令 VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5 正像你看到的一样,该命令和“全硬盘”访问一样。除了添加的-partitions参数。该例子将创建镜像/path/to/file.vmdk(它也必须是绝对的),并且/dev/sda的分区1和5可被客户机访问。 VirtualBox使用与Linux主机一样的分区号。因此,上面例子给出的数字可以分别参考第一主分区和扩展分区中的第一逻辑驱动。 在Windows主机上,代替以上的设备规范,使用例如[url=]\\.\PhysicalDrive0[/url]。在Mac OS X主机上,代替以上的设备规范,使用例如/dev/disk1。注意在OS X上,你只能使用没有安装好的分区(首先退出相应声音)。分区数在Linux,Windows和Mac OS X 主机上是一样的。 分区列表的数量可从输出得到 VBoxManage internalcommands listpartitions -rawdisk /dev/sda 输出列出了分区的类型和大小,为了给用户足够的信息来判别给客户机的分区是必须的。 访问单个分区的镜像对于特定主机磁盘的安装是明确的。你不能将这些镜像转移到其他主机;同时,无论何时主机分区改变,镜像必须被重新创建。 创建镜像需要读/写访问给定的设备。当使用虚拟机镜像时,稍后也需要读/写访问。如果这些是不可行的,那么使用一个用于原分区访问的特殊变量(当前仅在Linux主机上可用),来避免当前用户访问整个磁盘。为了创建这样一个镜像,使用 VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5 -relative 当在虚拟机上使用时,镜像将不会考虑整个磁盘,而是仅考虑单个分区(在这个例子中/dev/sda1 and /dev/sda5)。因而,读/写访问仅在受影响的分区被需要,而不是整个磁盘。然而在创建过程中,对于整个磁盘的只读访问需要获得分区信息。 在某些配置中,可能需要改变已创建镜像的MBR代码,即使用在主机上的Linux启动加载程序替换为其他启动加载程序。例如这允许客户机直接启动Windows,而主机从“相同”的磁盘启动Linux。出于这个目的,提供了-mbr参数。它指出一个文件名,从中读出MBR代码。分区表一点也不用改,因此可以使用MBR文件,该文件来自整个不同分区的系统。例如 VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -partitions 1,5 -mbr winxp.mbr 修改的MBR将存储在镜像内部,而不是主机磁盘中。 这种创建的镜像通常可以连接到VM配置中的存储控制器上。
9.7.2 配置硬盘供应商产品数据(VPD)VirtualBox供应商的虚拟硬盘产品数据报告由硬盘系列号,固件版本和型号组成。使用下列命令可以改变硬盘系列号,固件版本和型号: VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber""serial" VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision""firmware" VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber""model" 系列号是20字节的字符串,固件版本是8字节的字符串,型号是40字节的字符串。代替端口0(指第一端口)指定目标SATA硬盘端口。 在供应商的产品数据报告中,对CD/DVD驱动需要另外三个参数: VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIVendorId""vendor" VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIProductId""product" VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/Config/Port0/ATAPIRevision""revision" 版本是8字节的字符串,产品id是16字节的字符串,版本是4字节字符串。代替端口0(指第一端口)指定目标SATA硬盘端口。
9.7.3 通过内部网络访问iSCSI目标
作为一个实验性的特征,VirtualBox允许访问一个正运行在虚拟机中的iSCSI目标,该目标被配置为使用内部网络模式。请见5.10章节,82页, iSCSI服务器;6.5章节,88页,内部网络; 8.16章节,119页附加信息,VBoxManage附加存储。 访问IP栈时,内部网络必须在虚拟机中配置为访问iSCSI目标。一个免费的静态IP和MAC位址不用通过其他虚拟机选择。在下面的例子中,根据用户自己需要命名适应的虚拟机的名称、MAC地址、IP配置和内部网络名称(“MYIntNet”)。下面七个命令必须首先使用: VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/Trusted 1 VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/Config/MAC 08:00:27:01:02:0f VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/Config/IP 10.0.9.1 VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/Config/Netmask 255.255.255.0 VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/LUN#0/Driver IntNet VBoxManage setextradata "VM name"VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/Network MyIntNet VBoxManage setextradata "VMname" VBoxInternal/Devices/IntNetIP/0/LUN#0/Config/IsService 1 最后iSCSI磁盘必须附有——intnet选项,告诉启动程序器使用内部网络: VBoxManage storageattach ... --medium iscsi --server 10.0.9.30--target iqn.2008-12.com.sun:sampletarget –intnet 与“常规”iSCSI安装相比,目标的IP地址必须制定为数字IP地址,就像内部网络没有DNS分解器一样。 在虚拟机上电之前,应该启动带有iSCSI目标的虚拟机。如果iSCSI目标没有上电之前,使用iSCSI磁盘的虚拟机就已经启动,需要多达200秒检查到这种情况。虚拟机将上电失败。
9.8 在Solaris主机上向多与120个虚拟机发送
为了防止用户启动时每次处理超过120个虚拟机,Solaris主机有固定数量的IPC指示灯IDs。当试图向较多虚拟机发送时,将提示“不能创建IPC指示灯”错误。 为了运行较多的虚拟机,需要启动VBoxSVC指示灯ID限制过程。执行词根prctl命令显示如下。用ps 列表命令可以获得VBoxSVC的过程ID。 prctl -r -n project.max-sem-ids -v 2048 <pid-of-VBoxSVC>
9.9 旧版使用串口命令在1.4版本中,VirtualBox对虚拟串口提供支持,此时,设置VBoxManage setextradata状态十分复杂的。因此1.5版本中,设置串口的那种方法不再需要,被废弃了。为了设置虚拟串口,使用方法见3.9章节描述,串口,48页。 注释:为了向后兼容,setexttradata状态描述仍然采用旧版本的用户手册,配置串口使用新的方法。作为一个结论,如果配置串口的新方法无法工作,且虚拟机没有旧版本配置数据问题,确保虚拟机如下方法仍然有效。 |
旧版串口配置序列使用下面6条命令: VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/Config/IRQ" 4 VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/Config/IOBase" 0x3f8 VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/LUN#0/Driver" Char VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Driver" NamedPipe VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Config/Location" "\\.\pipe\vboxCOM1" VBoxManage setextradata "VM name" "VBoxInternal/Devices/serial/0/LUN#0/AttachedDriver/Config/IsServer" 1 这里设置了一个串口,在客户机里默认设置为COM1(IRQ4,I/O地址0x3f8),因为采用Windows命名管道语法,位置设置假设该配置用在一个Windows主机上。注意Windows主机的命名管道必须以[url=]\\.pipe\[/url]开始。在Linux相同配置设置申请中,除位置路径名选择比较自由外。局部域名套接字可以放置在任何地方,提供正在运行VirtualBox的用户允许在目录中创建一个新的文件。上面最后的命令定义VirtualBox作为一个服务器,也就是,它自身创建命名管道,代替链接一个已经存在的。 |