virsh命令行管理工具

virsh命令行管理工具

 

Libvirt有两种控制方式,命令行和图形界面

图形界面:

通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。

 

命令行:

virsh list                                                 #显示本地活动虚拟机

virsh list –all                                          #显示本地所有的虚拟机(活动的+不活动的)

virsh define ubuntu.xml                     #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)

virsh start ubuntu                               #启动名字为ubuntu的非活动虚拟机

virsh create ubuntu.xml                    # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)

virsh suspend ubuntu                         # 暂停虚拟机

virsh resume ubuntu                          # 启动暂停的虚拟机

virsh shutdown ubuntu                      # 正常关闭虚拟机

virsh destroy ubuntu                          # 强制关闭虚拟机

virsh dominfo ubuntu                         #显示虚拟机的基本信息

virsh domname 2                                # 显示id号为2的虚拟机名

virsh domid ubuntu                             # 显示虚拟机id号

virsh domuuid ubuntu                        # 显示虚拟机的uuid

virsh domstate ubuntu                      # 显示虚拟机的当前状态

virsh dumpxml ubuntu                       # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)

virsh setmem ubuntu 512000          #给不活动虚拟机设置内存大小

virsh setvcpus ubuntu 4                     # 给不活动虚拟机设置cpu个数

virsh edit ubuntu                                 # 编辑配置文件(一般是在刚定义完虚拟机之后)

 

libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://root@10.4.122.11。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://root@10.4.122.11 list –all

 

ubuntu.xml配置文件举例:

<domain type=’xen’> //域类型

<name>ubuntu</name> //虚拟机的名字

<memory>1048576</memory> //虚拟机的最大内存

<currentMemory>524288</currentMemory> //虚拟机当前的内存

<vcpu>2</vcpu> //该虚拟机的cpu数

<os>

<type>hvm</type> //hvm表示全虚拟化

<loader>/usr/lib/xen/boot/hvmloader</loader> //全虚拟化的守护进程所在的位置

<boot dev=’hd’/> //hd表示从硬盘启动

</os>

<features>

<acpi/>

<apic/>

<pae/>

</features>

<clock offset=’utc’/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/lib64/xen/bin/qemu-dm</emulator> //二进制模拟器设备的完整路径。

<disk type=’file’ device=’disk’> //disk是用来描述磁盘的主要容器

<driver name=’file’/>

<source file=’/opt/awcloud/ubuntu/ubuntu.img’/> //指定磁盘上文件的绝对路径

<target dev=’hda’ bus=’ide’/>

</disk>

<disk type=’file’ device=’disk’>

<driver name=’file’/>

<source file=’/opt/awcloud/ubuntu/sdb.img’/>

<target dev=’hdb’ bus=’ide’/>

</disk>

<disk type=’file’ device=’cdrom’>

<driver name=’file’/>

<source file=’/opt/awcloud/forest/ubuntu-10.04.3-desktop-i386.iso’/>

<target dev=’hdc’ bus=’ide’/>

<readonly/>

</disk>

<serial type=’pty’>  //定义串口

<target port=’0’/>

</serial>

<console type=’pty’> //console用来代表交互性的控制台

<target port=’0’/>

</console>

<interface type=’bridge’>   //桥接设备

<mac address=’00:16:36:1e:1d:04’/> //MAC地址

<source bridge=’virbr0’/>

</interface>

<graphics type=’vnc’ autoport=’yes’ keymap=’en-us’/> //图形类型

</devices>

</domain>

 

注:

生成一个4G大小的空文件:dd if=/dev/zero of=./disk bs=1024 count=`expr 4 \* 1024 \* 1024`

修改虚拟机的启动设备:<boot dev=’hd’/>从硬盘启动;<boot dev=’cdrom’/>从CD启动

 

网络参数:

如ubuntu.xml配置文件,kvm虚拟机和xen虚拟机都只需要按照下面的模板进行配置,MAC地址是必须的,bridage的名字可能在不同的主机上是不一样,可能是virbr0,也可能是br0,但类型一定要是桥接模式就可以了

 

<interface type=’bridge’>

<mac address=’00:16:36:1e:1d:04’/>

<source bridge=’virbr0’/>

</interface>

 

KVM虚拟机迁移:

迁移命令:virsh migrate –live<id or name> qemu+ssh://<dstip>/system tcp://<dstip>:49152

迁移完之后,本地机器可能仍是定义状态,要执行virsh undefine <name>清除。

 

注意:/dev/zero是一个输入设备,用来初始化文件。

/dev/null是个无底洞,可以向它输出任何数据,它通吃并且不会撑着。

linux sudo详解

sudo是linux下常用的允许普通用户使用超级用户权限的工具。
它的主要配置文件是sudoers,linux下通常在/etc目录下,如果是solaris,缺省不装sudo的,编译安装后通常在安装目录的etc目 录下,不过不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。
言归正传,下面介绍如何配置sudoers
首先写sudoers的缺省配置:
#############################################################
# sudoers file.
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)    ALL
# Same thing without a password
# %wheel        ALL=(ALL)    NOPASSWD: ALL
# Samples
# %users   ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users   localhost=/sbin/shutdown -h now
##################################################################
1. 最简单的配置,让普通用户support具有root的所有权限
执行visudo之后,可以看见缺省只有一条配置:
root ALL=(ALL) ALL
那么你就在下边再加一条配置:
support ALL=(ALL) ALL
这样,普通用户support就能够执行root权限的所有命令
以support用户登录之后,执行:
sudo su –
然后输入support用户自己的密码,就可以切换成root用户了
2. 让普通用户support只能在某几台服务器上,执行root能执行的某些命令
首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias
1) 配置Host_Alias:就是主机的列表
Host_Alias    HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表
Cmnd_Alias    COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置权限
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG
配置示例:
############################################################################
# sudoers file.
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
Host_Alias    EPG = 192.168.1.1, 192.168.1.2
# User alias specification
# Cmnd alias specification
Cmnd_Alias    SQUID = /opt/vtbin/squid_refresh, /sbin/service, /bin/rm
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
support EPG=(ALL) NOPASSWD: SQUID
# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)    ALL
# Same thing without a password
# %wheel        ALL=(ALL)    NOPASSWD: ALL
# Samples
# %users   ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users   localhost=/sbin/shutdown -h now
###############################################################
我们不可以使用su让他们直接变成root,因为这些用户都必须知道root的密码,这种方法很不安全,而且也不符合我们的分工需求。一般的做法是利用权 限的设置,依工作性质分类,让特殊身份的用户成为同一个工作组,并设置工作组权限。例如:要wwwadm这位用户负责管理网站数据,一般Apache Web Server的进程httpd的所有者是www,您可以设置用户wwwadm与www为同一工作组,并设置Apache默认存放网页目录 /usr/local/httpd/htdocs的工作组权限为可读、可写、可执行,这样属于此工作组的每位用户就可以进行网页的管理了。
但这并不是最好的解决办法,例如管理员想授予一个普通用户关机的权限,这时使用上述的办法就不是很理想。这时您也许会想,我只让这个用户可以以 root身份执行shutdown命令就行了。完全没错,可惜在通常的Linux系统中无法实现这一功能,不过已经有了工具可以实现这样的功能—— sudo。
sudo通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别。为了获得某一特权项,有资格的 用户只需简单地在命令行输入sudo与命令名之后,按照提示再次输入口令(用户自己的口令,不是root用户口令)。例如,sudo允许普通用户格式化磁 盘,但是却没有赋予其他的root用户特权。
1、sudo工具由文件/etc/sudoers进行配置,该文件包含所有可以访问sudo工具的用户列表并定义了他们的特权。一个典型的/etc/sudoers条目如下:
代码:
liming ALL=(ALL) ALL
这个条目使得用户liming作为超级用户访问所有应用程序,如用户liming需要作为超级用户运行命令,他只需简单地在命令前加上前缀sudo。因此,要以root用户的身份执行命令format,liming可以输入如下命令:
代码:
# sudo /usr/sbin/useradd sam
注意:命令要写绝对路径,/usr/sbin默认不在普通用户的搜索路径中,或者加入此路径:PATH=$PATH:/usr/sbin;export PATH。另外,不同系统命令的路径不尽相同,可以使用命令“whereis 命令名”来查找其路径。
这时会显示下面的输出结果:
代码:
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:
#1) Respect the privacy of others.
#2) Think before you type.
Password:
如果liming正确地输入了口令,命令useradd将会以root用户身份执行。
注意:配置文件/etc/sudoers必须使用命令 Visudo来编辑。
只要把相应的用户名、主机名和许可的命令列表以标准的格式加入到文件/etc/sudoers,并保存就可以生效,再看一个例子。
2、例子:管理员需要允许gem用户在主机sun上执行reboot和shutdown命令,在/etc/sudoers中加入:
代码:
gem sun=/usr/sbin/reboot,/usr/sbin/shutdown
注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患。
然后保存退出,gem用户想执行reboot命令时,只要在提示符下运行下列命令:
代码:
$ sudo /usr/sbin/reboot
输入正确的密码,就可以重启服务器了。
如果您想对一组用户进行定义,可以在组名前加上%,对其进行设置,如:
代码:
%cuug ALL=(ALL) ALL
3、另外,还可以利用别名来简化配置文件。别名类似组的概念,有用户别名、主机别名和命令别名。多个用户可以首先用一个别名来定义,然后在规定他们可以执 行什么命令的时候使用别名就可以了,这个配置对所有用户都生效。主机别名和命令别名也是如此。注意使用前先要在/etc/sudoers中定义: User_Alias, Host_Alias, Cmnd_Alias项,在其后面加入相应的名称,也以逗号分隔开就可以了,举例如下:
代码:
Host_Alias SERVER=no1
User_Alias ADMINS=liming,gem
Cmnd_Alias SHUTDOWN=/usr/sbin/halt,/usr/sbin/shutdown,/usr/sbin/reboot
ADMINS SERVER=SHUTDOWN
、再看这个例子:
代码:
ADMINS ALL=(ALL) NOPASSWD: ALL
表示允许ADMINS不用口令执行一切操作,其中“NOPASSWD:”项定义了用户执行操作时不需要输入口令。
5、sudo命令还可以加上一些参数,完成一些辅助的功能,如
代码:
$ sudo –l
会显示出类似这样的信息:
代码:
User liming may run the following commands on this host:
(root) /usr/sbin/reboot
说明root允许用户liming执行/usr/sbin/reboot命令。这个参数可以使用户查看自己目前可以在sudo中执行哪些命令。
6、在命令提示符下键入sudo命令会列出所有参数,其他一些参数如下:
代码:
-V 显示版本编号。
-h 显示sudo命令的使用参数。
-v 因为sudo在第一次执行时或是在N分钟内没有执行(N预设为5)会询问密码。这个参数是重新做一次确认,如果超过N分钟,也会问密码。
-k 将会强迫使用者在下一次执行sudo时询问密码(不论有没有超过N分钟)。
-b 将要执行的命令放在背景执行。
-p prompt 可以更改问密码的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称。
-u username/#uid 不加此参数,代表要以root的身份执行命令,而加了此参数,可以以username的身份执行命令(#uid为该username的UID)。
-s 执行环境变量中的 SHELL 所指定的 Shell ,或是 /etc/passwd 里所指定的 Shell。
-H 将环境变量中的HOME(宿主目录)指定为要变更身份的使用者的宿主目录。(如不加-u参数就是系统管理者root。)
要以系统管理者身份(或以-u更改为其他人)执行的命令。

