分页: 12/196 第一页 上页 7 8 9 10 11 12 13 14 15 16 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Apr 24
一、安装kvm

1 在安装CentOS6.3时可以选择安装好kvm

2 如果未安装好kvm,请按照下列方式安装

[创建本地yum源]

挂载iso文件
mount -o loop -t iso9660 CentOS-6.3-x86_64-bin-DVD1.iso /mnt

设置本地yum源
在/etc/yum.repos.d/创建   “任意文件名.repo"    文件  
vi 刚才新建的文件名编辑
【localyum】任意名称 ,不能有空格。
name= local yum  任意名称
baseurl=file:////mnt/Packages      这个路径是自定的。Server为光盘中的Server目录 ,Packages与Server放在同一目录下。即/software目录下
enabled=1   代表   生效     0为不生效
gpgcheck=1   检查gpgkey  1 生效   0不生效
gpgkey=file:///software    安装光盘里有这个文件        不指定  安装时,可能提示没有注册
保存退出
执行命令 yum clean all(1) kvm需要有 CPU 的支持(Intel VT 或 AMD SVM)
[root@moniter ~]#egrep '^flags.*(vmx|svm)' /proc/cpuinfo
(2) 安装kvm libvirted
yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst

yum groupinstall KVM

(3) 启动libvirted
service messagebus start

service haldaemon start

service libvirtd start

chkconfig messagebus on

chkconfig haldaemon on

chkconfig libvirtd on

(4)检查kvm是否安装成功
[root@moniter ~]#virsh -c qemu:///system list
Id Name                 State
----------------------------------
(5)kvm模块
/sbin/lsmod | grep kvm

二、配置网桥

vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
BROADCAST=10.207.20.255
IPADDR=10.207.20.200
NETMASK=255.255.255.0
NETWORK=10.207.20.0
ONBOOT=yes
b、
vi /etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
c、
重起网络服务生效
service network restart
d、
echo 1 > /proc/sys/net/ipv4/ip_forward  #虚拟机上网

