ssh
(SSH: Secure Shell Protocol)
安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。
KVM
kernel virtual module,KVM最大的好处就在于它是与Linux内核集成的。
作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以6个无与伦比的优势领先:更好的可用资源(流行度)、平台支持(支持更老的cpu)、可管理性、实施、动态迁移和性能基准。
可管理性:EMA在2009年度针对虚拟系统管理的研究结果表明:对于83%的企业来讲,在选择虚拟化技术过程中,管理是一项非常关键或者重要的因素。在对比Xen和KVM时,就可以看到Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区,比如Citrix、IBM、CA、Novell或者Platespin、Enomaly、Microsoft以及HP等。
实施:无论KVM是"第一类"还是"第二类",这都是语义上的概念。Xen的运行和管理都是在较低级别的(Ring 0)。甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、cpu指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。
KVM不支持动态迁移:过去在证明VMware ESX比Microsoft Hyper-V优越的最重要的一个观点也同样适用于Xen和KVM的比较,但是这是一个很大的问题。与KVM不同,Xen支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。KVM的固有属性决定了其肯定有宕机时间。(目前动态迁移中间会中断,1,2秒)
性能:大多数Xen和KVM性能基准的对比都表明Xen具有更好的处理性能(接近于本地处理),只有在磁盘I/O方面略逊于KVM。进一步来讲,独立测试表明随着工作负载的增加KVM的性能逐渐下降。通常情况下,在试图支持四个以上的客体虚拟机时就会崩溃。Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。
更加深入广泛的Xen与 KVM对比也将会表明Xen在虚拟网络支持、虚拟存储支持、安全增强、高可用性、容错处理、电源管理、HPC或者实时支持、虚拟cpu可扩展性、跨平台兼容性。虚拟机可移植性、虚拟应用设备市场以及已经建立起来的云服务社区等诸多方面都要比KVM优越。因此KVM只是在技术上比较与众不同,并且拥有几个不错的应用场景。但是作为企业级的服务器虚拟化技术,和Xen比起来,KVM尚有较大差距。
因为对虚拟机运行来讲KVM可以是一个更快的解决方案。KVM需要Pacifica(AMD)或者Vanderpool(Intel)虚拟化cpu这一事实现在已经不能成为KVM发展的限制条件,因为当前大多数服务器cpu都有这些处理器。
KVM 对决Xen
KVM 的缺点在于只能运行在Linux上,不过它也有一些优点,比如说具有内存管理特性。与Xen 一 样,KVM 具有可扩展的巨大潜力(又一个继承而来的Linux特点)。
同Xen 一样,KVM 的电源管理,即所谓的绿色特性可能有所欠缺,并且它的 内存支持较弱。Xen 具有更好的管理特性,显然可以运行在更多的平台上。此外,Xen 还支持准虚拟化。所谓准虚拟化是一种创建客户操作系统与硬件之间的代 理技术。
虽然KVM 是基于内核而创建,但是Xen 也被Linux内核支持。
Xen是最老的开源虚拟化技术,已经使用了大概五年。Xen Version 3.0作出了许多重要的改进。虚拟机能启动某个Xen内核。因此,未经修改的操作系统也能运行在它们自己的内核上(如Windows)。Xen最重要的优势在于半虚拟化,这种技术能让虚拟机有效运行而不需要仿真(因此子机能感知到hypervisor,并能有效运行而不需要模拟虚拟硬件)。最大的缺陷在于Xen是款复杂的产品,难以与Linux内核集成。
KVM的目的是提供能宿主在Linux内核本身的虚拟化技术。KVM只是一个单独模块,必须载入Linux内核。载入后可以创建虚拟机。不过KVM虚拟化还没有Xen那么高级,也不提供如半虚拟化这样的功能。因此KVM hypervisor必须模拟KVM虚拟机产生的说明。要获取该功能,你需要购买额外的性能价格。
socat
socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的通道。socat的地址類型很 多,有ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openssl,等等。看一個例子
c:/>socat - tcp:192.168.1.18:80
這個命令等同於 nc 192.168.1.18 80。 socat裡面,必須有兩個流,所以第一個參數-代表標準的輸入輸出,第二個流連接到192.168.1.18的80端口。再看一個反向telnet的例子:
on server:
c:/>socat tcp-listen:23 exec:cmd,pty,stderr
這個命名把cmd綁定到端口23,同時把cmd的Stderr重定向到stdout。
on client:
c:/>socat readline tcp:server:23
連接到服務器的23端口,即可獲得一個cmd shell。readline是gnu的命令行編輯器,具有歷史功能。
再看文件傳遞的例子。nc也經常用來傳遞文件,但是nc有一個缺點,就是不知道文件什麼時候傳完了,一般要用Ctrl+c來終止,或者估計一個時間,用-w參數來讓他自動終止。用socat就不用這麼麻煩了:
on host 1:
c:/>socat -u open:myfile.exe,binary tcp-listen:999
on host 2:
c:/>socat -u tcp:host1:999 open:myfile.exe,create,binary
這個命令把文件myfile.exe用二進制的方式,從host 1 傳到host 2。-u 表示數據單向流動,從第一個參數到第二個參數,-U表示從第二個到第一個。文件傳完了,自動退出。
再來一個大家喜歡用的例子。在一個NAT環境,如何從外部連接到內部的一個端口呢?只要能夠在內部運行socat就可以了。
外部:
c:/>socat tcp-listen:1234 tcp-listen:3389
內部:
c:/>socat tcp:outerhost:1234 tcp:192.168.12.34:3389
這樣,你外部機器上的3389就影射在內部網192.168.12.34的3389端口上。
socat還具有一個獨特的讀寫分流功能,比如:
c:/>socat open:read.txt!!open:write.txt,append tcp-listen:80,reuseaddr,fork
這個命令實現一個假的web server,客戶端連過來之後,就把read.txt裡面的內容發過去,同時把客戶的數據保存到write.txt裡面。”!!”符號用戶合併讀寫流,前面的用於讀,後面的用於
Dnsmasq
Dnsmasq 是轻量级,容易配置, DNS 运输业者和 DHCP 服务器。 它被设计提供DNS和任意地DHCP,给一个小网络。 它可能服务不在全球性DNS地方机器的名字。 DHCP服务器用DNS服务器集成并且允许机器以DHCP分配的地址出现于DNS以名字配置了在每个主人或在一个中央配置文件。 Dnsmasq支持静态和动态DHCP租约和 BOOTP 为diskless机器网络孕穗。
Dnsmasq在家是被瞄准的网络使用 NAT 并且连接到互联网通过a 调制解调器有线调制解调器或 ADSL 连接,但是一个好选择为所有小网络,配置低资源用途和舒适是重要的。
支持的平台包括 Linux (与glibc和uclibc), *BSD 并且 Mac OS x.
Dnsmasq提供以下特点:
机器的DNS配置在之后 防火墙 是简单的,并且不取决于ISP的DNS服务器的细节
设法做DNS查寻的客户,当互联网的一个调制解调器链接下降时将立刻计时。
Dnsmasq将服务名字从/etc/hosts文件(或代替)。 如果地方机器的名字那里,则他们在每个机器可能所有演讲,无需必须维护/etc/hosts。
联合DHCP服务器支持静态和动态DHCP租约和多个网络和IP范围。 它横跨BOOTP中转运作并且支持DHCP选择包括RFC 3397 DNS查寻名单。
DHCP配置的机器有在DNS自动地包括的他们的名字和名字装于罐中指定由每个机器或在中心通过同名字联系在一起a 机器位址 在dnsmasq设置文件。
Dnsmasq在上游服务器贮藏互联网地址(A纪录和AAAA纪录)和,减少装载和改进表现的演讲对名字绘图(PTR纪录) (特别是在调制解调器连接)。
可以配置Dnsmasq自动地拾起它的在上游nameservers地址从ppp或dhcp配置。 如果它改变,它将自动地再装这信息。 这种设施将是特别的好处对Linux防火墙发行的维护员,因为它允许dns配置使成为自动。
在 IPv6-使能箱子, dnsmasq可能与在上游服务器谈话通过IPv6和通过IPv6提供DNS服务。 在双重堆积(IPv4 并且IPv6)箱子它谈两个协议,并且可能甚而作为IPv6对IPv4或IPv4对IPv6运输业者。
可以配置Dnsmasq送询问为某些领域到处理仅那些领域的在上游服务器。 这使综合化与私有DNS系统容易。
Dnsmasq支持 MX纪录 并且能配置退回MX纪录为任一或所有的地方机器。
uml-utilities (该工具包含建立虚拟网络设备的工具)
bridge-utils (在管理端装)
LVM2
LVM是Logical Volume Manager(逻辑卷管理)的简写,而LVM2是第二版。与传统的磁盘分区相比,LVM为计算机提供了更高城市的磁盘存储方式。在LVM管理下的存储卷可以按需要随时改变大小和删除(有点类似Windows的动态磁盘)。
逻辑卷管理(LVM)指系统将物理卷管理抽象到更高的层次,常常会形成更简单的管理模式。通过使用 LVM,所有物理磁盘和分区,无论它们的大小和分布方式如何,都被抽象为单一存储(single storage)源。
建立比最大的磁盘还大的文件系统并不是这种高级存储管理方法的惟一用途。还可以使用 LVM 完成以下任务:
在磁盘池中添加磁盘和分区,对现有的文件系统进行在线扩展
用一个 160GB 磁盘替换两个 80GB 磁盘,而不需要让系统离线,也不需要在磁盘之间手工转移数据
当存储空间超过所需的空间量时,从池中去除磁盘,从而缩小文件系统
使用快照(snapshot)执行一致的备份(本文后面会进一步讨论)
Expect
我们通过Shell可以实现简单的控制流功能,如:循环、判断等。但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet服务器等进行交互的功能。而Expect就使用来实现这种功能的工具。
Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年
开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software
suite for automating interactive tools)。使用它系统管理员
的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。
Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。
python-pexpect
python的pexpect库用于自动输入密码
kpartx
用 virt-manager,virsh 或其他工具可以选择把 KVM 或 Xen HVM 的虚拟机安装在一个镜像文件上,虽然因为性能的关系这种方式不推荐在生产环境使用,但是因为用起来非常简便,所以 VPSee 平时做实验或测试的时候会经常用这种方式存储虚拟机。 一个镜像文件里可能包含多个分区,所以不能简单 mount -o loop centos.img,我们需要把 centos.img 里面包含的每个分区映射出来后在一个一个挂载,所以需要一个工具来读分区表,kpartx 就是这样一个在特定设备上读取分区表并为每个分区创建映射的工具,-a 参数表示加入分区映射;-v 参数表示完成后输出结果