##########################     实         例     ###############################

实例一:

beinan ALL=/bin/chown,/bin/chmod

假如我们在/etc/sudoers 中添加这一行,表示beinan 能够在任何可能出现的主机名的系统中,能够转换到root用户下执行 /bin/chown 和/bin/chmod 命令,通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;

值得注意的是,在这里省略了指定转换到哪个用户下执行/bin/shown 和/bin/chmod命令;在省略的情况下默认为是转换到root用户下执行;同时也省略了是不是需要beinan用户输入验证密码,假如省略了,默认为是需要验证密码。

为了更周详的说明这些,我们能够构造一个更复杂一点的公式;

授权用户 主机=[(转换到哪些用户或用户组)] [是否需要密码验证] 命令1,[(转换到哪些用户或用户组)] [是否需要密码验证] [命令2],[(转换到哪些用户或用户组)] [是否需要密码验证] [命令3]….

注解:

凡是[ ]中的内容,是能够省略;命令和命令之间用,号分隔;通过本文的例子,能够对照着看哪些是省略了,哪些地方需要有空格;

在[(转换到哪些用户或用户组)] ,假如省略,则默认为root用户;假如是ALL ,则代表能转换到任何用户;注意要转换到的目的用户必须用()号括起来,比如(ALL)、(beinan)

实例二:

beinan ALL=(root) /bin/chown, /bin/chmod

假如我们把第一个实例中的那行去掉,换成这行;表示的是beinan 能够在任何可能出现的主机名的主机中,能够转换到root下执行 /bin/chown ,能够转换到任何用户招执行/bin/chmod 命令,通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;

实例三:

beinan ALL=(root) NOPASSWD: /bin/chown,/bin/chmod

假如换成这个例子呢?表示的是beinan 能够在任何可能出现的主机名的主机中,能够转换到root下执行 /bin/chown ,无需输入beinan用户的密码;并且能够转换到任何用户下执行/bin/chmod 命令,但执行chmod时需要beinan输入自己的密码;通过sudo -l 来查看beinan 在这台主机上允许和禁止运行的命令;

关于一个命令动作是不是需要密码,我们能够发现在系统在默认的情况下是需要用户密码的,除非特加指出无需用户需要输入自己密码,所以要在执行动作之前加入NOPASSWD: 参数;

有可能有的弟兄对系统管理的命令不太懂,不知道其用法,这样就影响了他对 sudoers定义的理解,下面我们再举一个最简单,最有说服务力的例子;

实例四:

比如我们想用beinan普通用户通过more /etc/shadow文档的内容时,可能会出现下面的情况;

[beinan@localhost ~] $ more /etc/shadow/etc/shadow: 权限不够

这时我们能够用sudo more /etc/shadow 来读取文档的内容;就就需要在/etc/soduers中给beinan授权

于是我们就能够先su 到root用户下通过visudo 来改/etc/sudoers ;(比如我们是以beinan用户登录系统的)

[beinan@localhost ~] $ su

Password: 注:在这里输入root密码

下面运行visodu;

[root@localhost beinan]# visudo 注:运行visudo 来改 /etc/sudoers

加入如下一行,退出保存;退出保存,在这里要会用vi,visudo也是用的vi编辑器;至于vi的用法不多说了;
beinan ALL=/bin/more 表示beinan能够转换到root下执行more 来查看文档;

退回到beinan用户下,用exit命令;

[root@localhost beinan]# exit

exit

[beinan@localhost ~] $

查看beinan的通过sudo能执行哪些命令?

[beinan@localhost ~] $ sudo -l

Password: 注:在这里输入beinan用户的密码

User beinan may run the following commands on this host: 注:在这里清楚的说明在本台主机上,beinan用户能够以root权限运行more ;在root权限下的more ,能够查看任何文本文档的内容的;

(root) /bin/more

最后,我们看看是不是beinan用户有能力看到/etc/shadow文档的内容;

[beinan@localhost ~] $ sudo more /etc/shadow

beinan 不但能看到 /etc/shadow文档的内容,还能看到只有root权限下才能看到的其他文档的内容,比如;

[beinan@localhost ~] $ sudo more /etc/gshadow

对于beinan用户查看和读取任何系统文档中,我只想把/etc/shadow 的内容能够让他查看;能够加入下面的一行;

beinan ALL=/bin/more /etc/shadow

题外话:有的弟兄会说,我通过su 转换到root用户就能看到任何想看的内容了,哈哈,对啊。但咱们现在不是在讲述sudo的用法吗?假如主机上有多个用户并且不知道root用户的密码,但又想查看某些他们看不到的文档,这时就需要管理员授权了;这就是sudo的好处;

实例五:练习用户组在/etc/sudoers中写法;