e、
检查桥接网络
[root@moniter ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.842b2b74e1b6       no              eth0
virbr0          8000.000000000000       yes
br0是我们配置的桥接网卡,virbr0是系统脚本自动配置的NAT网卡

三、安装vnc

注意:CentOS6.3 VNC的命名rpm为tiggervnc-server

(1)
yum install tiggervnc-server

(2)
vi /etc/sysconfig/vncservers

#加一行
VNCSERVERS="1:root"

(3)
vncpasswd

创建密码
(4)
/etc/init.d/vncserver start

(5)
# netstat -nulpt | grep vnc
tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      29167/Xvnc
tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      29167/Xvnc
tcp        0      0 :::6001                     :::*                        LISTEN      29167/Xvnc
表示vnc可以使用了

四、创建kvm虚拟机

virsh-install
    1、输入虚拟机名称
    2、分配多少内存
    3、处理器的个数
    4、此步可以直接输入iso的位置或是url
    5、虚拟机类型KVM
    6、定义虚拟机磁盘映像的位置
    7、磁盘的大小
    6、指定哪个桥或者可以指定多个桥
    7、额外的控制台和KS文件
    8、连接到系统参数
    
    参数说明注意每行都要空格
    -n 虚拟机名称
    -r 分配虚拟机内存大小
    --vcpus 分配虚拟cpu个数
    -c 镜像文件位置
    --vnc --vncport=5901 --vnclisten=0.0.0.0 启动图形安装界面
    --virt-type 虚拟机模式
    -f 虚拟机系统文件存储目录
    -s 分配磁盘大小(GB)
    -w 联网方式(birdge bridge:br0/nat bridge:virbr0)
    --os-type='windows' --os-variant=win2k3 安装windows最好加上这个否则会报错
    virt-install工具安装虚拟机后,在目录/etc/libvirt/qemu/下生成xml配置文件
    -s 用来指定虚拟磁盘的大小单位为GB
    -m 指定虚拟网卡的硬件地址默认virt-install自动产生
    -p 以半虚拟化方式建立虚拟机
    -l 指定安装来源
    -x EXTRA, --extra-args=EXTRA当执行从"--location"选项指定位置的客户机安装时,附加内核命令行参数到安装程序。
    -v, --hvm 设置全虚拟化

virt-install --name=centos6.3  --ram 1024 --vcpus=2 --disk path=/data0/centos-6.3.x86_64.img.img,size=20  --accelerate --cdrom /data0/CentOS-6.3-x86_64-bin-DVD1.iso  --graphics vnc,listen=0.0.0.0,port=5920,  --network bridge=br0  --force  --autostart

执行后,netstat -nulpt | grep 5920 看端口启用否

五、用vnc连接5920完成安装

IP:5920

六、管理kvm虚拟机

virsh --connect qemu:///system
a、如果你修改了一个客户机的xml文件(位于/etc/libvirt/qemu/ 目录),你必须重新定义客户机:
define /etc/libvirt/qemu/vm10.xml
b、启动和停止客户机,运行:
start vm10
c、停止一个客户机,运行
shutdown vm10
d、立即中断一个客户机(类似直接关电源),运行
destroy vm10
e、挂起一个客户机:
suspend vm10
f、恢复客户机:
resume vm10

七、克隆

virt-clone  --connect=qemu:///system \
-o 原虚拟机 -n 新虚拟机 -f /data0/centos5.4/新虚拟机镜像

新虚拟机配置文件需要注意:虚拟机克隆完毕后,需修改vnc端口;MAC地址也是需要注意的。

八、加载磁盘空间

#qemu-img create -f qcow2 disk1.img 50G
#vi /etc/libvirt/qemu/centos1.xml

增加的部分为:

    <disk type='file' device='disk'>
      <source file='/data0/disk1.img'/>
      <target dev='hdb' bus='ide'/>
    </disk>


使配置文件生效
virsh --connect qemu:///system

virsh #define /etc/libvirt/qemu/centos1.xml


重起虚拟机生效

virsh # shutdown centos1

virsh # start centos1

进入虚拟机:
mkfs.ext3 /dev/hdb
mkdir /data
mount /dev/hdb /data
Tags: ,
Apr 20
Environment


SUSE Linux Enterprise Desktop 11
SUSE Linux Enterprise Desktop 10
SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 10

Situation


An NFS client is successfully mounting an NFS v4 file system.  However, upon executing "ls -al," all the file user and group ownership is showing as "nobody" or as "4294967294", instead of the values that are shown when viewed directly on the remote NFS server.

Resolution


For user names to be displayed correctly, the NFS v4 server must have knowledge of the same user and group accounts as the NFS client.  If users and groups are centrally managed, this works automatically.  With previous NFS protocol versions, it was sufficient to create identical user accounts on all clients accessing an NFS server. These accounts didn't need to exist on the server itself because the files were only served by user ID.  However, with NFSv4, identity tracking has been redesigned and now uses a identity mapping daemon (idmapd).  It's crucial that server and client have access to identical account information, or idmapd cannot properly do it's job and may display ownership as "nobody" or equivalent high values.

Both the NFS server and the NFS client must run idmapd and have good idmapd.conf files.  Even when the same accounts are known to both the servers and clients, idmapd configuration problems can prevent proper ownership from being displayed.

Check the /etc/idmapd.conf file.  The [General] section should have a Domain setting.  This typically matches the DNS domain name, but does not necessarily have to.  NFS servers and NFS clients which interact with each other should have their idmap domains set identically.  It can also be helpful for there to be a [Translation] section which specifies the method of translating between names and IDs.  Typically, it is best to point to nsswitch methodology.
  
So, for example, a typical idmapd.conf file might look like the following:

[General]
Verbosity=7
Pipefs-Directory=/var/lib/nfs/rpc_pipefs
Domain=test.novell2.com
  
[Mapping]
Nobody-User=nobody
Nobody-Group=nobody
  
[Translation]
Method=nsswitch

If changes are made to this file on any system, or if a system is already configured this way and still does not function correctly, try restarting idmapd.  On some versions of SLES (typically SLE 10) this can be done with:
rcidmapd restart

On other versions (typically SLE 11), idmapd isn't setup to stop and start independently of NFS services, so the necessary commands would be:

If the system is an nfs client:
rcnfs restart

If the system is an NFS server:
rcnfsserver restart

If the system is both an NFS server and an NFS client:
rcnfs stop
rcnfsserver stop
(repeat the above commands if messages indicate something could not be stopped or is busy)
rcnfsserver start
rcnfs start

Disclaimer


This Support Knowledgebase provides a valuable tool for NetIQ/Novell/SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.
Mar 30
在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。
在本章中,我们将讨论:

命令执行控制。
命令组合。

如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行另一个命令,&&和||可以完成这样的功能。相应的命令可以是系统命令或shell脚本。
Shell还提供了在当前shell或子shell中执行一组命令的方法,即使用()和{}。

6.1 使用&&

使用&&的一般形式为:
命令1 && 命令2
这种命令执行方式相当地直接。&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”。
这里有一个使用&&的简单例子:
$ cp justing.doc justing.bak && echo “if you are seeing this then cp was OK”
if you are seeing this then cp was OK
在上面的例子中,&&前面的拷贝命令执行成功,所以&&后面的命令(echo命令)被执行。
再看一个更为实用的例子:
$ mv /apps/bin /apps/dev/bin && rm -r /apps/bin
在上面的例子中,/apps/bin目录将会被移到/apps/dev/bin目录下,如果它没有被成功执行,就不会删除/apps/bin目录。
在下面的例子中,文件quarter_end.txt首先将被排序并输出到文件quarter.sorted中,只有这一命令执行成功之后,文件quarter.sorted才会被打印出来:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted

6.2 使用||

使用||的一般形式为:
命令1 || 命令2
||的作用有一些不同。如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);或者换句话说,“如果这个命令执行失败了|| 那么就执行这个命令”。
这里有一个使用||的简单例子:
$ cp wopper.txt wopper.bak || echo “if you are seeing this cp failed”

