1. 如何实现虚拟机linux和主机之间文本的复制和粘贴
我们经常在虚拟机平台下的linux shell内执行命令如编译或运行某些程序时出错,这时想把错误的代码或运行情况复制到windows平台下粘贴到网上论坛内求助。但直接在虚拟机下复制shell内的字符,在windows环境下是粘贴不了的,如何使在windows环境下能够复制粘贴虚拟机内linux shell中的字符呢,我们可以通过三种办法解决这个问题。
一:通过ssh
这种方法需要虚拟机内的Linux安装ssh服务,默认是安装的。为确保sshd服务是开启的,redhat平台可通过shell下执行命令:redhat-config-services,在弹出的服务配置窗口中查看sshd服务是否已开启,若没有开启,勾上sshd选项,重起运行。若linux没有安装ssh服务,下载ssh包重新安装一下。
ssh服务运行后,在windows平台下下载ssh客户端程序安装,运行ssh客户端,点击quick connect,输入虚拟机linux的IP地址、用户名,端口默认22,提示输入密码后,即可登入linux ssh服务端。登入后可以在ssh客户端的shell环境下执行linux命令,就如同在linux本地执行一样,非常方便。ssh的shell环境下是可以复制当前shell内的字符的,并且可以在windows内粘贴。这样就可以将执行命令后的一些错误信息粘贴保存到文本文件或粘贴到论坛上求助。还有一点需注意的是,虚拟机下的linux和本地windows的ip地址应在同一网段,否则ssh客户端程序是连接不上linux的ssh服务端的。linux下设置网卡IP的命令是ifconfig,如:ifconfig eth0 192.168.0.2 ,eth0为虚拟机默认网卡名。
二:通过VMware Tools
虚拟机安装过VMware Tools后,如果正在运行 VMware Tools,你可以在虚拟机和主机的应用程序之间或者在两台虚拟机之间复制和粘贴文本。
要进行复制和粘贴:
1. 确保在你的虚拟机中已经安装并且启动 VMware Tools。
2. 使用来源窗口中的操作系统支持的方式在来源窗口中选择要复制的项目。
3. 更改光标和键盘控制到目标窗口,然后使用目标窗口中的操作系统支持的方式粘贴项目。
你只能复制和粘贴文本,而不是图片或者其他项目。
(如何使用VMware Tools可参考相关资料)
三:通过linux的命令重定向
将执行linux命令返回的信息重定向到一个文本文件,比如./gdbserver 192.168.0.1:1234hello>&info.txt ,"&"指输出所有信息。然后通过某种方式将包含输出信息的文本文件info.txt拷回到windows下就可以查看了。拷贝的方式很多,ssd、ftp、虚拟机自带的共享文件功能等等。这里举一个简单的例子,ssh本身就自带了一个文件传输功能,windows下ssh客户端连接上虚拟机服务端后,点击工具栏上的new file transfer window ,即可打开一个类似cuteftp的文件传输界面,在这里可以进行简单的文件上传和下载,比较方便。
这里提出了三种解决办法。若你经常使用ssh的话,无疑第一种办法是最简单方便的,而且ssh本身功能十分强大,同时提供了shell终端、文件传输等功能,操作比较方便,而且安全性高。若你不会使用ssh,第二种办法也较为方便,只是要注意每次在主机和虚拟机之间相互复制文本前都必须先运行vmware-toolbox ,方法是虚拟机安装vmware tools后直接在shell内执行:vmware-toolbox命令。第三种办法较适合于处理大量数据。如要进行复制和粘贴的文本较多时可以使用文件来传输。
注意:采用第二种方法时需要在终端输入vmware-toolbox.命令,如果出现Gtk-WARNING **: Failed to load mole "libgnomebreakpad.so": libgnomebreakpad.so: cannot open shared object file: No such file or directory错误,则是库文件的注册出了问题,请参考下一篇文章迷失的 "libgnomebreakpad.so" ==Failed to load mole "libgnomebreakpad.so"
2. 如何用VMware PowerCLI脚本来定制SRM恢复计划
虽然您还可以采用传统的(.bat)文件方式在SRM中执行命令行步骤,但是微软提供的.bat文件并不是专门创建的,为操作和调整vSphere平台而提供的扩展程序接口(API-advanced
programming
interface)。如果您的目的是为了制作更为精细的脚本,那么我们确实需要一种更为全面的脚本引擎工具。幸运地是,VMware即将整合微软的PowerShell环境,并推出专用于管理VMware虚拟环境的cmdlets命令接口。
首先下载并在恢复站点的SRM服务器上安装微软的PowerShell,然后下载和安装VMware
PowerCLI工具。
一旦我们完成了在恢复站点SRM服务器上PowerCLI的安装,就可以开始创建.PS脚本。并且在此之前,我们要通过PowerCLI配置相应的安全设置,并且确保可以通过PowerCLI登陆恢复站点的vCenter,这么做是非常有意义的。
在SRM论坛上,最常见的问题之一就是如何减少恢复进程中虚拟机对内存的占用量。这是一个实际上很常见的问题,因为通常情况下恢复站点的ESX服务器要相对差一些。例如,或许恢复站点的服务器物理内存数量要少于被保护的站点。通过使用PowerCLI,我们可以通过.PS脚本,在启动虚拟机之前自动调用减少虚拟机内存分配的进程。
通过使用PowerCLI,可以有很多种实现方法。您可以为每台虚拟机都创建一个.PS脚本来减少其内存占用。如下是一个实例,通过这个PS脚本可以完成对我命名为ctx01的虚拟机的处理。在脚本中,我使用了set-vm
cmdlet把恢复站点虚拟机的内存分配减少为1024MB。另外,–confirm:$false命令
用来在需要人工确认更改时,完成操作而无须等待。
例1
connect-viserver vc4nj.corp.com
--user corp\\administrator --password vmware
Set-VM ctx01 -MemoryMB
\"1024\" -Confirm:$FALSE
Disconnect-VIServer –Server vc4nj.corp.com
-Confirm:$FALSE
当然,为每台虚拟机都创建一个.PS脚本对管理员来说是非常沉重的负担,所以您可能更喜欢通过虚拟机名称来搜索和定位,并对多个虚拟机同时完成修改的操作方式。例如,在如下的.PS脚本中,get-vm
cmdlet 是用来查找所有以“ctx”文本开头的虚拟机,并把找到的虚拟机传递给set-vm命令。这个操作将对那些命名为ctx01,
ctx02,……等等的虚拟机内存分配做调整。
例2
connect-viserver vc4nj.corp.com
--user corp\\administrator --password vmware
get-vm ctx* | Set-VM -MemoryMB
\"1024\" -Confirm:$FALSE
Disconnect-VIServer –Server vc4nj.corp.com
-Confirm:$FALSE
更加精简的脚本方式是,并不指定特定的内存数量,而是通过检查虚拟机内存数量并设置在特定的条件下减少内存分配数量。
例如,假设我需要把分配给恢复的虚拟机的内存数量全部减少为原来的一半。如下的脚本就可以自动查询现在分配给虚拟机的内存数量,然后减少为50%。通过查找虚拟机名字中的ctx*字符串来定位并查询现在为虚拟机分配的内存数量,然后使用set-vm
cmdlet实现正确的设置。
例3
connect-viserver vc4nj.corp.com
--user corp\\administrator --password vmware
Foreach ($VM in Get-VM
ctx*){
$NewMemAmount = $VM.MemoryMB / 2
Set-VM $VM-MemoryMB
$NewMemAmount -Confirm:$FALSE
}
Disconnect-VIServer –Server vc4nj.corp.com
-Confirm:$FALSE
在我的环境中,最终采用了最后一种方法来控制分配给CTX虚拟机的内存。这里我想感谢来自英国的Al
Renouf,是他帮助我编写了最后一个例子中的脚本。或许您不知道Al是谁,他对PowerShell非常的熟悉,而且他的Virtu-Al
blo博客也非常值得一读。
在下一步中要完成的是,让这些PS文件可以被SRM调用。相比SRM直接调用这些.PS脚本的方式,我更喜欢创建一个.cmd/.bat文件,然后通过该文件在合适的时机调用。这种方式可以减少在编写命令脚本程序时的代码行。通过在.cmd/.bat文件中使用变量,我可以多次使用它来调用保存在SRM服务器上的.PS文件。
步骤1:创建一个可重定向的.bat文件
我第一次关注可重定向的.bat方式是在阅读一个博客(Carter
Shaklin\'s PowerCLI blog)中,那里讨论了如何在vCenter
Alarms中使用.PS脚本。
在Virtu-AL主页的帮助下,我创建了一个可以引用我的.PS1脚本的.bat文件。该脚本会加载微软的Powershell环境,同时启动PowerShell控制台文件(.psc1,该文件使得VMware
PowerCLI可以正常工作)。通过末尾的变量字符串“%1”,可以在同一个重定向的.bat文件中实现对所有.PS1文件的调用。
@echo
off
C:\\WINDOWS\\system32\\windowspowershell\\v1.0\\powershell.exe -psc
\"C:\\Program Files\\VMware\\Infrastructure\\vSphere PowerCLI\\vim.psc1\"
\"&
\'%1\'\"
步骤二:把.bat重定向文件和powercli.ps脚本拷贝到恢复站点的SRM服务器上
下一步是要完成把redirect.bat
和
.PS文件拷贝到恢复站点SRM服务器上。相对来说,您把这些文件拷贝到什么地方并不重要,只要您在脚本中正确地键入了文件路径,那么当您在恢复计划中键入命令并执行后,它们就会毫无差错地运行起来。