假如用户组出现在/etc/sudoers 中,前面要加%号,比如%beinan ,中间不能有空格;%beinan ALL=/usr/sbin/*,/sbin/*

假如我们在 /etc/sudoers 中加上如上一行,表示beinan用户组下的任何成员,在任何可能的出现的主机名下,都能转换到root用户下运行 /usr/sbin和/sbin目录下的任何命令;

实例六:练习取消某类程式的执行:

取消程式某类程式的执行,要在命令动作前面加上!号; 在本例中也出现了通配符的*的用法;

beinan ALL=/usr/sbin/*,/sbin/*,!/usr/sbin/fdisk 注:把这行规则加入到/etc/sudoers中;但您得有beinan这个用户组,并且beinan也是这个组中的才行;

本规则表示beinan用户在任何可能存在的主机名的主机上运行/usr/sbin和/sbin下任何的程式,但fdisk 程式除外;

[beinan@localhost ~] $ sudo -l

Password: 注:在这里输入beinan用户的密码;

User beinan may run the following commands on this host:(root) /usr/sbin/*(root) /sbin/*(root) !/sbin/fdisk[beinan@localhost ~] $ sudo /sbin/fdisk -lSorry, user beinan is not allowed to execute ‘/sbin/fdisk -l’ as root on localhost.

注:不能转换到root用户下运行fdisk 程式;

实例七:别名的运用实践;

假如我们就一台主机localhost,能通过hostname 来查看,我们在这里就不定义主机别名了,用ALL来匹配任何可能出现的主机名;并且有beinan、linuxsir、lanhaitun 用户;主要是通过小例子能更好理解;sudo虽然简单好用,但能把说的明白的确是件难事;最好的办法是多看例子和man soduers ;

User_Alias SYSADER=beinan,linuxsir,%beinan

User_Alias DISKADER=lanhaitun

Runas_Alias OP=root

Cmnd_Alias SYDCMD=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root

Cmnd_Alias DSKCMD=/sbin/parted,/sbin/fdisk 注:定义命令别名DSKCMD,下有成员parted和fdisk ;

SYSADER ALL= SYDCMD,DSKCMDDISKADER     ALL=(OP) DSKCMD

注解:

第一行:定义用户别名SYSADER 下有成员 beinan、linuxsir和beinan用户组下的成员,用户组前面必须加%号;

第二行:定义用户别名 DISKADER ,成员有lanhaitun

第三行:定义Runas用户,也就是目标用户的别名为OP,下有成员root

第四行:定义SYSCMD命令别名,成员之间用,号分隔,最后的!/usr/bin/passwd root 表示不能通过passwd 来更改root密码;

第五行:定义命令别名DSKCMD,下有成员parted和fdisk ;

第六行:表示授权SYSADER下的任何成员,在任何可能存在的主机名的主机下运行或禁止 SYDCMD和DSKCMD下定义的命令。更为明确遥说,beinan、linuxsir和beinan用户组下的成员能以root身份运行 chown 、chmod 、adduser、passwd,但不能更改root的密码;也能够以root身份运行 parted和fdisk ,本条规则的等价规则是;

beinan,linuxsir,%beinan ALL=/bin/chown,/bin/chmod,/usr/sbin/adduser,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,/sbin/parted,/sbin/fdisk

第七行:表示授权DISKADER 下的任何成员,能以OP的身份,来运行 DSKCMD ,无需密码;更为明确的说 lanhaitun 能以root身份运行 parted和fdisk 命令;其等价规则是:

lanhaitun ALL=(root) /sbin/parted,/sbin/fdisk

可能有的弟兄会说我想不输入用户的密码就能转换到root并运行SYDCMD和DSKCMD 下的命令,那应该把把NOPASSWD:加在哪里为好?理解下面的例子吧,能明白的;

SYSADER ALL= NOPASSWD: SYDCMD, NOPASSWD: DSKCMD

Linux下的sudo及其配置文件/etc/sudoers的详细配置说明

1.sudo介绍
sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。它的特性主要有这样几点:

§ sudo能够限制用户只在某台主机上运行某些命令。

§ sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

§ sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。

§ sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。

2.配置文件/etc/sudoers
它的主要配置文件是sudoers,linux下通常在/etc目录下,如果是solaris,缺省不装sudo的,编译安装后通常在安装目录的 etc目录下,不过不管sudoers文件在哪儿,sudo都提供了一个编辑该文件的命令:visudo来对该文件进行修改。强烈推荐使用该命令修改 sudoers,因为它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。

言归正传,下面介绍如何配置sudoers

首先写sudoers的缺省配置:

#############################################################
# sudoers file.
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults specification

# User privilege specification
root ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
##################################################################

1. 最简单的配置,让普通用户support具有root的所有权限
执行visudo之后,可以看见缺省只有一条配置:
root ALL=(ALL) ALL
那么你就在下边再加一条配置:
support ALL=(ALL) ALL

这样,普通用户support就能够执行root权限的所有命令

以support用户登录之后,执行:
sudo su –
然后输入support用户自己的密码,就可以切换成root用户了

2. 让普通用户support只能在某几台服务器上,执行root能执行的某些命令
首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种
Host_Alias
Cmnd_Alias
User_Alias
Runas_Alias

1) 配置Host_Alias:就是主机的列表
Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
2) 配置Cmnd_Alias:就是允许执行的命令的列表
Cmnd_Alias COMMAND_FLAG = command1, command2, command3
3) 配置User_Alias:就是具有sudo权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
5) 配置权限
配置权限的格式如下:
USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
如果不需要密码验证的话,则按照这样的格式来配置
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

配置示例:
############################################################################
# sudoers file.
#
# This file MUST be edited with the ‘visudo’ command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification
Host_Alias EPG = 192.168.1.1, 192.168.1.2

# User alias specification

# Cmnd alias specification
Cmnd_Alias SQUID = /opt/vtbin/squid_refresh, /sbin/service, /bin/rm

# Defaults specification

# User privilege specification
root ALL=(ALL) ALL
support EPG=(ALL) NOPASSWD: SQUID

# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL

# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
###############################################################

CentOS下KVM虚拟机的创建、管理与迁移

kvm虚拟机管理
一、环境
role         hostname    ip                  OS
kvm_server   target      192.168.32.40/24    rhel6.0_x64
vir_guest1   node4       192.168.32.34/24    rhel5.5_i386
vir_guest2   node5       192.168.32.35/24    rhel5.5_i386
manager      manager     192.168.32.33/24    rhel5.5_i386
ESXi         ESXi        192.168.2.251/24    ESXi 3.5
二、安裝kvm
[root@target ~]# yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64  #安装kvm内核
[root@target ~]# yum install libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 #安装virt管理工具
[root@target ~]# modprobe kvm         #加载kvm内核
[root@target ~]# modprobe kvm-intel   #intel cpu加载kvm-intel内核,要支持全虚拟化,必须开启;要求cpu支持,通过bios可设置。
[root@target ~]# modprobe kvm-amd     #amd cpu加载kvm-intel

[root@target ~]# modprobe -ls | grep kvm   #查看内核是否开启
kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-intel.ko
kernel/arch/x86/kvm/kvm-amd.ko
[root@target ~]# modprobe -ls | grep kvm-intel
kernel/arch/x86/kvm/kvm-intel.ko

三、安装guest虚拟机
1、直接通过virt-manager安装、管理虚拟机(略)

2、通过命令行安装guest虚拟机
[root@target ~]# yum install virt-viewer   #开启图形控制台安装虚拟客户机需要,
[root@target ~]# virt-install \            #安装选项可用virt-install –help查看
–name node4 \           #虚拟机名
–ram=1024 \             #分配内存大小,MB
–arch=x86_64 \          #模拟的CPU 构架
–vcpus=1 \              #配置虚拟机的vcpu 数目
–check-cpu \            #检查确定vcpu是否超过物理 CPU数目,如果超过则发出警告。
–os-type=linux \        #要安装的操作系统类型,例如:’linux’、’unix’、’windows’
–os-variant=rhel5 \     #操作系统版本,如:’fedora6′, ‘rhel5’, ‘solaris10’, ‘win2k’
–disk path=/virhost/node7.img,device=disk,bus=virtio,size=20,sparse=true \   #虚拟机所用磁盘或镜像文件,size大小G
–bridge=br0 \           #指定网络,采用透明网桥
–noautoconsole \        #不自动开启控制台
–pxe                    #网络安装

四、利用virsh对虚拟机管理
1、开关机
[root@target ~]# virsh start node4      #开机
[root@target ~]# virsh create /etc/libvirt/qemu/node4.xml #直接通过主机配置文档启动主机
[root@target ~]# virsh shutdown node4   #关机
[root@target ~]# virsh destroy node4    #强制关闭电源
[root@target ~]# virsh list –all       #查看虚拟机状态
Id 名称               状态
———————————-
18 node4                running
– node5                关闭
– win8                 关闭

2、添加删除虚拟机
[root@target ~]# virsh define /etc/libvirt/qemu/node5.xml   #根据主机配置文档添加虚拟机
[root@target ~]# virsh list –all        #node5已经添加
Id 名称               状态
———————————-
18 node4                running
– node5                关闭
– win8                 关闭

[root@target ~]# virsh undefine node5     #移除虚拟机
[root@target ~]# ls /etc/libvirt/qemu
networks  node4.xml  win8.xml
[root@target ~]# virsh list –all         #node5已经被移除
Id 名称               状态
———————————-
18 node4                running
– win8                 关闭

3、远程管理虚拟机(qemu+ssh连接)
[root@target ~]# yum install virt-viewer
[root@target ~]# export DISPLAY=192.168.40.18:0.0
[root@target ~]# virt-viewer -c qemu///system node4                          #本地管理虚拟机,system:获取system权限,注意qemu后是三个/
[root@manager ~]# virt-viewer -c qemu+ssh://root@192.168.32.40/system node4  #远程linux通过virt-viewer+ssh管理虚拟机
Xlib:  extension “RANDR” missing on display “192.168.40.18:0.0”.
root@192.168.32.40’s password:
root@192.168.32.40’s password:
#会弹出virt-viwer的gtk管理界面

4、使用已存在的虚拟机配置文档安裝新的虚拟机
[root@target ~]# qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G
#为新建虚拟机生产磁盘镜像文件

[root@target ~]# virsh list
Id 名称               状态
———————————-
18 node4                running

[root@target ~]# virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml
#导出虚拟机node6的硬件配置信息为/etc/libvirt/qemu/node6.xml

[root@target ~]# vim /etc/libvirt/qemu/node6.xml
<domain type=’kvm’ id=’20’>    #修改node6的id号
<name>node6</name>           #虚拟机node6的name
<uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fc7</uuid>  #uuid必须修改,否则会和node4的冲突
<memory>524288</memory>
<currentMemory>524288</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch=’x86_64′ machine=’rhel5.4.0′>hvm</type>
<boot dev=’network’/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset=’utc’/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’qcow2′ cache=’none’/>
<source file=’/virhost/node4.img’/>         #指定新虚拟机的硬盘文件
<target dev=’vda’ bus=’virtio’/>
</disk>
<interface type=’bridge’>
<mac address=’54:52:00:69:d5:c7’/>
<source bridge=’br0’/>
<target dev=’vnet0’/>
<model type=’virtio’/>
</interface>
<interface type=’bridge’>
<mac address=’54:52:00:69:d5:d7’/>
<source bridge=’br0’/>
<target dev=’vnet1’/>
<model type=’virtio’/>
</interface>
<serial type=’pty’>
<source path=’/dev/pts/4’/>
<target port=’0’/>
</serial>
<console type=’pty’ tty=’/dev/pts/4′>
<source path=’/dev/pts/4’/>
<target port=’0’/>
</console>
<input type=’mouse’ bus=’ps2’/>
<graphics type=’vnc’ port=’5900′ autoport=’yes’ keymap=’en-us’/>
</devices>
</domain>

[root@target ~]# virsh define /etc/libvirt/qemu/node6.xml
#使用虚拟描述文档建立虚拟机,可用virsh edit node6修改node6的配置文件

[root@target ~]# virsh start node6
#启动虚拟机

5 为虚拟机开启vnc
[root@target ~]# virsh edit node4     #编辑node4的配置文件;不建议直接通过vim node4.xml修改。
<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’127.0.0.1′ keymap=’en-us’/>
#port=’-1′ autoport=’yes’:port自动分配,监听回环网络(virt-manager管理需要listen=’127.0.0.1’),无密码
改为
<graphics type=’vnc’ port=’5904′ autoport=’no’ listen=’0.0.0.0′ keymap=’en-us’ passwd=’xiaobai’/>
#固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络

2. 远程vnc访问地址:192.168.32.40:5904

五、存储池和存储卷的管理
1.创建 KVM主机存储池
1).创建基于文件夹(目录)的存储池
[root@target virhost]# virsh pool-define-as vmware_pool –type dir –target /virhost/vmware
#定义存储池vmware_pool

[root@target virhost]# virsh pool-create-as –name vmware_pool –type dir –target /virhost/vmware
#创建存储池vmware_pool,类型为文件目录,/virhost/vmware,与pool-define-as结果一样

2).创建基于文件系统的存储池
[root@target virhost]#virsh pool-define-as –name vmware_pool –type fs –source-dev /dev/vg_target/LogVol02 –source-format ext4 –target /virhost/vmware

[root@target virhost]#virsh pool-create-as –name vmware_pool –type fs –source-dev /dev/vg_target/LogVol02 –source-format ext4 –target /virhost/vmware

3).查看存储池信息
[root@target virhost]# virsh pool-info vmware_pool  #查看存储域(池)信息
名称:       vmware_pool
UUID:           2e9ff708-241f-fd7b-3b57-25df273a55db
状态:       running
Persistent:     no
自动启动: no
容量:       98.40 GB
分配:       18.39 GB
可用:       80.01 GB
4).启动存储池
[root@target virhost]# virsh pool-start vmware_pool   #启动存储池
[root@target virhost]# virsh pool-list
名称               状态     自动开始
—————————————–
default              活动     yes
virhost              活动     yes
vmware_pool          活动     no
5)销毁存储域,取消存储池
[root@target virhost]# virsh pool-destroy vmware_pool  #销毁存储池
[root@target virhost]# virsh pool-list –all
名称               状态     自动开始
—————————————–
default              活动     yes
virhost              活动     yes
vmware_pool          不活跃  no
[root@target virhost]# virsh pool-undefine vmware_pool  #取消存储池的定义
[root@target virhost]# virsh pool-list –all
名称               状态     自动开始
—————————————–
default              活动     yes
virhost              活动     yes

2.创建了存储池后,就可以创建一个卷,这个卷是用来做虚拟机的硬盘
[root@target virhost]# virsh vol-create-as –pool vmware_pool –name node6.img –capacity 10G –allocation 1G –format qcow2
#创建卷 node6.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2

[root@target virhost]# virsh vol-info /virhost/vmware/node6.img  #查看卷信息
名称:       node6.img
类型:       文件
容量:       10.00 GB
分配:       136.00 KB

3.在存储卷上安装虚拟主机
[root@target virhost]#virt-install –connect qemu:///system \
-n node7 \
-r 512 \
-f /virhost/vmware/node7.img \
–vnc \
–os-type=linux \
–os-variant=rhel6  \
–vcpus=1 \
–network bridge=br0 \
-c /mnt/rhel-server-6.0-x86_64-dvd.iso

六、虚拟机的迁移(vmware 2 kvm)
1.安装软件
[root@target ~]# yum install -y virt-v2v.x86_64
[root@target ~]# rpm -ivh libguestfs-winsupport-1.0-7.el6.x86_64.rpm  virtio-win-1.2.0-1.el6.noarch.rpm
#虚拟机为windows时需要libguestfs-winsupport 包来支持 NTFS 文件系统和 virtio-win 包来支持 Windows para-virtualized 存储和网络设备驱动

2.创建 KVM 主机存储域(略)
virt-v2v 在迁移虚拟机的过程中,需要拷贝被迁移虚拟机到 KVM 主机预先定义的存储池中。

3.创建 KVM 主机网络接口(略)
虚拟机在迁移之后将连接 KVM 主机网络, 因此主机必须有一个与之相匹配的网络接口,比如说网桥。

4.在 KVM 主机上创建或修改 $HOME/.netrc 文件,添加 VMware ESXi 服务器的用户名和密码。
[root@target ~]# cat ~/.netrc
machine 192.168.2.251 login root password xxxxxx
[root@target ~]# chmod 0600 ~/.netrc

5.Vmware ESXi到KVM的迁移
[root@target ~]# virt-v2v -ic esx://192.168.2.251/?no_verify=1 -op virhost -b br0 ipserver
** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 401 Unauthorized
** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 200 OK
** GET https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 200 OK (2084s)
unknown filesystem /dev/hda
unknown filesystem /dev/fd0
virt-v2v: Installation failed because the following files referenced in the configuration file are required, but missing: rhel/4/kernel-smp-2.6.9-89.EL.i686.rpm
virt-v2v: 非 virtio 驱动程序配置的 tserver21

#所有选项可通过配置文件/etc/virt-v2v.conf来指定
#-op:指定用于转换后的存储域(pool),virhost
#-b:指定网络为网桥br0
#-ic:指定要转换的源地址

[root@target kvm_node]# virsh list –all
Id 名称               状态
———————————-
1 node4                running
– node5                关闭
– tserver21            关闭
– win8                 关闭
[root@target kvm_node]# virsh start tserver21

6.KVM到KVM迁移
[root@target kvm_node]# virt-v2v -ic qemu+ssh://192.168.32.179/system -op virhost -b br0 node6
root@192.168.32.179’s password:
root@192.168.32.179’s password:
unknown filesystem label SWAP-vda3
virt-v2v: The connected hypervisor does not support a machine type of rhel5.4.0. It will be set to the current default.
virt-v2v: virtio 驱动程序配置的 node6

[root@target kvm_node]# virsh list –all
Id 名称               状态
———————————-
1 node4                running
– node5                关闭
– node6                关闭
– tserver21            关闭
– win8                 关闭

[root@target kvm_node]# virsh start node6

centos7 acl设置

linux 系统标准的ugo/rwx集合并不允许为不同的用户配置不同的权限,所以 ACL 便被引入了进来,为的是为文件和目录定义更加详细的访问权限,而不仅仅是这些特别指定的特定权限。ACL可以为每个用户,每个组或不在文件所属组中的用户配置相应的权限。ACL 可使用 setfacl 来设置(和移除),可相应地使用 -m 或 -x 选项。

例如,让我们创建一个名为 aliyun 的组,并将用户uread和uwrite加入该组:

#groupadd aliyun

#useradd -G aliyun -M uread -p uread

#useradd -G aliyun -M uwrite -p uwrite

blob.png

在/alidata共有5个txt文件,只能root用户进行修改,其他用户只读。

blob.png

uread 用户尝试修改文件,提示没有权限

blob.png

使用setfacl修改权限,使aliyun组对alidata下1.txt文件可读写。

修改前先查看一下1.txt文件权限

#getfacl /alidata/1.txt

blob.png

使用#setfacl -m g:aliyun:rw /alidata/1.txt

修改后权限 aliyun组对1.txt文件有写权限

blob.png

测试添加的权限,uread 和 uwrite 都可以读写1.txt

blob.png

blob.png

去掉uread 的写权限

#setfacl -m u:uread:r /alidata/1.txt

blob.png

测试uread 已经不能修改文件了

blob.png

去除权限1.txt的权限

setfacl -x u:uread /alidata/1.txt

blob.png

setfacl -x g:aliyun /alidata/1.txt

blob.png

CentOS 7安装fcitx中文输入法

前面CentOS 7.0下安装小小输入法一文中已经介绍了如何在CentOS 7下安装小小输入法来输入中文,实际用起来还是有不少不如意的地方。

今天恰好发现了CentOS 7下安装fcitx输入法的简单方法,如下。

加入EPEL源

EPEL7几乎是CentOS必备的源:

$ sudo yum install epel-release

添加mosquito-myrepo源

mosquito-myrepo是一个私人制作的第三方源,其中包含了fcitx输入法。

$ sudo yum-config-manager --add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-7/mosquito-myrepo-epel-7.repo

安装输入法

可以选择下面的各种输入法中的某一个或多个:

$ yum install fcitx-googlepinyin fcitx-cloudpinyin # 谷歌拼音输入法
$ yum install fcitx-rime fcitx-cloudpinyin # 中州韵输入法
$ yum install fcitx-libpinyin fcitx-cloudpinyin # libpinyin输入法
$ yum install fcitx-sunpinyin sunpinyin-data fcitx-cloudpinyin # sunpinyin输入法

清理工作

mosquito-myrepo在不断地支持更多的软件,这也进一步造成该repo中的软件与base、EPEL中的软件存在版本冲突,在该repo的项目主页中建议安装yum的优先级插件 yum-plugin-priorities ,这在一定程度上会缓解版本冲突问题,但无法从根本上避免。

鉴于多个repo的版本冲突会造成一些麻烦,最好的办法还是在安装完需要的软件之后就禁用该repo,需要的时候再启用。

编辑 /etc/yum.repos.d/mosquito-myrepo-epel-7.repo ,将其中的 enable=1 改成 enable=0 即可。

将centos7打造成桌面系统

前言
以下所有操作默认在root权限下执行,桌面环境是kde,使用gnome的也可以参考一下。
我收集的以下要用到的一些安装包,360网盘http://yunpan.cn/csMhBAp92vTgN 提取码 92e2
以下要用的安装软件语法:
通过软件源在线安装:
sudo yum -y install 软件名
其中参数-y为所有选项均选则yes,不加-y则要手动确认
通过本地rpm包安装:
sudo rpm -ivh 软件名
其中参数-i为安装,-vh为列出安装过程

一、安装centos7后配置
1、将安装光盘构建为本地yun源
1.安装createrepo
yum install createrepo

2.复制光盘镜像文件到/usr/local/src
cp CentOS-7.0-1406-DVD.iso /usr/local/src

3.将安装光盘文件挂载
mkdir /media/CentOS7-LocalSource
mount -t iso9660 -o loop /usr/local/src/CentOS-7.0-1406-DVD.iso/media/CentOS7-LocalSource

4.设置开机自动挂载光盘镜像
vi /etc/fstab

在最后添加一行(注意:fstab写错了会进入emergency mode,无法正常加载系统)
/usr/local/src/CentOS-7.0-1406-DVD.iso /media/CentOS7-LocalSourceiso9660 defaults,ro,loop 0 0

5.重写repodata(未修改光盘镜像不需要此操作)
cd /media
createrepo CentOS7-LocalServer

6.配置源
vi /etc/yum.repos.d/CentOS7-LocalServer.repo

[CentOS7-LocalServer]
name=LocalServer
baseurl=ftp://192.168.1.119/CentOS7-LocalServer
enable=1
gpgcheck=0

1.复制光盘镜像文件到/usr/local/src cp CentOS-7.0-1406-DVD.iso /usr/local/src
2.将安装光盘文件挂载 mkdir /media/CentOS7-LocalSource
3.设置开机自动挂载光盘镜像 vi /etc/fstab /usr/local/src/CentOS-7.0-1406-DVD.iso/media/CentOS7-LocalSource iso9660 defaults,ro,loop 0 0
4. 配置源 vi /etc/yum.repos.d/CentOS7-LocalSource.repo [CentOS7-LocalSource] name= CentOS7-LocalSource baseurl=file:///media/CentOS7-LocalSource enable=1 gpgcheck=0
5.重新建立yum缓存 yum clean all yum makecache 6.本地yum源搭建完成 reboot

另一种方法:配置本地yum 源不需要这么麻烦的, 直接mount 到 /mnt 下就好了, baseurl弄成file 就好了, 没必要弄成ftp 的

7.重新建立yum缓存
yum clean all
yum makecache

8.本地yum源搭建完成

2、配置kde桌面语言中文显示
我装的是kde桌面,刚装好时桌面是英文显示的,所以现在来配置一下
yum listkde*chinese
yum install kde-l10n-Chinese.noarch

二、添加第三方软件源1、添加rpmforge源
该源听说很强大,不过我看了下目前centos7的软件包并不多,关于5和6的包倒是很多
下载地址:http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
安装:
cd ~/下载
rpm –ivh rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
2、添加elrepo源
该源包含NVIDIA显卡驱动
下载地址:
http://elrepo.reloumirrors.net/elrepo/el7/x86_64/RPMS/elrepo-release-7.0-1.el7.elrepo.noarch.rpm
安装:
cd ~/下载
rpm –ivh elrepo-release-7.0-1.el7.elrepo.noarch.rpm
3、添加epel源
该源包含很多fedora移植过来的软件

下载地址:http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
安装:
cd ~/下载
rpm -ivh epel-release-7-2.noarch.rpm
4、添加mosquito源
该源包含的软件有(配合nux-dextop源使用)
pidgin-lwqq – 使用 WebQQ 协议编写的 pidgin-QQ 插件
pidgin-openfetion – 使用 fetion v4 协议编写的 pidgin 飞信插件
pidgin-sendscreenshot – pidgin 截图插件
wiznote – 为知笔记
sogou-pinyin – 搜狗拼音输入法,基于 fcitx 框架开发
sogou-pinyin-skins – 搜狗拼音输入法皮肤
fcitx-googlepinyin – 基于 fcitx 框架的谷歌拼音输入模块
fcitx-rime – 中州韵输入法
fcitx-libpinyin – 基于 fcitx 框架的 libpinyin 输入法
fcitx-sunpinyin – 基于 fcitx 框架的 sunpinyin 输入法
fcitx-configtool, kcm-fcitx – GTK 和 KDE 下的 fcitx 配置工具
openyoudao – 一个 python 编写的有道词典 linux 客户端
deepin-music-player – 深度音乐播放器
dmusic-plugin-baidumusic – 深度音乐播放器的百度音乐插件
osdlyrics – 支持多款音乐播放器的桌面歌词软件
pointdownload – 一款方便高效的下载软件
mvgather – 一款支持影视点播的视频客户端,内容来自 yunfan.com
deepin-screenshot – 深度截图
deepin-translator – 深度翻译
xware-desktop – 迅雷桌面版
bcloud – 百度云的 linux 客户端
screenfetch – 获取系统/主题信息的命令行工具
musicbox – 网易云音乐的命令行客户端
moonplayer – 视频播放器,支持搜索播放 youku, tudou, iqiyi, sohu, 56, funshion 的网络视频
gouyong – 够用翻译,支持取词
doubanfm-qt – 基于 Qt5 开发的 DoubanFM 客户端
douban.fm – 基于 NodeJS 开发的 DoubanFM CLI 客户端

1)方法一:直接安装
终端输入,回车即可
yum-config-manager –add-repo=https://copr.fedoraproject.org/coprs/mosquito/myrepo/repo/epel-$(rpm-E %?rhel)/mosquito-myrepo-epel-$(rpm -E %?rhel).repo
2)方法二:手动编写repo文件
若方法一不可用,用vi新建一个/etc/yum.repos.d/mosquito-myrepo.repo文件
vi /etc/yum.repos.d/mosquito-myrepo.repo 往里面写入一下语句 [mosquito-myrepo]
name=Copr repo for myrepo owned by mosquito
baseurl=http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo/epel-7-$basearch/
skip_if_unavailable=True
gpgcheck=0
enabled=1
按:wq保存退出5. 添加nux-dextop源1)方法一:直接安装
终端输入,回车即可
yumlocalinstall http://li.nux.ro/download/nux/dextop/el$(rpm -E %rhel)/x86_64/nux-dextop-release-0-2.el$(rpm-E %rhel).nux.noarch.rpm
2)方法二:
下载:
http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
安装:
cd ~/下载
rpm –ivh nux-dextop-release-0-1.el7.nux.noarch.rpm
6.运行以下命令生成以上第三方源的yum缓存
sudo yum cleanall
sduo yummakecache
7、安装fastestmirror
一个自动选择最快的yum源的插件
安装方法:
1)搜索fastestmirror包的全名
sudo yum searchfastestmirror
2)假设搜索的结果是“yum-fastestmirror-noarch”,那么输入命令
sudo yum installyum-fastestmirror-noarch
8、如果不想这么麻烦自己安装第三方源,可以将我在百度网盘里提供的repo和gpg直接复制到本机centos7上就可以了
导入repo
cdrepo目录
cp*.repo /etc/yum.repos.d
导入repo的密钥gpg
cdgpg目录
cp* /etc/pki/rpm-gpg

三、安装一些日常应用软件1、安装chrome浏览器
Firefox 是各centos7发行版默认的浏览器,chrome是Google出品的一款很强大的浏览器,所谓Google出品,必属精品。还有adobe- flash插件的安装。chrome访问不了官网, adobe-flash插件可以分别到官网下载,在软件源里都没有,前面已经给出了我的百度网盘分享地址
安装方法:
1)安装chrome
首先进入rpm安装包所在目录,cd命令参照前面,后面所有安装均要进入安装包所在目录,不再提示。
运行下面这条命令
sudo rpm –ivh google-chrome*.rpm
如果提示缺少什么依赖包,则安装依赖包后在执行,后面的软件安装缺少依赖包时参照此处依赖包的安装,依赖包的安装方法
sudo yum –y install 依赖包1 依赖包2 依赖包n
2)安装adobe-flash插件
sudo rpm –ivh flash*.rpm
2、安装桌面插件cairo-dock
一个仿苹果风的桌面插件。这个安装后要在 系统设置->桌面效果 设置,忘了哪个效果了,应该是跟透明相关的效果,否则有一条黑黑的条条,很难看
yum install cairo-dock
3、压缩与解压缩工具
Linux 下打包压缩解压缩一般用的是tar、gzip、bzip2命令,tar打包后的压缩包通常为*.tar.gz或*.tar.bz,gzip压缩后的文件 为*.gz,bzip2压缩后的文件为*.bz。也有办法解压缩zip文件。但对于新手来说,win平台常见的rar、zip和7z文件使用unrar、 unzip和p7zip可能更为适合,现在我们来安装一下。
安装方法:
1)安装unrar和unzip
sudo yum install unrar unzip
2)安装p7zip
sudo yun install p7zip
4、在线音乐kwplayer
这是一个酷我音乐盒的linux版本,kwplayer 是linux桌面下的轻量级的音乐播放软件, 由LiuLang同学开发, 使用的是Python3+gtk3, 开源的(GPLv3),地址为https://github.com/LiuLang/kwplayer
方法:
sudo rpm –ivh kwplayer*.rpm
这个要安装音频解码器等依赖包,根据依赖检测缺失的包安装一下就好
5、视频播放器Mplayer和smplayer
yum install mplayer smplayer
6、视频播放器VLC
yum -y –enablerepo=nux-dextop installgstreamer-ffmpeg gstreamer-plugins-ugly gstreamer-plugins-bad ffmpeg libvdpaumpg123 gstreamer-plugins-bad-nonfree gstreamer1-libavgstreamer1-plugins-bad-freeworld
yum install vlc
7、办公软件
默 认安装的libreoffice是开源的办公软件,兼容微软的office的各种文档格式,但是有点问题就是可能两者的显示效果并不一致,不知道是不是跟 文字编码和字体有关,这一点上国产的WPS则要好一点点,所以一般linux和windows的文档交流用的是pdf文档。因为不同系统对office文 档的显示效果并不那么一致,就连win系统不同版本间对office的显示效果有时都会不一样。
安装方法:
安装wps,wps for linux下载地址
http://community.wps.cn/download/
sudo rpm –ivh wps-office*.rpm\
然后这个在centos7上面缺少好多依赖包,一个个把依赖包安装上去吧,参照前面的方法
安装后打开wps是可能会提示缺少字体,可以到win系统下把字体复制到/usr/share/fonts/文件夹下就是了。因为那些字体是有版权的,wps并没有集成。
8、PDF阅读器
Centos7自带的okular挺好用的
9、chm阅读器
我从fedora20上移植过来的kchmviewer,所有第三方源似乎都没有关于chm阅读的软件,前面的百度网盘有分享
rpm –ivh chmlib-0.40-9.el7.x86_64.rpm kio_msits-5.2-5.el7.x86_64.rpmkchmviewer-common-5.2-5.el7.noarch.rpm kchmviewer-5.2-5.el7.x86_64.rpm
10、图形处理工具gimp和矢量图处理工具inkscape
Windows下有Photoshop这个图形处理软件,而linux下对应的图形处理工具则是gimp,值得一提的是,gimp比Photoshop还要强大一些,可以直接输出视频。而inkscape则是处理矢量图的工具,类似与illustrator
安装方法:
sudo yum install gimp
sudo yum install inkcape
11、翻译词典stardict
星 际译王(stardict)是利用GTK(GIMP TOOLKIT)开发的国际化的、跨平台的自由的桌面字典软件。它并不包含字典档,使用者须自行下载配合使用。它可以运行于多种不同的平台,如 Linux, MicrosoftWindows,FreeBSD及Solaris,并使用GPL授权。这是从fedora20源里弄下来的,直接用,没什么bug
安装方法:
rpm –ivh stardict-3.0.5-1.fc20.x86_64.rpm
词库安装:(我在百度网盘里有分享)
cp 词库 /usr/share/stardict/dic
12、linux版百度云管家bcloud
这个也是kwplayer的作者编写的,我们已经添加了源,直接装就好了
yum installbcloud
13、邮件收发工具thunderbird
yuminstall thunderbird
14、录制桌面操作视频的工具qt-recordMyDesktop
Kde桌面安装
yum installqt-recordmydesktop
gnome桌面安装
gtk-recordmydesktop
15、linux版迅雷
//TODO需要依赖包python3-qt5这个包没解决
16、linux版有道
可惜只有屏幕取词的功能
yuminstall openyoudao
17、影视集结号mvgather
可以看在线电视和一些在线视频
yuminstall mvgather
18、Moon Player
视频播放器,支持搜索播放 youku,tudou, iqiyi, sohu, 56, funshion 的网络视频
yum installmoonplayer
19、screenfetch
获取系统/主题信息的命令行工具,大神都在用
yuminstall screenfetch
20、点载pointdownload
一款方便高效的下载软件,支持 HTTP,BT, Magnet, ed2k, Thunder 等下载协议,支持迅雷离线加速和高速通道功能,支持视频下载功能。
yuminstall pointdownload

四、磁盘管理与刻录、启动U盘制作1、图形化分区和格式化磁盘工具gparted
在 Linux 中调整分区最简单的方法是使用GParted 程序。它拒绝在任何当前挂载的分区上进行操作,不能调整根目录(/)或者其他对操作系统功能来说至关重要的分区,避免了误操作。当然要调整这些至关重要的分区还是可以在命令行进行的。
安装方法:
yum install gparted
2、专业的图形化光盘刻录工具k3b
K3b(KDE Burn Baby Burn)是一个设计给 KDE在Linux或其它类Unix系统上的CD/DVD烧录的自由软件 。当然各linux发行版一般都有自带磁盘刻录的工具啦。
Centos7自带了,挺好用的,效果不比Nero差
3、Linux下制作USB安装盘(启动U盘)
在 windows下我们使用通过制作PE或者使用UltraISO写入硬盘映像的方法来制作USB引导安装盘,也就是所谓的启动U盘,在linux下也是可 以做到的,通过unetbootin这个傻瓜式的图形软件就可以一键制作各linux发行版的USB引导盘,但可惜的是unetbootin并不支持 win系统的USB安装盘的制作。没有关系我们可以使用gparted、ms-sys、cp等工具进行制作win系统的USB引导盘,下面就来介绍一下。
安装方法:
1) 制作linux各发行版USB安装盘
yum installunetbootin
然后打开unetbootin这个软件就可以一键制作linux各发行版USB安装盘了。
2)制作win7系统的USB安装盘
有三步:
第一步:使用gparted格式化U盘为NTFS格式
第二步:使用ms-sys -7 /dev/sdb 写入win7引导信息到dev/sdb磁盘上面,注意看你的U盘设备是什么,是“dev/sdb”还是“dev/sdc”
第三部:挂载win7.iso和你的U盘,复制win7.iso里面的所有信息到U盘去,可以使用cp –r命令或直接在图形化的文件管理器里用鼠标进行复制。

gparted前面已经介绍了安装的方法,现在介绍安装ms-sys这个微软出品的在开源linux上使用的写入win系统引导信息的命令行工具,去官网下载一个最新版,http://sourceforge.net/projects/ms-sys/
只有源码的makefile文件,没有前面用的那种rpm包,所以我们要手动编译并安装
在终端进入下载的ms-sys目录下,运行命令
sudo make
这时如果没有错误提示则在运行make install命令,如果提示找不到cc或gcc,那就是没有安装gcc编译器的意思。
这时就可以先运行命令安装gcc编译器
sudo yum install gcc
安装完gcc编译器后,我们再运行
sudo make
sudo make install
安装完ms-sys命令后,我们可以运行ms-sys命令测试一下,这是就可以看到ms-sys的具体用法了。
然后我们使用之前安装的图形化gparted工具将U盘格式化为NTFS格式,win7安装盘一定要是NTFS格式,否则制作的引导盘无法引导win7系统,
格式化后关闭gparted,打开终端,然后输入partprobe命令刷新磁盘信息
然后写入win7引导信息到U盘,运行命令
ms-sys -7 /dev/sdb
-7这个参数是写入win7引导信息的意思,/dev/sdb是你的U盘设备名
最后挂载win7.iso并复制所有iso里的文件到你的U盘里面,可以使用如下命令
挂载win7.iso
sudo mount 路径/win7.iso /mnt/media
复制文件
cp –r /mnt/media/* U盘的挂载路径
因为win7.iso有3.2G大小,复制需要10-20分钟时间,耐心等待就好
如果你觉得命令行下看不到进度条不放心,也可以使用图形化的文件管理器进行复制
复制完后就win7USB引导设备就制作完成了,XP和win8我没有尝试,应该也是可以成功的。

五、开发环境的安装
如果是作为桌面使用,以上的软件已经足够像在windows上那样随心所欲地操作了,但如果作为开发者而言,一些开发环境的安装是不能不知道的。比如C/C++的编译器GCC,Java的编译与运行环境JDK,目前比较流行的Java的集成开发环境eclipse,甚至还有Oracle数据库、apache服务器等等。
1、安装GCC编译器
如果安装centos7时没有选择安装开发环境那一项,那么
yum install gcc gcc-c++
2、安装openjdk
openjdk 是jdk的开放原始码版本,以GPL协议的形式放出。在JDK7的时候,openjdk已经成为jdk7的主干开发,sun jdk7是在openjdk7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用 JRL(JavaResearchLicense,Java研究授权协议)发布。至于openjdk6则更是有其复杂的一面,首先是openjdk6是 jdk7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。
我们安装openjdk7就好了
1)安装java程序运行环境
java-1.7.0-openjdk.x86_64(Java程序的运行环境,libreoffice等多数开源程序的运行就是基于此)
yum install java-1.7.0-openjdk.x86_64
1) 安装java开发环境
java-1.7.0-openjdk-devel.x86_64(开发环境,Java的编译环境)
sudoyum –y install java-1.7.0-openjdk-devel.x86_64
3、安装linux下的常用文本编辑器
vi是所有linux下的强大命令行文本编辑器,vim 是vi的升级版本,有高亮显示的功能,已经是一个代码编辑器了,很多程序员都喜欢用vim或者emacs作为写C/C++代码的编辑器。nano是一个易 于使用的命令行文本编辑器。gedit是gnome桌面默认的图形文本编辑器,对应的,KDE桌面也有一个默认的图形文本编辑器叫kwrite。
安装方法:
1)安装vim
sudo yum –y install vim
2)安装nano
sudo yum –y install nano
3)安装emacs
sudo yum –y install emacs
4、安装eclipse
Eclipse是目前比较流行的Java集成开发环境(Eclipse官网下载的绿色软件,解压后直接用)
tar -zxvf eclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz -C ~
5、安装oracle11g数据库
rpm –ivh oracle-xe-11.2.0-1.0.x86_64.rpm
6、安装tomcat服务器
tomcat官网下载的绿色软件,解压后直接用
tar-zxvf apache-tomcat-7.0.56.tar.gz -C ~

五、几个常见问题的说明1、当前用户不在sudoers文件中
解决办法是,将当前用户写到/etc/sudoers文件中
1)切换到root用户
su –
2)修改/etc/sudoers文件权限,修改为可写权限
chmod 777 /etc/sudoers
3)使用gedit或kwrite编辑/etc/sudoers文件
添加要提升权限的用户;在文件中找到root ALL=(ALL)ALL那一行,在该行下添加提升权限的用户信息,比如我的用户名为“jison“,就填上jison如:
root ALL=(ALL) ALL
jison ALL=(ALL) ALL
说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)
4)保存退出,并恢复/etc/sudoers的访问权限为440
chmod440 /etc/sudoers
5)切换到普通用户,测试用户权限提升功能
sudo命令
2、音乐格式不支持播放
那是因为没有安装到相关的音乐解码器,安装一下以下音频解码器就好了。
安装音频解码器:(可以一条命令一起安装,每个包之间用空格隔开即可,这样写只是为了大家知道有哪些包)
sudo yum install ffmpeg
sudo yum install ffmpeg-libs
sudo yum install gstreamer-ffmpeg
sudo yum install xvidcore
sudo yum install libdvdread
sudo yum install libdvdnav
sudo yum install lsdvd
sudo yum install gstreamer-plugins-good
sudo yum install gstreamer-plugins-bad
sudo yum install gstreamer-plugins-ugly
sudo yum install gstreamer-plugins-bad
sudo yum install gstreamer-ffmpeg
3、视频格式不支持播放
那是因为没有安装到相关的视频解码器,安装一下以下视频解码器就好了。
安装视频解码器:(可以一条命令一起安装,每个包之间用空格隔开即可,这样写只是为了大家知道有哪些包)
sudo yum install ffmpeg
sudoyum install ffmpeg-libs
sudo yum install gstreamer-ffmpeg
sudo yum install libmatroska
sudo yum install xvidcore
4、centos7的备份与还原和grub2修复
centos7备份还原与grub2引导和rescue模式修改root密码
一.centos7备份
1.su –
2.cd /
3.tar -zpPcvf backup.tgz –exclude=/sys –exclude=/mnt –exclude=/proc–exclude=/lost+found –exclude=backup.tgz /
二.centos7还原(原系统挂掉解决办法,系统没挂直接tar即可还原)
1.centos7安装盘进入援救模式
2.给磁盘分区(sda1用作根目录,sda2用作交换分区)
fdisk/dev/sda
p 向屏幕打印硬盘的分区
d 删除分区
n 新建分区
w 保存更改并退出
q 退出不保存之前的操作
3.格式化分区
mke2fs-t ext3 /dev/sda1 将/dev/sda1格式化为ext3文件系统
mkswap/dev/sda2 将/dev/sda2格式化为交换分区
4.挂载/dev/sda1到centos启动盘援救系统的/mnt目录下
mount/dev/sda1 /mnt
5.还原系统备份到/dev/sda1所挂载的目录/mnt
tar-zpxvf backup.tgz -C /mnt

三.安装grub并写入引导信息到mbr
1.更改/dev/sda1所挂载的目录/mnt为根目录
chroot/mnt
2.挂载proc和sysfs
mount-t proc proc /proc
mountsysfs /sys -t sysfs
3.安装grub2到/dev/sda的mbr
grub2-install/dev/sda1
4.更新/boot/grub2/grub.cfg和/etc/grub2.cfg的信息
grub2-mkconfig-o /boot/grub2/grub.cfg
grub2-mkconfig-o /etc/grub2.cfg
{/**
* @引申的命令
* 查看默认引导的内核 grub2-editenvlist
* 修改默认引导的标题 grub2-set-default”标题”
* 未chroot时使用(假设/mnt为根目录挂在位置) grub2-install –directory-root=/mnt/dev/sda
*/
}
5.把/etc/fstab文件中的uuid标识符改为硬盘设备分区
比如:
行首的UUID=03feda9-c221-4375-a6bf-0b80bd875323改为/dev/sda1
UUID=f4e3d0dc-df2f-446f-9403-0e51835ca4b3改为/dev/sda2
四.更改root密码(不知道为何,没有这个操作进不了系统)
1.开机选择界面按e
2.然后在倒数第二行内核vmlinuz那一行后面加 rw single init=/bin/bash,接着Ctrl+X进入但用户模式
3.passwd修改root密码
4.touch /.autorelabel
5.exec /sbin/init(一定要这样启动),接着输入刚刚修改root密码回车,自动重启后就可以进入还原的系统了
5、双系统win7引导项丢失问题
一.用vi编辑/boot/grub2/grub.cfg文件
vi /boot/grub2/grub.cfg

