电脑的启动流程
如果对使用电脑遇到的问题做一个统计的话,我想装系统一定会是前十。笔者使用电脑这么多年,风风雨雨中自己或帮别人装了各种系统几十上百次。不管操作系统怎么更新换代,不管是DOS、Windows、Linux,不管是图形界面还是命令行界面,大家都面临一个基础性问题——装系统。
所以,我决定在此将装系统的那些事儿汇总一下,不管你是安装什么系统或遇到什么问题或解决了问题但想了解原因,相信在这里大多能找到答案。
都说“授人以鱼,不如授人以渔”,在开始讲诉各种系统的安装方式前,我先要讲一下电脑的启动流程
cd C:/dir /a
如下图
若选择当前分区系统,则进行加载系统内核,加载硬件初始化,启动操作。若选择其他分区系统,则跳转到对应分区的引导扇区重复选择引导操作。Windows自带的ntldr支持引导Windows系统,若要在Windows下引导Linux系统,需要对ntldr再次跳转到支持Linux启动的高级引导程序如Grub for DOS,这在后面实际案例中会讲解。另外在windows命令行中输入msconfig,也可以打开查看当前boot.ini的启动内容,如下图Powered by WPeMatico
Posted in 系统运维Powered by WPeMatico
Posted in 系统运维服务分为本地服务和网络服务
配置较多的是为了网络服务
常见的网络服务有:
/etc/rc.d/init.d/下保存着许多服务对应的脚本
service xxxx start|stop|restart|status
在/etc/rc%d.d/下保存着许多链接 链接到之前所说的脚本
文件名的格式如下[k|p]xxnnnnnn
]例如p03network表示在第三个启动network服务 如果k开头 则表示不启动此服务
可以通过chkconfig命令进行设置服务开机是否自动运行
chkconfig network [on|off]
chkconfig –list
其控制一些简单的不常用的服务
区别于service服务这些服务一般不常驻在后台
对于这些服务请求,都由xinetd来代理
CentOS 6默认不会安装xinetd
作者:lfj200411 发表于2013-9-13 16:48:29 原文链接阅读:32 评论:0 查看评论Powered by WPeMatico
Posted in 系统运维lsof命令详解:lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大.一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”
sof指令的用法如下:
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c abc 显示abc进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 –> IPv4 or IPv6
protocol –> TCP or UDP
hostname –> Internet host name
hostaddr –> IPv4位置
service –> /etc/service中的 service name (可以不只一个)
port –> 端口号 (可以不只一个)
例子: TCP:25 – TCP and port 25
@1.2.3.4 – Internet IPv4 host address 1.2.3.4
tcp@www.linuxidc.com:ftp – TCP protocol hosthaha.ks.edu.tw service name:ftp
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
例子: lsof -i tcp@www.linuxidc.com:ftp -n
lsof -p 12 看进程号为12的进程打开了哪些文件
lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断信号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@www.linuxidc.com:ftp -r
lsof -s 列出打开文件的大小,如果没有大小,则留下空白
lsof -u username 以UID,列出打开的文件
fuser 命令
用途
使用文件或文件结构识别进程。
语法
fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]文件 …
描述
此 fuser 命令列出了本地进程的进程号,那些本地进程使用File 参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。
每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c 将此文件作为当前目录使用。
e 将此文件作为程序的可执行对象使用。
r 将此文件作为根目录使用。
s 将此文件作为共享库(或其它可装载对象)使用。
进程号被写入标准输出(在进程号之间有空格的行中)。一个换行符被写入标准错误(在每个文件操作数的最后一个输出之后)。其他所有输出被写入标准错误。
此 fuser 命令不会检测有 mmap 区域的进程,其中相关的文件描述符已从此被关闭。
标志
-c 包含 File的文件系统中关于任何打开的文件的报告。
-d 暗示使用了 -c 和 -x 标志。关于任何与文件系统(自父目录删除的)无链接的打开文件的报告。当与 -V 标志一起使用时,它也会报告被删除文件的节点号和大小。
-f 仅对文件的打开实例报告。
-k 将 SIGKILL 信号发送到每个本地进程。仅有 root 用户能终止另一用户的进程。
-u 为进程号后圆括号中的本地进程提供登录名。
-V 提供详细输出。
-x 与 -c 或 -f 连用,报告除标准 fuser 输出以外的可执行的和可载入的对象。
示例
要列出使用 /etc/passwd 文件的本地进程的进程号,请输入:
fuser /etc/passwd要列出使用 /etc/filesystems 文件的进程的进程号和用户登录名,请输入:
fuser -u /etc/filesystems要终止使用给定文件系统的所有进程,请输入:
fuser -k -x -u -c /dev/hd1 或者
fuser -kxuc /home任一命令都列出了进程号和用户名,然后终止每个正在使用 /dev/hd1 (/home) 文件系统的进程。仅有 root 用户能终止属于另一用户的进程。如果您正在试图卸下 /dev/hd1 文件系统,而一个正在访问 /dev/hd1 文件系统的进程不允许这样,您可能希望使用此命令。
要列出正在使用已从给定文件系统删除的文件的全部进程,请输入:
fuser -d /usr文件
/dev/kmem 用于系统映像。
/dev/mem 也用于系统映像
名称
pgrep, pkill – 查找或者发信号给进程通过名称和其它属性。
语法
pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]
pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]
说明
pgrep程序检查在系统的中活动进程,报告进程属性匹配命令行上指定条件的进程的ID。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。例如,
pgrep -G other,daemon
匹配真实组ID是other或者是daemon的进程。如果多个条件被指派,这些匹配条件按逻辑与”AND”规则运算。例如,
pgrep -G other,daemon -U root,daemon
匹配进程它的属性是:
(真实的组ID是other或者是daemon) 与 (真实的用户ID是root或者是daemon)
pkill函数和pgrep相同,除了匹配的进程被信号通知就像用kill(1)替代了pgrep的进程ID的输出。一个信号名称或者数字可以作为pkill的第一个命令行选项。
选项
支持下面的选项:The following options are supported:
-c ctidlist 仅匹配列表中列出的ID的进程。
-d delim 指定每一个匹配的进程ID之间分割字符串。如果没有 -d 选项指定,默认的是新行字符。-d 选项仅在pgrep命令中有效。
-f正则表达式模式将执行与完全进程参数字符串 (从/proc/nnnnn/psinfo文件的pr_psargs字段获得)匹配。如果没有 -f 选项,表达式仅对执行文件名称(从/proc/nnnnn/psinfo文件pr_fname字段获得)匹配。
-g pgrplist仅匹配进程组ID在给定列表中的进程。如果组0包括在列表中,这个被解释为pgrep或者pkill进程的组ID。
-G gidlist仅匹配真实组ID在给定列表中的进程。每一个组ID可以使用组名称或者数字的组ID指定。
-J projidlist匹配项目ID在给定列表中的进程。每一个项目ID可以使用项目的名称或者数字项目ID来指定。
-l长格式输出。输出每一个匹配进程的名称连同进程ID。进程名称从pr_psargs 或者 pr_fname字段获得,依赖于-f选项是否指定。-l选项仅在pgrep命令中有效。
-n匹配最新(最近生成的)符合所有其它匹配条件的进程。不能和-o选项一起使用。
-o匹配最旧(最早生成的)符合所有其它匹配条件的进程。不能和-n选项一起使用。
-P ppidlist 仅匹配给定列表中父进程ID的进程。
-s sidlist 仅匹配进程会话ID在给定列表中的进程。如果ID 0在列表中,这个解释为pgrep或者pikill进程的会话ID。
-t termlist 仅匹配与给定列表中终端关联的进程。每一个终端指定为在/dev中终端设备路径名称的后缀。例如term/a 或者 pts/0。
-T taskidlist 仅匹配在给定列表中任务ID的进程。如果ID 0包括在列表中,这个解释为pgrep或者pikill进程的会话ID。
-u euidlist 仅匹配有效用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
-U uidlist 仅匹配真实的用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
-v 反向匹配。匹配所有的进程除了符合匹配条件的。
-x 仅认为进程其参数字符串或者执行文件名称正确匹配规定模式是匹配的进程。模式被认为是准确的当所有在进程参数字符串或者可执行文件名称的字符匹配模式。
-z zoneidlist 仅匹配区域ID在给定列表中的进程。每一个区域ID可以使用一个区域名称或者一个数字的区域ID指定。这个选项仅在全局区域中执行有效。如果pkill程序用来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。
-signal 指定发往每一个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第一个选项有效。信号可以是在signal.h中定义的没有SIG前缀的一个符号名字,也可是一个相应的信号数值。
操作
支持如下操作:
pattern
指定一个扩展正则表达式(Extended Regular Expression (ERE))模式来匹配可执行文件名称或者完整的进程参数字符串。ERE语法的完整描述参看regex(5)。
例子
例子1 获得一个进程ID
获得sendmail的进程ID:
example% pgrep -x -u root sendmail
283
例子2 终止一个进程
终止最近生成的xterm:
example% pkill -n xterm
Exit Status
如下退出值被返回:
0 一个或者多个进程被匹配。
1 没有进程被匹配。
2 指定了无效的命令行参数。
3 出现一个致命的错误。
Powered by WPeMatico
Posted in 系统运维一.应用场景
a.当我们需要在多台电脑安装同一个软件,并且这个软件很大,下载需要很长时间时
b.需要安装软件的ubuntu不能上网
二.离线安装包的制作
2.1.通过如下指令下载XXXX软件所需要的deb包
$ sudo apt-get -d install XXXXX
执行完上述指令后,XXXX软件的安装包就下载到了/var/cache/apt/archives目录下
2.2.生成依赖关系
1.根目录下新建一个文件夹
$
sudo mkdir offlinePackage
2.将下载的deb包拷贝到上述新建的文件夹下
$ sudo cp -r /var/cache/apt/archives /offlinePackage
3.修改文件夹的权限,可读可写可执行
$ sudo chmod 777 -R /offlinPackage/
4.建立deb包的依赖关系
$ sudo dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz
如果出现错误:sudo: dpkg-scanpackages: command not found
则需要安装dpkg-dev工具:
$ sudo apt-get install dpkg-dev
5.将生成的Packages.gz包复制到和deb同目录下
$ sudo cp /offlinePackage/Packages.gz /offlinePackage/archives/Packages.gz
2.3.打包成压缩包,以备后用
$ tar cvzf offlinePackage.tar.gz offlinePackage/
保存offlinePackage.tar.gz文件到U盘或服务器
三.在另外一台Ubuntu上离线安装
1.插入U盘或光盘,将offlinePackage.tar.gz复制到根目录下,解压
$ sudo tar -xvf offlinePackage.tar.gz
2.将安装包所在和源路径添加到系统源source.list
$ sudo vi /etc/apt/sources.list
deb file:///offlinePackage archives/
然后将所有的其他deb全部注销掉(#)
注意:我们在添加之前可以先将原来的源备份
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.back
以备以后使用
3. 更新系统源
$ sudo apt-get update
4.离线安装
此时,在没有网络的情况下,我们就可以安装我们之间下载的XXXX软件了
$ sudo apt-get install XXXXX
注意:
兼容性问题,如果我们制作安装包时,用的是64位的ubuntu,那么该离线包只能在其他64位系统上安装。
有些软件对ubuntu server和ubuntu desktop版也不兼容。总之,在什么系统下制作的离线包,就在什么系统下安装。
作者:NUPTboyZHB 发表于2013-9-13 16:17:08 原文链接阅读:59 评论:0 查看评论Powered by WPeMatico
Posted in 系统运维 9月3日才注意到这个在8月28日刊登在英文网站9月1日在驱动之家的,关于OS
X系统的sudo漏洞没有修补的新闻,今天才有时间成文上传。
这个sudo漏洞是在2013年2月27日被公布出来的,它的注册号是CVE-2013-1775,
大家可以上网找找,这个漏洞相继在不同的类Unix系统中被确认,特别是基于开源的操作系统。它影响sudo发布版本中所有从1.6版到1.7.10p6, 从1.8.0到1.8.6p6。从sudo命令的网站上看,它同时在2013年2月27日推出了一个重要的系统更新版本,用来修复这个漏洞,Sudo
version 1.8.6p7 和Sudo
version 1.7.10p7 。目前来看,OS X 10.7.4和10.8.3的sudo版本都是1.7.4p6,10.6.8是1.7.0。大家可以自己在Terminal终端中运行sudo
-V来查看。
该新闻中,主要提到的是,该漏洞在OS X 10.6到现在的10.8.4的各个版本都存在,基于Apple的升级策略与微软或者其它厂家的不同,苹果既没有推出及时更新也没有正面回复第三方的询问。
在各个网友的回复中,普遍存在误解。反方是坚定了自己对Mac系统的鄙视态度,正方是在鉴定苹果系统最安全的基础上对此漏洞采取一带而过忽视的作法,所以吵得还挺热闹。
新闻就是新闻,总是由不懂行的人道听途说地写出来,既不清晰也不易懂。咱们还是从该漏洞的具体内容开始说说吧:
首先,这个牵扯到计算机开元世纪(Unix epoch),计算机的时钟是从零开始计数的,Unix系统默认地把时钟0,当作1970年1月1日0时0分0秒(也就是1970:01:01 01:00:00),那么如果电脑时钟计数是10,那么系统就认为是1970年1月1日0时0分10秒。
再说,sudo的作用主要是提升当前用户的权限,比如可以让一个管理员用root权限来运行命令,众所周知,root在类Unix系统中就是上帝,可以做任何事情,甚至比上帝都全能,能杀掉自己!能够用root权限来执行命令,就意味着完全地控制了这个系统。默认地,在运行sudo的时候,会在Terminal中提示让用户输入密码,正确后,它会生成一个时间戳,再次使用sudo的时候,它会用当前时间和当初生成的那个时间戳比较,如果这个时间没有超出了设定的时间间隔,该间隔默认的是5分钟,那么它不会再次询问用户密码,而是直接运行命令;如果超出,那么需要用户再次输入密码确认。
其实,即便没有超出时间间隔,也可以使用sudo -k命令来重置时间戳,这样下次在使用sudo,系统会询问密码。在sudo的1.6版本之后,sudo -k命令不是把那个时间戳彻底移除,而是把它设置到电脑开元世纪时间,正是这个举动给骇客以可乘之机。因为在这些版本中,它不管时间戳是不是开元世纪时间,而是依然使用当前时间与之对比,大家可以看到其中的漏洞了吧。只要用户可以把系统时间修改成开元世纪,在5分钟内,可以不用输入用户密码,就可以成功运行sudo命令了。比如sudo
su后就可以切换到root用户,只要不退出Terminal,就可以没有时间限制地完全掌控这个系统。
要想利用这个漏洞,需要有几个关键条件:
注:如果细心的读者使用上面的方法突破系统,很可能不成功,那是因为我在上面的命令中有益忽略了一个特殊的命令导致。
Powered by WPeMatico
Posted in 系统运维引言
虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率。随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为当前计算机发展和研究的一个热点方向。目前,虚拟化技术在高校数据中心虚拟化、计算机教学、数字图书馆等各方面都有所应用并取得了较好的效果。文中提出基于KVM的教学平台虚拟化方案设计,较好地解决了使用加密狗作为加密手段的应用虚拟化问题。
1 KVM虚拟化技术概述
虚拟化技术能够在一台计算机上运行多个操作系统,每个系统上运行自己独立的应用软件。虚拟化技术可以对这些系统进行有效隔离,对资源进行按需分配,从而保证每个系统的安全性和性能。目前虚拟化技术已经形成从硬件到软件一整套的解决方案。基于X86架构的硬件技术主要是由Intel和AMD提供的VirtualizationTechnology(VT)和Pacifica(AMD—V)虚拟化技术,该技术对处理器进行了扩展,从而实现了处理器的虚拟化。软件方面主要有Vmware公司的VSpare和VmwareWorkstation、Microsofl公司的Hy—per—V和VirtualPC以及Linux系统下的Xen和KVM等。前两个软件是已经商业化的系统,Xen也开始了商业化运作,KVM是免费的开源系统并在迅速发展当中,是目前唯一进入Linux核心的虚拟化解决方案。
KVM是由以色列的一个名为Qumrant的开源组织于2006年10月提出的基于硬件虚拟化的虚拟机(VirtualMachine,VM)实现方案,2007年2月发布的Linux2.6.20内核第一次包含了KVM。实际上KVM只是虚拟化解决方案的一部分,其底层需要处理器支持,为多个操作系统提供虚拟化处理器,I/O通过QE—MU进行,其架构如图1所示。
图1 KVM系统架构
KVM包含内核模块和处理器模块两部分,内核模块kvm.ko提供核心的虚拟化支持,处理器模块kvm—inte1.ko和kvm—amd.ko分别提供了对Intel和AMD处理器虚拟化技术的支持。KVM通过加载kvm.ko内核模块将Linux内核转换为一个VirtualMachineMonitor(VMM,Hypervisor),因此KVM可以随着Linux标准内核的升级而获得性能提升(如调度程序、内存支持等)。虚拟机对应成为标准的Linux进程,因而可以用标准的Linux进程管理机制进行管理。
在普通的Linux进程有内核模式和用户模式两种运行模式,内核模式表示代码执行的特权模式,用户模式表示代码执行的非特权模式。在KVM系统中为Linux引入了一种新的进程模式,新的模式称为客户模式,客户模式用来执行虚拟机操作系统非I/O代码。在客户模式中包含内核模式和用户模式两种标准模式,VM操作系统可在内核模式下运行标准的内核,在用户模式下支持自己的内核和用户空间应用程序。
虚拟机操作系统的I/O操作是由修改过的QEMU支持的。QEMU是一种用动态翻译技术实现的快速指令集层虚拟机,它支持整个计算机系统的模拟,包括多种处理器(X86、ARM、PowerPC等)、磁盘、图形适配器和网络设备等。KVM是用硬件虚拟化技术代替了QEMU的动态翻译技术,实现虚拟机操作系统代码直接由硬件处理从而提高系统性能。VM操作系统生成的I/O请求会被截获并转发到用户空间,由QEMU的设备模型来模拟I/O操作,在需要的情况下触发真实的I/O操作。
2 KVM教学平台虚拟化应用系统设计
随着经济模式的转变和信息技术的发展,社会对复合型人才的数量和质量要求越来越高。为了适应这种变化,高等教育不断重视和加强实践教学,利用现代计算技术贴近现实成为其中最重要的手段之一。国内大部分院校均已建立起一定规模的实践教学环境,初步建立了教学、科研等各种网络应用系统。这些系统在实践教学秩序的稳定性和教学质量的提升等方面发挥了重要作用。
一般实践教学数据中服务器拓扑结构如图2所示,其中包括目录服务器、数据库服务器、文件服务器、WEB服务器及专业教学软件应用服务器,部分院校还部署了防火墙、负载均衡等扩展设备,以保证服务器的安全性、高性能和高可靠性。
图2 实践教学数据中心服务器拓扑结构
在实践教学快速发展过程中,各院校的数据中心在建设和管理上也面临着许多困难和问题。
①服务器数量越来越庞大,经常是一个建设项目建立一套服务器系统,在此情况下服务器利用率相当低;
②服务器资源争夺,有时为了提高服务器利用率,将不同系统部署在同一台服务器上,造成不同应用系统之间的冲突,比如加密狗之间的冲突、端口之间的争夺、环境资源冲突等。虚拟化技术的应用为解决这些问题提供了一条很好的思路。
2.1KVM技术在虚拟化中的优势
KVM虚拟化技术具有较强的灵活性,能较好地将不同操作系统和特殊硬件设备加以利用,降低不同系统间维护的复杂度。
KVM支持VM操作系统种类多,常见的基于X86架构的Windows、Linux、Unix操作系统绝大部分可以稳定运行。
KVM本身运行在Linux系统内核当中,属于瘦虚拟化方案,KVM本身体积很小,其支持硬件取决于Linux系统本身对硬件的支持。目前主流硬件设备均有对应的Linux驱动,这也就决定了KVM可以在最广泛的硬件系统之上运行。
KVM可以直接使用指定的硬件设备,如USB端口等。利用此项功能,可以直接将特定应用USB加密狗与运行该应用的VM绑定,从而解决加密狗冲突的问题。
同时KVM具有优良的系统性能和稳定性,系统更新便捷。
2.2虚拟化设计的原则
现有系统的分类整合,对目前应用系统按照技术架构进行分类,分析其应用特性,将类似的系统进行合并服务器处理,以利于将应用迁移到虚拟主机上。对将来要增加的应用系统进行预测,以保证系统的扩展性满足未来的需求。
数据集中存储,将虚拟机文件及数据库集中存放到存储设备中,实现数据的集中统一管理。
2.3服务器虚拟化方案设计
根据现有应用系统的性质将其分为两大类,一类为教学服务器,专门运行教学相关的专业软件。另一类为环境支持系统,包括域服务器、网站服务器、文件服务器。教学服务器平时压力并不大,但是当展开教学活动时,服务器负载会迅速提高鉴于教学系统的特点,将教学系统服务器作为首先进行虚拟化的部分,系统结构如图3所示。
图3 应用服务器虚拟化架构
将教学系统服务器按资源利用率分为两部分,利用率超过20%的系统将单独设置虚拟机,利用率在20%以下的按照提供服务种类组合在不同虚拟机中。按服务性质将服务分为纯加密保护验证类、B/S应用服务类、C/S应用服务类、自有专用服务类等四类。在教学系统中大量应用使用USB加密狗进行版权保护,为避免加密狗之间相互冲突,将加密狗对应USB端口直接指向对应的虚拟机,使之成为私有端口,不被主机系统和其它虚拟机系统所识别和使用,从而达到消除冲突的目的。
依据数据集中存储的原则,采用SAN(存储区域网络)集中存储方式,将虚拟机镜像文件部署在SAN共享存储阵列中。当物理主机发生故障时,可通过集群转移或者指定其他物理主机重新运行虚拟机,缩短应用中断时间。
通过分析应用系统的运行原理,建立分布式数据库,使其与应用分离,数据库集中存储在数据库服务器上。应用采用虚拟机多机备份机制,保证在应用的安全性。对于部分数据库和应用不能分离的业务,采用多级备份的方式,以降低风险发生时造成的损失。
3 KVM虚拟化应用系统部署
采用Ubuntu910系统,基于KVM84对服务器进行虚拟化,设置CPU、内存、硬盘、网络等硬件环境,安装操作系统及应用,加载相应USB加密狗,实现从虚拟化平台到软件应用的完整虚拟化解决方案。
3.1 环境检查及软件配置
KVM是基于CPU硬件虚拟化基础之上的,在安装KVM之前必须确认CPU支持虚拟化技术。使用cat/proc/cpuinfolgrep-E(vmxIsvn1)命令进行检测,有输出结果说明CPU支持虚拟化。部分服务器默认是关闭虚拟化技术的,需要进入BIOS打开CPU的虚拟化支持。
Linux内核是从2.6.20版本开始集成KVM,因此Linux内核版本必须在此之上。使用uname—a命令查看Linux内核版本。
在Ubuntu下安装KVM模块和安装其他软件类似,使用apt—getinstallkvm安装KVM模块并添加到Linux核心。lsmod命令可查看KVM模块是否加载成功,如果未加载成功可以使用命令modprobekvm载入。
3.2V M操作系统实例化
3.2.1建立虚拟磁盘镜像
虚拟磁盘镜像在逻辑上足提供给虚拟机使用的硬盘,在物理上可以是Linux系统内一普通镜像文件,也可以是真实的物理磁盘或分区。本方案设计中将虚拟机集中存储在SAN存储阵列中,采用文件方式,用dd命令创建如下
ddif=/dev/zeroof=hdisk.imgbs=1Gcount=10
dd命令创建一个名为hdisk.img的容量为10G的虚拟磁盘。虚拟磁盘并不会立即分配全部空问,而是根据使用情况在不超过1OG范围内动态分配。
3.2.2配置虚拟网络
KVM有NAT和TUN/TAP两种网络接入方式。NAT方式下主机操作系统和虚拟机操作系统不需要进行特殊设置,虚拟机操作系统内网卡采用内部DH.CP方式获取私有IP地址,可以与外部网络通讯,但是虚拟机不能向外提供服务,也不能与主机进行通信。TUN/TAP方式是采用网桥连接,虚拟机与主机、虚拟机与外部网络通讯都正常,其拓扑结构如图4所示。
图4 KVM网络桥接模式拓扑图
TUN/TAP模式是将物理网卡eht0设置成混杂模式,建立一个虚拟网桥br0和虚拟网卡taro,然后将虚拟网卡tarO和物理网卡eth0加入网桥,设置成网桥端口并激活虚拟网卡tarO。网桥IP设置成原主机IP地址,这时主机操作系统可正常通讯。当虚拟机操作系统启动时将自动以tarO为模板建立所需数量的虚拟网卡并插入系统,VM操作系统启动后可按正常系统DHCP方式或手工指定方式设置网卡IP地址。
3.2.3部署操作系统
KVM虚拟机硬件配置的设定或更改非常灵活,KVM通过虚拟机启动命令参数指定虚拟机所对应的CPU、内存、硬盘、网卡、声卡、系统时钟等硬件配置。使用启动命令将虚拟磁盘文件和虚拟机关联起来,启动后开始安装操作系统。
kvm—m512-hda/home/kvm/hdisk.img—cdrom/dev/cdrom..bootd——localtime
此命令是设置虚拟机使用磁盘镜像文件/home/kvm/hdisk.img作为硬盘,设置内存容量为512兆,从光驱启动虚拟机安装操作系统,安装界面出现后和在物理机器上正常安装操作系统一致。
安装完毕后将启动命令中的-bootd参数修改为-boote即可实现从磁盘镜像正常启动虚拟机。
3.3虚拟机的优化和统一集中管理
Virtio是一套Linux下用于虚拟I/O的通用框架,采用半虚拟化技术以提高I/0性能,通过在VM内加载virtio驱动以支持网卡、块存取设备、PCI等设备。启用virtio虚拟千兆网卡替换KVM默认的RealteckRTL8029虚拟网卡,可大幅度提高虚拟网卡的性能和稳定性。如选用virtio网卡并指定网卡物理地址,可使用-netnic,model=virtio,mac=52:54:00:l2:34:68参数。虚拟机启动后安装对应的网卡驱动即可正常使用。虚拟机系统调试完毕后可将复杂的启动命令存为脚本,避免出错并提高管理效率。
KVM虚拟机是针对服务器虚拟化进行设计和开发的虚拟化方案,因此KVM虚拟机对虚拟显卡支持相对较弱。但是KVM提供了不在物理服务器端启动虚拟机图形界面,而是通过VNC远程访问的方式对虚拟机进行管理的工作机制。如使用远程管理启动虚拟机,可使用-vrlc172.16.32.3:3参数启动VNC服务器,VNC客户端通过访问172.16.32.3:5093地址对虚拟机进行远程管理控制,为不同虚拟机指定不同端口,形成统一的集中管理。
3.4部署USB加密设备
在部署应用过程中,加密狗冲突问题可以利用KVM硬件端口指定技术将不同USB设备与特定虚拟机绑定,主机操作系统不需要安装相应USB驱动,由此可解决USB加密狗在同一系统下冲突的问题。
KVM可使用-usbdevicehost*.*参数将所有主机上的USB设备全部指定转接到虚拟机上,此时主机将无法正常使用USB设备。因此,必须向KVM说明哪些USB设备由客户机控制。这里需要使Hj到的是USB设备的rid和pid两个参数,每个usb设备都有这两个id,vid代表生产商,pid代表产品。可以通过lsusb命令来察看USB设备的这两个参数,其中一条结果如下
Bus001Device007:ID0aSe:2110BroadcomCorp
在启动命令里边修改一usbdevice选项,增加该USB设备一usbdevieehost:0aSe:2110,操作系统启动后再加载相应USB加密狗驱动即可正常使用。
3.5虚拟化应用效果分析
目前实验中心实际运行的教学专用应用中符合虚拟化条件的为37个,分布在l3台服务器上,通过虚拟化部署共建立虚拟机12个,分布在4台服务器上,有效提高了服务器的资源利用率。其它服务器中3台服役时间已超过6年,实施虚拟化后随着服务器的压力减小,故障率明显降低,故障修复周期也大幅缩短,保障了教学秩序的稳定。
KVM虚拟机只依赖于虚拟磁盘镜像文件,其他配置在Linux系统中完成。因此只需要复制磁盘镜像文件,修改对应启动命令即可完成一台新服务器的部署,有效缩短部署新服务器的工作周期,极大地降低部署复杂程度,提高工作效率。服务器数据备份是管理员日常工作的一个重要组成部分,实施虚拟化后只需备份虚拟磁盘文件,恢复时将虚拟磁盘文件复制回来即可实现应用和数据的完整恢复。
4 结束语
KVM是一个发展时间比较短,但是性能和稳定性表现优秀的虚拟化解决方案。文中通过一个实例介绍了KVM在虚拟化过程中的具体应用,其灵活的网络拓扑结构、简便的硬件配置方案、集中统一管理可满足于大多数数据中心虚拟化实践。当然KVM也有很多不足,对一些虚拟化扩展特性,如泛虚拟化支持、虚拟机动态迁移、图形化管理界面等新功能正在进一步研究和开发当中。
作者:cd520yy 发表于2013-9-13 12:51:14 原文链接阅读:22 评论:0 查看评论
Powered by WPeMatico
Posted in 系统运维xen虚拟机环境安装,用了2天的时间摸索,终于出来了,给大家分享一下。
1、安装宿主环境,我使用的是Centos6.3
2、安装xend,参考了一篇老外的文章,基本比较顺利。
地址:http://xen.crc.id.au/support/guides/install/
2.1. yum install bridge-utils
2.2.yum install http://au1.mirror.crc.id.au/repo/el6/x86_64/kernel-xen-release-6-5.noarch.rpm
2.3.yum install kernel-xen xen
2.4.vi /etc/sysconfig/selinux.
修改这一行
SELINUX=disabled
2.5.reboot
xm info 命令如果好用,恭喜你,基本差不多了。
3、安装虚拟系统
不能直接使用iso文件,需要挂载为光驱,支持http或nfs格式访问,好像不能使用本地目录。
我在宿主机上安装了httpd,把光驱挂载到http跟目录下,其他目录在安装过程中会有找不到文件的错误,建议直接挂根分区。
mount -o loop -t iso9660 /data7/CentOS-6.3-x86_64-bin-DVD1.iso /var/www/html
dd if=/dev/zero of=vm00.img bs=1k seek=30720k count=1 创建硬盘
/usr/sbin/virt-install –paravirt –file=/data/vm/vm00.img –name=vm00 –ram=1024 –vcpus=1 –bridge=eth0 –nographics –location=/var/www/html
执行后会有安装操作界面,有个界面是输入安装介质,选择url,输入http://192.168.1.185/
安装完成后reboot
4、虚拟机管理
xm list 显示虚拟机列表
xm start vm00 开机
xm console vm00 进入虚拟机命令行环境
xm delete vm01 删除虚拟机
xm shutdown vm00 关机
5、克隆虚拟机
virt-clone -o vm00 -n vm01 -f vm01
可以多克隆几个,哈哈
克隆完之后就可以使用第4条的命令来管理了。
作者:ycl111 发表于2013-9-13 12:16:29 原文链接阅读:65 评论:0 查看评论Powered by WPeMatico
Posted in 系统运维今天在虚拟机中安装服务的时候,因为服务要求内存必须增大,于是在虚拟机将内存调大。但是却调的过大了,最终导致虚拟机一启动就崩溃。于是想着将虚拟机的内存调小,可是内存调整那一块是灰色的,根本调不了。
怎么办?于是网上一遍一遍的搜,其中有人提到当虚拟机处于挂起状态时,是无法调整内存的。我立即看了下虚拟机的状态,确实是挂起的。那么将虚拟机关掉不就不是挂起状态了么!果断切换到电源菜单,结果晕了!菜单中除了“恢复”和“ 恢复客户机”是可以点击的,其他的都是灰色的。
虚拟机无法关闭!!那怎么办?总不至于要重装一次虚拟机吧!想了想,不如换个思路,想想能不能让虚拟机从挂起状态转换成正常状态。虚拟机是以文件形式保存的,所以相应的配置信息也必然是文件保存。说不定只要改某个文件中的配置就可以了。
又网上搜了搜,发现原来这挂起状态的保存在一个.vmss后缀的文件中的(该文件可能是隐藏文件),只要删掉就OK了。果断删了,但这时虚拟机还是处于挂起状态。这时最好,将原虚拟机从收藏夹中移除,然后再重新打开。
虚拟机终于正常了,于是将虚拟机的内存调小,立即重新开启。这时,又遇到一个问题!!其画面如下。
看着提示,说是要允许更多虚拟机交换内存,于是想了一遍后,记得虚拟机的参数中好像有这么一个选项。依次在虚拟机的菜单中点击编辑->参数,弹出参数菜单,画面如下。
将其中的内存->额外内存 调整为"允许大多数虚拟机内存交换"就OK了。
重开虚拟机,正常了!!
作者:xxdddail 发表于2013-9-13 12:03:19 原文链接阅读:0 评论:0 查看评论Powered by WPeMatico
Posted in 系统运维相关包下载地址
http://download.csdn.net/detail/h249059945/6259889
1、卸载掉系统redhat自带的yum
rpm -qa |grep yum |xargs rpm -e –nodeps
2 下载相关的centos yum插件
主要有python-iniparse-0.3.1-2.1.el6.noarch.rpm
yum-3.2.29-40.el6.centos.noarch.rpm
yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
其中版本号和安装的系统版本,以及时32位系统和64位系统有关系
下载地址:http://mirrors.163.com/centos/
在linux可以使用命令直接下载到本地也可以
wget
http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget
http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget
http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-40.el6.centos.noarch.rpm
wget
http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
注意:如果下载不了可能是小版本号有变化,可以直接下载后在上传到linux服务器
3 安装下载的yum包(如果没权限可以先修改权限 chmod 777 *)
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
rpm -ivh yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm
最后两个需要一起安装,有相互依赖关系
4 下载配置文件CentOS6-Base-163.repo
wget
http://mirrors.163.com/.help/CentOS6-Base-163.repo
5 修改CentOS6-Base-163.repo ,将其中的$releasever 更改为centos的版本
vi CentOS6-Base-163.repo
:%s/$releasever/6
6 把配置文件放到指定目录 并且删除原来的配置文件
cd /etc/yum.repos.d
rm -fr *
mv /home/CentOS6-Base-163.repo ./
7 清除缓存 yum clean all
8 配置获取yum列表
yum makecache