cp: wopper.txt: No such file or directory
if you are seeing this cp failed
在上面的例子中,拷贝命令没有能够被成功执行,因此||后面的命令被执行。
这里有一个更为实用的例子。我希望从一个审计文件中抽取第1个和第5个域,并将其输出到一个临时文件中,如果这一操作未成功,我希望能够收到一个相应邮件:
$ awk ‘{print $5}’ acc.qtr > qtr.tmp || echo “Sorry the payroll extraction didn’t work” | mail dave
在这里不只可以使用系统命令;这里我们首先对month_end.txt文件执行了一个名为comet的shell脚本,如果该脚本未执行成功,该shell将结束。
$ comet month_end.txt || exit

6.3 用()和{}将命令结合在一起

如果希望把几个命令合在一起执行, shell提供了两种方法。既可以在当前shell也可以在子shell中执行一组命令。
为了在当前shell中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令用圆括号()括起来。
它的一般形式为:
(命令1;命令2;. . .)
如果使用{ }来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{ }中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。它的一般形式为:
{命令1;命令2;. . . }
我很少单独使用这两种方法。我一般只和&&或||一起使用这两种方法。
再回到前面那个comet脚本的例子,如果这个脚本执行失败了,我很可能会希望执行两个以上的命令,而不只是一个命令。我可以使用这两种方法。这是原先那个例子:
$ comet month_end.txt || exit
现在如果该脚本执行失败了,我希望先给自己发个邮件,然后再退出,可以用下面的方法来实现:
$ comet month_end || (echo “Hello, guess what! Comet did not work”|mail dave;exit)
在上面的例子中,如果只使用了命令分隔符而没有把它们组合在一起,shell将直接执行最后一个命令(exit)。
我们再回头来看看前面那个使用&&排序的例子,下面是原来的那个例子:
$ sort quarter_end.txt > quarter.sorted && lp quarter.sorted
使用命令组合的方法,如果sort命令执行成功了,可以先将输出文件拷贝到一个日志区,然后再打印。

6.4 小结

在编写shell脚本时,使用&&和||对构造判断语句非常有用。如果希望在前一个命令执行失败的情况不执行后面的命令,那么本章所讲述的方法非常简单有效。使用这样的方法,可以根据&&或||前面命令的返回值来控制其后面命令的执行。
Mar 29
awk '!a[$0]++'  filename

如文件 1.txt 的内容为:
[root@pp crontab]# cat 1.txt
abcd
abcd
bacd
bacd
dcba
dcba

执行 awk '!a[$0]++' 1.txt 看看输出:
[root@pp crontab]# awk '!a[$0]++' 1.txt
abcd
bacd
dcba

看看是不是没有重复的行了,是不是很简单。



Tags: ,
Mar 13
本书的目标是以简明易懂的方式讲解 Redis 的内部运行机制,通过阅读本书,你可以了解到 Redis 从数据结构到服务器构造在内的几乎所有知识。

为了保证内容的简洁性,本书会尽量以高抽象层次的角度来观察 Redis ,并将代码的细节留给读者自己去考究。

如果读者只是对 Redis 的内部运作机制感兴趣,但并不想深入代码,那么只阅读本书就足够了。

另一方面,对于需要深入研究 Redis 代码的读者,本书附带了一份 带有详细注释的 Redis 2.6 源代码 ,可以配合本书一并使用。

点击在新窗口中浏览此图片

更多详细内容请移步:http://www.redisbook.com/en/latest/
Tags:
分页: 12/196 第一页 上页 7 8 9 10 11 12 13 14 15 16 下页 最后页 [ 显示模式: 摘要 | 列表 ]