找到下面这段
### BEGIN /etc/grub.d/30_os-prober ###
### END/etc/grub.d/30_os-prober ###
修改为下面这段(+2没有空格)
### BEGIN /etc/grub.d/30_os-prober ###
menuentry “Windows 7″{
insmod part_msdos
insmod ntfs
set root=*(hd0,msdos1)*
search –no-flooppy –fs-uuid –set6a9463b094637e07
chainloader +2
}
### END/etc/grub.d/30_os-prober ###

查看分区的uuid
blkid/dev/sda1

二.修改win7为默认启动系统
查看默认引导的内核
grub2-editenv list
修改默认引导的系统(双引号内的字符串为上面修改grub.cfg的”Windows7”)
grub2-set-default “Windows 7”
6、ibus拼音输入法
按win+空格就可以切换输入法了,这里提一下,免得找不到
7、给konsole做一个快捷键Ctrl+Alt+T
打开 系统设置->快捷方式->手势自定义快捷键->编辑->新建->全局快捷键->命令/URL-
快捷方式命名为“konsole“
触发器->快捷键输入“Ctrl+Alt+T”
动作->命令/URL输入“/usr/bin/konsole”
最后点击应用就ok了
8、解决ntfs格式的磁盘挂载
1.下载
http://www.tuxera.com/community/ntfs-3g-download/
2.编译工具(若没有yum安装一下)
gcc compiler, libc-dev libraries
3.编译安装()
./configure
make
make install # or *sudo make install* ifyou aren*t root
4.挂载ntfs分区(以挂载/dev/sdb1为例)
mount -t ntfs-3g /dev/sdb1 /mnt/windows
5.卸载ntfs分区
umount /dev/sdb1
6.设置开机挂载
vi /etc/fstab
到最后一行添加
/dev/sda1 /mnt/windows ntfs-3g defaults 0 0
9、配置konsole字体和外观
konsole默认状态极丑,文字有时显示不全,我们只要设置一下就好了
设置->管理配置方案->编辑配置方案->外观
选择自己的配色方案和背景,编辑需要的效果即可
字体选择自己喜欢的一个,调整好大小和显示效果即可

六、centos7的虚拟化1、kvm虚拟机
kvm是未来虚拟化的趋势,因为从内核2.6.20开始已经整合到内核里面了,又称为基于内核的虚拟机。
它和xen均是虚拟化的解决方案,但是目前中国用的较多的还是xen的解决方案,xen的高手也多一些。
1.安装
查看虚拟支持情况:grep-E *svm|vmx* /proc/cpuinfo
需要注意的是,开启主板BIOS里的AMD或者INTEL的CPU的虚拟化支持。
如果是服务器上的实装,一般都不会安装GUI,采用最小化安装,那么执行以下命令:
yum -y install qemu-kvm libvirtvirt-install bridge-utils
并且要会设置桥接网卡。这里不再介绍了。
如果是有GUI的界面的,比如我自己的笔记本电脑,那么要简单的多了。
yum install qemu-kvm qemu-imgyum installvirt-manager libvirt libvirt-python python-virtinst libvirt-client
然后重启下电脑。
lsmod | grep kvm

确认模块已经被加装了,如果出现以下两行,则表示模块已安装
kvm_intel 138567 0
kvm 441119 1 kvm_intel

开启libvirtd服务
systemctl start libvirtd
systemctl enable libvirtd

2.配置桥接网络接口
为即将安装的kvm虚拟机配置一个桥接网络接口
vi/etc/sysconfig/network-scripts/ifcfg-br0
我的配置有点像这样
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=br0
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
编辑实际网卡的配置
vi/etc/sysconfig/network-scripts/ifcfg-enp8s0
我的配置有点像这样
DEVICE=enp8s0
TYPE=Ethernet
BOOTPROTO=dhcp
BRIDGE=br0
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=enp8s0
UUID=bd4e4309-1113-4223-b94a-509fe0d15c8b
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
然后重启下电脑
reboot

3.安装kvm虚拟机
打开虚拟系统管理器(virt-manager),安装系统挺傻瓜式的,唯一需要注意的是网卡选择上面配置的br0桥接网卡
安装完成之后,就可以使用本地路由器分配的ip地址上网了,也可以通过ip地址进行远程登陆管理形成vpn(虚拟专用网了)
值得一提的是,安装kvm虚拟机时有三种让虚拟机访问外网的方式,即桥接,NAT和Host-only(使用主机网络)
但只有上面用到的桥接方式才能让外网访问安装的kvm虚拟机

2.xen虚拟机
//TODO 用到再说

3.VitualBox虚拟机
这个虚拟机也是开源的,没有vmware好用,仅仅是装过一个winxp
rpm–ivh VirtualBox-4.3-4.3.18_96516_el7-1.x86_64.rpm
//TODO并没有用来测试过桥接网络接口,用到再说
4.VMware虚拟机
VMware应该算是目前最好用的虚拟机软件了,但为什么放到最后说呢,因为上面三个是免费的,它是闭源收费的
好用归好用,但是一般用不起vmware的时候就只好用上面三个了
在CentOS7上安装Vmware 10.0.3。通常,这个版本是不能在CentOS7工作的,因为它只能运行在比较低的内核版本3.10上。

首先,以正常方式下载并安装(没有问题)。唯一的问题是在后来运行vmware程序的时候。
shVMware-Workstation-Full-10.0.3-1895310.x86_64.bundle
如何修复?
1 –进入/usr/lib/vmware/modules/source。

cd /usr/lib/vmware/modules/source
2 –解压 vmnet.tar.

tar -xvf vmnet.tar
3 –进入 vmnet-only 目录。

cd vmnet-only
4 –编辑filter.c文件。

vi filter.c
在206和259行,替换以下字符串:

#if LINUX_VERSION_CODE <KERNEL_VERSION(3, 13, 0)
为:

#if LINUX_VERSION_CODE <KERNEL_VERSION(3, 0, 0)
保存并退出。

5 –回到先前文件夹。

cd ../
6 –再次压缩文件夹。

tar -uvf vmnet.tar vmnet-only
7 –移除旧目录。

rm -fr vmnet-only
8 –启动vmware并体验。

9 卸载Vmware
vmware-uninstall
vmware-installer -l
vmware-installer -u vmware-workstation
这三个命令足够卸载了

10 vmware功能强大,方便易用,跨平台且资料也多,没什么好说的了

七、几种我搭建过的服务器1、ftp服务器
1.安装vsftpd
yum install vsftpd

2.启动关闭
设置开机自启
systemctl enable vsftpd
启动/关闭重启
systemctl start/stop/restart vsftpd

3.关闭防火墙和selinux
systemct disable firewalld
systemctl stop firewalld
vi /etc/selinux/config
将SELINUX改为disabled
reboot

4.通过sftp登陆vsftpd
sftp username@192.168.1.119

5.浏览器访问
ftp://username:password@192.168.1.119

注:192.168.1.119是局域网服务器的ip
查看ip命令ipaddr
2、ftp-yum服务器
无防范的配置:(初学者用)

1.安装createrepo和vsftpd
yum install createrepo vsftpd

2.mkdir /home/ftp

3.cp-r 源的目录 /home/ftp

4.vi/etc/vsftpd/vsftpd.conf
最后添加anon_root=/home/ftp和no_anon_password=YES

6.cd/home/ftp

7.createrepo CentOS7-LocalServer/

8.关闭防火墙和selinux
systemct disable firewalld
systemctl stop firewalld
vi /etc/selinux/config
将SELINUX改为disabled
reboot

9.systemctl enable vsftpd

10.systemctl start vsftpd

1.客户端配置源
vi /etc/yum.repos.d/CentOS7-LocalServer.repo

[CentOS7-LocalServer]
name=LocalServer
baseurl=ftp://192.168.1.119/CentOS7-LocalServer
enable=1
gpgcheck=0

2.yum clean all

3.yum makecache

4.搭建完成,局域网ftp-yum服务器测试
yum install samba
3、samba服务器
centos7安装samba服务器

1.关闭防火墙,systemctlstop firewalld.service 和setenforce0

2.mkdir/home/samba
chmod 777 /home/samba

3.配置smb.conf,vim /etc/samba/smb.conf

smb.conf配置内容

[global]

workgroup= WORKGROUP
netbiosname = cmcc1
serverstring = Linux Samba Server TestServer
security= user #在samba4中share 和server已经被禁用

(表示192.168.1.*的IP)
hostsallow = 192.168.1.

mapto guest =Bad User

[WORKGROUP]
path= /home/samba
writeable= yes
browseable= yes

guestok= yes

3.启动samba服务,systemctl start samba.service
注意:在samba4中share 和server已经被禁用,需要用security = user 和mapto guest =Bad User来实现无密码访问目录
4、ntp服务器
1、NFS的安装需要的软件包;
Centos7:需要nfs-utils和nfs4;
2、使用如下命令查找系统是否已安装如上的软件包;
rpm–qa *nfs*
如果已安装,则直接操作第三步;如果未安装,则运行如下命令安装:
yuminstall nfs4* nfs-util
3、配置服务器端
建立挂载的目录,并且挂载目录,使用如下命令:
mkdir/home/nfs
cd/home/nfs
mkdirtest
然后修改/etc/exports文件,该文件定义了共享目录以及共享规则;
vi/etc/exports
在该文件中加入
/home/nfs192.168.1.119(rw,root_squash)
上面加入的这行的意思是nfs共享的目录是/home/nfs,192.168.1.0/24网段的IP可以访问,访问是读写,客户端可以有root权限;
修改完成后保存退出;
然后运行systemctlrestart nfs重启nfs服务;
4、关闭防火墙,使用如下命令
systemctlstop firewalld
5、配置客户端
客户端上的操作系统与服务端的操作系统相同;也需要安装nfs-utls和rpcbind;
安装后查看是否能正常访问nfs服务
showmount–e 192.168.1.119
出现如下结果说明能正常访问:
Exportlist for 192.168.1.119:
/home/nfs192.168.1.0/24
然后使用如下命令创建本地文件与服务端的挂载点关联
mkdir/home/nfs
mount-t nfs 192.168.1.119:/home/nfs/ /home/nfs/
然后运行ls/home/nfs在客户端看到服务器上共享目录中的文件。并可以对共享目录中的文件进行读写操作;
5、apache服务器
1.安装apache主程序httpd
yum install httpd

2.启动关闭
设置开机自启
systemctl enable httpd
启动/关闭重启
systemctl start/stop/restart httpd

3.在/var/www/html目录存放自己的网页目录就可以访问了
新建一个测试网页
cd /var/www/html
echo “hello world!”>helloworld.html

4.在局域网内的任意一台计算机访问测试网页helloworld.html
http://192.168.1.119/helloworkd.html
注:192.168.1.119是局域网apache服务器的ip
查看ip命令ipaddr
6、centos7服务管理、防火墙和selinux设置
1.服务管理
设置服务(service)开机自启和关闭开机自启
systemctl enable/disable service
设置服务启动/重启/关闭
systemctl start/restart/stop service
2.防火墙(firewalld)启动与关闭
防火墙开机自启
systemctl enable firewalld
防火墙关闭开机自启
systemctl disable firewalld
设置防火墙启动/重启/关闭
systemctl start/restart/stop firewalld
3.selinux设置与查看和修改运行模式
设置
vi /etc/selinux/config
找到SELINUX=enforcing这一行
可以修改为以下三个模式
SELINUX=enforcing 强制模式(默认)
SELINUX=permissive 宽容模式(有警告)
SELINUX=disabled 关闭

查看
getenforce
修改运行模式
setenforce 0|1
0 宽容模式(permissive)
1 强制模式(disabled)

systemctl是系统服务管理器命令,它实际上将service 和chkconfig 这两个命令组合到一起。

任务 旧指令 新指令
使某服务自动启动 chkconfig –level3 httpd on systemctl enable httpd.service
使某服务不自动启动 chkconfig –level3 httpd off systemctl disablehttpd.service
检查服务状态 service httpd status systemctl status httpd.service (服务详细信息)systemctl is-active httpd.service (仅显示是否Active)
显示所有已启动的服务 chkconfig –list systemctl list-units –type=service
启动某服务 service httpd start systemctl start httpd.service
停止某服务 service httpd stop systemctl stop httpd.service
重启某服务 service httpd restart systemctl restart httpd.service
下面以nfs服务为例:

1.启动nfs服务

systemctlstart nfs-server.service
2.设置开机自启动

systemctlenable nfs-server.service
3.停止开机自启动

systemctldisable nfs-server.service
4.查看服务当前状态

systemctlstatus nfs-server.service
5.重新启动某服务

systemctlrestart nfs-server.service
6.查看所有已启动的服务

systemctllist -units –type=service
开启防火墙22端口

iptables-I INPUT -p tcp –dport 22 -j ACCEPT
如果仍然有问题,就可能是SELinux导致的

关闭SElinux:

修改/etc/selinux/config文件中的SELINUX=””为 disabled,然后重启

彻底关闭防火墙:

sudosystemctl status firewalld.service
sudosystemctl stop firewalld.service
sudosystemctl disable firewalld.service
7、centos7的telnet和ssh远程登录
telnet远程登录
1. SentOS7.0 telnet-server 启动的问题。
解决方法:
①、先检查CentOS7.0是否已经安装以下两个安装包:telnet-server、xinetd。命令如下:
rpm-qa telnet-server
rpm-qa xinetd
如果没有安装,则先安装。安装命令:
yuminstall telnet-server-0.17-59.el7.x86_64.rpm
yuminstall xinetd-2.3.15-12.el7.x86_64.rpm
安装完成后,将xinetd服务加入开机自启动:
systemctlenable xinetd.service
将telnet服务加入开机自启动:
systemctlenable telnet.socket
最后,启动以上两个服务即可:
systemctlstart telnet.socket
systemctlstart xinetd(或servicexinetd start)

2.telnet 192.168.5.128 出错:No route to host
解决方法:在服务器主机运行以下命令:iptables -F 即可

3.telnet 192.168.5.128 出错:connection refuse
解决方法:
①、出现这个问题请先检查telnet-server 是否已经启动。
②、修改服务器主机允许root用户登录:
修改方法:
1)在客户端运行登录指令:telnet192.168.5.128
2)在服务器主机运行以下命令:tail/var/log/secure
查看log里面刚才客户端是以哪一个端口设备登录的(如:pts/1)。记录下来然后
打开/etc/securetty 将设备名添加进去即可。
ssh远程登录
1.centos7默认安装有openssh-server、openssh-client和openssh
2.所以我们直接登陆ssh192.168.1.119

3.后台运行的是sshd,所以我们可以通过它来开启和关闭ssh远程登陆服务
开启/重启/关闭
systemctl start/restart/stop sshd

原贴地址:http://tieba.baidu.com/p/3379447850

xfs文件系统使用总结

整理得有些乱,有些翻译可能不太准确,望见谅。
1. 相关概念及说明
1.1 xfs文件系统相关概念
1.1.1 文件系统日志
1.1.2 分配组
1.1.3 条带化分配
1.1.4 基于Extent的分配方式
1.1.5 可变块尺寸
1.1.6 延迟分配
1.1.7 稀疏文件
1.2 mkfs.xfs 常用参数说明:
-b选项 size= 逻辑块尺寸大小。The default block size is 4096 bytes (4 KB).

-n选项 size= 文件系统目录块大小。目录块应大于文件系统逻辑块。
-l选项 每个xfs文件系统有一个文件系统日志记录。这个日志需要专用的磁盘空间。这个空间不能被df显示,也不能以文件名来访问。日志记录分为外部和内部日志。外部指得是使用一个外部设备。内部指得是占用一个专用的磁盘空间。关于内部日志,这个大小是以-l size=选项来指定的。这个默认日志大小会越来越大,直到最大的日志大小,128M,在一个1TB的文件系统中。
For filesystems with a very high transaction activity, a large log size is recommended. You should avoid making your log too large because a large log can increase filesystem mount time after a crash.在一个比较大量活跃的业务文件系统中,推荐一个大的日志size.你应避免让你的日志大大,因为一个大日志能加重在crash后文件系统挂接时间

-d选项。主要用于数据部份的参数指定。例如在一个raid设备中如何进行分配。
For a RAID device, the default stripe unit is 0, indicating that the feature is disabled. You should configure the stripe unit and width sizes of RAID devices in order to avoid unexpected performance anomalies caused by the filesystem doing non-optimal I/O operations to the RAID unit. For example, if a block write is not aligned on a RAID stripe unit boundary and is not a full stripe unit, the RAID will be forced to do a read/modify/write cycle to write the data. This can have a significant performance impact. By setting the stripe unit size properly, XFS will avoid unaligned accesses。
如果一个块写入不是被列在一个条带单元范围里并且不是一个完整的条带单元,这个raid会被强制执行一个r/m/wm周期以写入数据。这能带来重大性能的影响。通过正确设置条带大小,xfs会避免不连续的访问。
##基于raid创建xfs文件系统实例:

1.3 xfs相关常用命令
xfs_admin: 调整 xfs 文件系统的各种参数
xfs_copy: 拷贝 xfs 文件系统的内容到一个或多个目标系统(并行方式)
xfs_db: 调试或检测 xfs 文件系统(查看文件系统碎片等)
xfs_check: 检测 xfs 文件系统的完整性
xfs_bmap: 查看一个文件的块映射
xfs_repair: 尝试修复受损的 xfs 文件系统
xfs_fsr: 碎片整理
xfs_quota: 管理 xfs 文件系统的磁盘配额
xfs_metadump: 将 xfs 文件系统的元数据 (metadata) 拷贝到一个文件中
xfs_mdrestore: 从一个文件中将元数据 (metadata) 恢复到 xfs 文件系统
xfs_growfs: 调整一个 xfs 文件系统大小(只能扩展)
xfs_freeze    暂停(-f)和恢复(-u)xfs 文件系统
xfs_logprint: 打印xfs文件系统的日志
xfs_mkfile: 创建xfs文件系统
xfs_info: 查询文件系统详细信息
xfs_ncheck: generate pathnames from i-numbers for XFS
xfs_rtcp: XFS实时拷贝命令
xfs_io: 调试xfs I/O路径

2. 关于xfs文件系统的规划
援引实例来说明。这是一个mysql分配空间的实例,主要说明如何进行计算来分配空间。

2.1 查看磁盘信息
#fdisk -ul
Disk /dev/sda: 438.5 GB, 438489317376 bytes
255 heads, 63 sectors/track, 53309 cylinders, total 856424448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00051fe9
Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     7813119     3905536   82  Linux swap / Solaris
Partition 1 does not end on cylinder boundary.
/dev/sda2   *     7813120    27344895     9765888   83  Linux
/dev/sda3        27344896   856422399   414538752   83  Linux
2.2  计算块使用
We want to use mysql on /dev/sda3, but how can we ensure that it is aligned with the RAID stripes?  It takes a small amount of math:

Start with your RAID stripe size.  Let’s use 64k which is a common default.  In this case 64K = 2^16 = 65536 bytes. 默认尺寸是64K
Get your sector size from fdisk.  In this case 512 bytes. 扇区大小512b
Calculate how many sectors fit in a RAID stripe.   65536 / 512 = 128 sectors per stripe. 每个条带大小128个扇区。
Get start boundary of our mysql partition from fdisk: 27344896. 查看mysql分区的起始数为27344896
See if the Start boundary for our mysql partition falls on a stripe boundary by dividing the start sector of the partition by the sectors per stripe:  27344896 / 128 = 213632.  This is a whole number, so we are good.  If it had a remainder, then our partition would not start on a RAID stripe boundary. 查看如果由起始扇区划分的起始边界落到条带的边界,再计算扇区数,得到一个整数。如果有余数,那么我们的分区不会从raid条带边界开始。

Create the Filesystem

XFS requires a little massaging (or a lot).  For a standard server, it’s fairly simple.  We need to know two things:

RAID stripe size
Number of unique, utilized disks in the RAID.  This turns out to be the same as the size formulas I gave above:
RAID 1+0:  is a set of mirrored drives, so the number here is num drives / 2.
RAID 5: is striped drives plus one full drive of parity, so the number here is num drives – 1.
In our case, it is RAID 1+0 64k stripe with 8 drives.  Since those drives each have a mirror, there are really 4 sets of unique drives that are striped over the top.  Using these numbers, we set the ‘su’ and ‘sw’ options in mkfs.xfs with those two values respectively.

2.3 格式化文件系统
通过以上实例总结执行命令 mkfs.xfs -d su=64k,sw=4 /dev/sda3

3. xfs文件系统的创建
3.1 默认方法
#mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1 isize=256    agcount=18, agsize=1048576 blks
data     =                       bsize=4096   blocks=17921788, imaxpct=25
=                       sunit=0      swidth=0 blks, unwritten=0
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2187, version=1
=                       sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0

3.2 指定块和内部log大小

# mkfs.xfs -b size=1k -l size=10m /dev/sdc1
meta-data=/dev/sdc1 isize=256    agcount=18, agsize=4194304 blks
data     =                       bsize=1024   blocks=71687152, imaxpct=25
=                       sunit=0      swidth=0 blks, unwritten=0
naming   =version 2              bsize=4096
log      =internal log           bsize=1024   blocks=10240, version=1
=                       sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
3.3 使用逻辑卷做为外部日志的卷
# mkfs.xfs -l logdev=/dev/sdh,size=65536b /dev/sdc1
meta-data=/dev/sdc1              isize=256    agcount=4, agsize=76433916
blks
=                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=305735663,
imaxpct=5
=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =/dev/sdh               bsize=4096   blocks=65536, version=2
=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3.3 目录块

# mkfs.xfs -b size=2k -n size=4k /dev/sdc1
meta-data=/dev/sdc1              isize=256    agcount=4,
agsize=152867832 blks
=                       sectsz=512   attr=2
data     =                       bsize=2048   blocks=611471327,
imaxpct=5
=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=2048   blocks=298569, version=2
=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

3.4 扩展文件系统
新增的空间不会使原有文件系统上的文件不会被改动,而且被增加的空间变成可用的附加的文件存储
XVM支持xfs系统的扩展
# xfs_growfs /mnt
meta-data=/mnt                   isize=256    agcount=30, agsize=262144 blks
data     =                       bsize=4096   blocks=7680000, imaxpct=25
=                       sunit=0      swidth=0 blks, unwritten=0
naming   =version 2              bsize=4096
log      =internal               bsize=4096   blocks=1200 version=1
=                       sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
data blocks changed from 7680000 to 17921788

4. 文件系统的维护
4.1 碎片的整理
查看文件块状况: xfs_bmap -v file.tar.bz2
查看磁盘碎片状况: xfs_db -c frag -r /dev/sda1
整理碎片: xfs_fsr /dev/sda1

4.2 文件系统一致性检测
xfs_repair -n /dev/cciss/cpd0p
xfs_repair -n (非更改模式)
xfs_check
不同于fsck,xfs_check和xfs_repair都不会在启动时自动调用。你应在觉得文件系统有问题时使用这些命令

4.3 修复文件系统
修复不一致的文件系统
xfs_repair不使用-n选项检查xfs的一致性,并且如果检测到问题,也会尽可能的检验它们。被检查和修复的文件系统必须被卸载。
xfs_repair检查大体分为7个阶段。修复错误信息大体为5种信息.
如果xfs_repair把文件和目录放进lost_found目录中并且你没有移动它们,下一步运行xfs_repair,它临时关闭这些文件和目录的inode.它们被重新连接在xfs_repair终止之前。由于关闭的inodes在lost_found,会看到以下的输出。

Phase 1 – find and verify superblock…
Phase 2 – zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan and clear agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1

– process newly discovered inodes…
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– clear lost+found (if it exists) …
– clearing existing “lost+found” inode
– deleting existing “lost+found” entry
– check for inodes claiming duplicate blocks…
– agno = 0
imap claims in-use inode 242000 is free, correcting imap
– agno = 1
– agno = 2

Phase 5 – rebuild AG headers and trees…
– reset superblock counters…
Phase 6 – check inode connectivity…
– ensuring existence of lost+found directory
– traversing filesystem starting at / …
– traversal finished …
– traversing all unattached subtrees …
– traversals finished …
– moving disconnected inodes to lost+found …
disconnected inode 242000, moving to lost+found
Phase 7 – verify and correct link counts…
done
In this example, inode 242000 was an inode that was moved to lost+found during a previous xfs_repair run. This run of xfs_repair found that the filesystem is consistent. If the lost+found directory had been empty, in phase 4 only the messages about clearing and deleting the lost+found directory would have appeared. The imap claims and disconnected inode messages appear (one pair of messages per inode) if there are inodes in the lost+found directory
在这个例子里 inode 242000是一个被移到lost_found在上次xfs_repair运行时侯。这个xfs_repair运行发现文件系统是连读的。如果lost_found被置空,在第四阶段只有关于清理和删除的信息出现。如果在lost_found目录里,imap claims和disconnected inode信息会出现。

参考文档:
http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=linux&db=bks&srch=&fname=/SGI_Admin/LX_XFS_AG/sgi_html/ch02.html
https://wiki.archlinux.org/index.php/Solid_State_Drives#XFS
http://en.wikipedia.org/wiki/XFS
http://baike.baidu.com/view/1222157.htm
http://www.percona.com/blog/2011/12/16/setting-up-xfs-the-simple-edition/
http://blog.chinaunix.net/uid-451-id-3188926.html

CentOS 7 x86_64适用的EPEL安装源 国内镜像列表

EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterprise Linux (RHEL) 的一个高质量软件源水EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 Centos、Scientific Linux 等提供高质量软件包的项目。

安装EPEL源

官方源直接安装

国内的往往速度会更快

这是来自官方公布的数据(2015-01-28)

http://mirrors.fedoraproject.org/publiclist/EPEL/7/x86_64/#CN

配置EPEL源

vi /etc/yum.repos.d/epel.repo

vi /etc/yum.repos.d/epel-testing.repo

这是已经替换好上海交大源的文件,如果想使用中科大的,请用http://mirrors.ustc.edu.cn/来替换http://ftp.sjtu.edu.cn/fedora/就可。其它以此来推。

检查源是否已添加

运行命令生成缓存

选择速度最快的yum源

yum安装插件yum-plugin-fastestmirror

CentOS 7使用EPEL和REMI第三方yum源

一、安装EPEL源:

# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# rpm -ivh epel-release-7-5.noarch.rpm

验证查看是否安装成功:
yum repolist


查看某个包的详细信息:
yum --enablerepo=epel info htop

列出epel源的所有包列表:
yum --disablerepo="*" --enablerepo="epel" list available | less

附:
1、RHEL/CentOS 6.x的EPEL源安装方法:

## RHEL/CentOS 6 64-Bit ##

# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

2、RHEL/CentOS 5.x的EPEL源安装方法:

## RHEL/CentOS 5 64-Bit ##

# wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm

二、安装remi源:
注意:安装REMI库不要在启用了REMI库时运行yum update。因为REMI库的包名与RHEL/CentOS默认库中的相同,运行yum update可能会触发意外的更新。平时禁用REMI库,在你需要安装RMEI库中独有的包时再启用。安装REMI库之前,首先需要启用EPEL库,因为 REMI中的一些包依赖于EPEL。

安装步骤:
在CentOS 7上:

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

在CentOS 6上:

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi

默认REMI是禁用的。要搜索或安装REMI仓库中的包,使用这些命令:

# yum --enablerepo=remi search php-fpm
# yum --enablerepo=remi install php-fpm