读《循序渐进Linux 第2版 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》,把一些我认为的重要的地方摘录下来。
第一篇 基础知识篇
Linux是一种自由和开放源代码的类 UNIX 操作系统
常见的Linux发行版:
Red Hat Enterprise Linux(RHEL,Red Hat的企业版Linux)。Red Hat现在主要做服务器版的Linux开发,在版本上注重性能和稳定性,以及对硬件的支持。
CentOS全名为“社区企业操作系统”(Community Enterprise Operating System)
它由来自于RHEL依照开放源代码规定发布的源代码编译而成,由于RHEL是商业产品,因此必须将Red Hat的所有Logo改成自己的CentOS标识,这就产生了CentOS操作系统。两者的不同在于,CentOS并不包含封闭源代码软件。因此,CentOS不但可以自由使用,而且能享受CentOS提供的长期免费升级和更新服务。这是CentOS的一个很大优势。
- Ubuntu Linux
Ubuntu(中文谐音为“友帮拓”、“优般图”、“乌班图”)是一个以桌面应用为主的Linux操作系统,基于Debian GNU/Linux,Ubuntu旨在为一般用户提供一个主要由自由软件构建而成的最新的同时又相当稳定的操作系统。
用虚拟机技术学习Linux
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
VirtualBox是一款开源虚拟机软件,官方网站是:https://www.virtualbox.org
Linux系统常见安装方式
- 硬盘安装方式
U盘安装方式
首先需要一个8GB左右的U盘,容量越大越好,CentOS 7.1版本的完整ISO镜像文件大小已经达到7GB左右。
从163开源站(http://mirrors.163.com)
下载CentOS 7.1的ISO镜像文件从网上下载一个U盘刻录工具,常见的U盘刻录工具有UltraISO、USBWriter等,这里推荐使用USBWriter
USBWriter是一个开源小工具,可从
http://sourceforge.net/projects/usbwriter/
下载,是专门用于 Linux 系统的U盘刻录工具。经过USBWriter刻录过的U盘,容量会自动变小,这是因为只看到一个FAT32分区的缘故,而另一个Linux分区在Windows下是看不到的。不过不用担心,恢复U盘到原始大小也很简单,从网上下载一个DiskGenius即可恢复U盘到原始大小。
使用USBWriter将下载好的ISO镜像文件刻录到U盘中,
把ISO文件刻录到U盘后,U盘上之前的所有数据都会丢失,所以在刻录前,要备份U盘上的数据。
U盘刻录成功后,需要重新插拔U盘,此时在Windows的磁盘管理器中,可以看到16GB的U盘已经变成6MB左右大小了。将U盘插入服务器的USB接口中,然后进入BIOS,设置从USB设备启动,接着重启系统。
网络安装方式
网络安装Linux一般是大批量的自动化安装过程。最常见的批量网络安装工具是Kickstart,它是一个无人值守的Linux系统自动安装工具。
- 光驱安装方式
可以从网上下载CentOS Linux版本ISO格式的安装介质,然后将ISO文件刻录成光盘。例如,可以从163开源站
http://mirrors.163.com/centos
下载。下载完成后,通过UltraISO、InfraRecorder、Nero Burning ROM等刻录软件将ISO文件刻录到DVD光盘,然后进入BIOS,设置计算机的第一启动顺序为DVD-ROM,保存设置后将DVD放入光驱,重新启动计算机,光盘将自动进行引导,启动Linux安装程序。
最常用的Linux关机命令
shutdown命令
使用shutdown命令可以安全地关闭Linux系统。
shutdown命令是用shell编写的程序,必须由超级用户才能执行。
1234567891011立即关机重启shutdown–r now立即关机shutdown–h now设定5分钟后关机,同时发出警告信息给登录的Linux用户shutdown +5 "System will shutdown after 5 minutes"halt命令
最简单的关机命令,相当于“shutdown –h”组合。
reboot命令
用于关机后系统重启。
init命令
主要用于系统不同运行级之间的切换,切换的工作是立即完成的。
例如,init 0是关机;init 6命令用于将系统运行级别切换到6,也就是重启系统。
系统服务管理工具systemd
systemd提供了一个非常强大的命令行工具 systemctl。
- 启动、停止、重启服务
|
|
- 查看、禁止、启用服务
使用enable/disable选项来控制一个服务是否开机启动
查看一个服务的运行状态,可以使用systemctl命令的“status”选项
- systemd电源管理命令
Linux与SecureCRT
VanDyke SecureCRT是最常用的终端仿真程序,简单地说,SecureCRT就是Windows下登录UNIX或Linux服务器主机的软件,SecureCRT支持SSH∗(SSH1和SSH2)。
在SecureCRT软件下,复制命令的快捷键是Ctrl+Insert,粘贴的快捷键是Shift+Insert。当然,也可以用单击鼠标右键的方式进行复制、粘贴。
rz、sz是Linux同Windows进行ZModem文件传输的命令行工具。
sz命令利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件。相对应地,从本地上传文件到Linux服务器,可以使用rz命令。
要使用rz、sz命令,需要在系统上安装对应的lrzsz软件包。
Linux常用命令及使用技巧
当用户登录系统后,如果登录字符界面,将出现shell命令提示符。“#”表示登录的用户是系统超级用户,“*”表示登录到系统的是普通用户。
- shell的命令格式
在shell的一个命令行中,还可以输入多个命令,用分号将各个命令分开,
也可以在多行中输入一个命令,用“\”将一个命令持续到下一行。
- shell的通配符
bash中常用的通配符有“*”、“?”、“[]”。
(1)“*”——匹配任意一个或多个字符
(2)“?”——匹配任意单一字符
(3)“[]”——匹配任何包含在方括号内的单字符
shell的重定向
输入重定向
输入重定向用于改变命令的输入源,利用输入重定向,就可以将一个文件的内容作为命令的输入,而不从键盘输入。
用于输入重定向的操作符有“<”和“<<”。输出重定向
输出重定向不是将命令的输出结果在屏幕输出,而是输出到一个指定文件中。
用于输出重定向的操作符有“>”和“>>”。
如果在“>”后面指定的文件不存在,shell 就会自动重建一个;如果文件存在,那么这个文件原有的内容将被覆盖;如果不想覆盖存在的文件,可以使用“>>”操作符。
错误重定向
错误重定向和标准输出重定向一样,可以使用操作符“2>”和“2>>”实现对错误输出的重定向。
shell的管道
管道的作用就是把一个命令的输出当作下一个命令的输入,而不经过任何中间文件。
通过管道符“|”可以建立管道连接。
shell中的引用
引用技术就是通知shell将这些特殊字符当作普通字符处理。shell中用于引用的字符有转义字符“\”、单引号“’”、双引号“”””。
包含在双引号内的大部分特殊字符可以当作普通字符处理,但是
仍有一些特殊字符即使用双引号括起来,也仍然保留自己的特殊含义,比如“$”、“\”和“`”。
shell的自动补全命令行
当用户输入某个命令的一部分后,按Tab键,shell就会根据系统环境变量信息提示出与用户输入命令相似的所有命令和文件
系统管理与维护
- ls命令
ls命令显示指定工作目录下的内容,列出工作目录所含的文件及子目录。
也提供了dir命令,用户也可以用dir命令代替ls命令。
ls的选项及其说明
pwd命令
执行pwd指令可立刻得知目前所在的工作目录的绝对路径名称
cd命令
改变当前工作目录
- date命令
显示或者修改系统时间与日期。只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。
- passwd命令
用于设置用户密码。
- su命令
su命令主要用于改变用户身份
- clear命令
clear命令用来清除屏幕信息
- man命令
man命令用来显示指定命令的帮助信息
- who命令
who命令显示目前登录到系统的用户
- w命令
用于显示登录到系统的用户信息
- uname命令
用来显示操作系统相关信息。
- uptime命令
uptime命令用来输出系统任务队列信息,
uptime输出当前系统时间、系统开机到现在的运行时间、目前有多少用户在线和系统平均负载等。
- last命令
列出目前与过去登入系统的用户相关信息。当执行last指令时,它会默认读取位于/var/log目录下名称为wtmp的文件,并把该给文件记录的登入系统的用户名单全部显示出来。
- dmesg命令
显示开机信息。
- free命令
free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。
- ps命令
ps命令显示系统进程在瞬间的运行动态
常用的选项介绍
- top命令
top命令提供了对系统处理器状态的实时监控,它能够实时显示系统中各个进程的资源占用状况。
文件管理与编辑
- mkdir命令
mkdir命令用于创建一个目录。mkdir是make directory的缩写。
- more命令
如果一个文本文件比较长,一屏无法显示完毕,就需要使用more命令。
按Enter键,more命令就会接着再显示文本的一行;如果按空格键,more命令就继续显示文本文件的另一屏信息。
- cat命令
cat命令用来将文件的内容输出到标准输出,
同时cat还可以用于连接合并文件。
- diff命令
diff命令用来比较文件的差异。diff以逐行的方式比较文本文件的异同,如果指定比较的是目录,则diff会比较目录中相同文件名的文件,但不会比较其中的子目录。
- grep命令
grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。
- rm命令
rm命令用来删除某个目录及其下的所有文件及子目录。对于链接文件,只是断开了链接,原文件保持不变。
使用rm命令要特别小心,“rm-rf”组合要慎用,因为一旦文件被删除,就不能被恢复。
- touch命令
用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。
- ln命令
ln命令用来在文件或目录之间创建链接。
Linux下的链接有两种,一种是硬链接(Hard Link),另一种是符号链接(Symbolic Link),默认情况下ln命令产生的是硬链接。
- file命令
file 命令用来显示文件的类型。对于长度为 0 的文件,将识别为空文件;对于符号连接文件,默认情况下将显示符号链接引用的真实文件路径。
- cp命令
cp命令用来将给出的文件或者目录复制到另一个文件或者目录中。
- find命令
find命令用来在指定的路径下查找指定的文件。
- split命令
split命令用来分割文档,将一个文件分成数个。
- mv命令
mv命令用来将文件或目录改名或将文件由一个目录移入另一个目录中。
压缩与解压
- zip/unzip命令
一般的文件或者目录进行压缩或者解压,默认生成以“.zip”为后缀的压缩包。
zip命令的选项及其说明
unzip命令的选项及其说明
- gzip/gunzip命令
将一般的文件进行压缩或者解压。压缩文件预设的扩展名为“.gz”,其实gunzip就是gzip的硬链接,因此无论是压缩或者解压都可以通过gzip来实现。
- bzip2/bunzip2命令
bunzip2其实是bzip2的符号链接,即软链接,因此压缩、解压都可以通过bzip2实现。
- tar命令
对文件或者目录进行打包归档,归档成一个文件,但是并不进行压缩。
- dd命令
dd命令用来转换或复制文件,同时可以对设备进行备份。
- cpio命令
cpio命令是通过重定向的方式将文件进行打包、备份、还原、恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。
cpio无法直接读取文件,它需要每个文件或者目录的完整路径名才能识别、读取,而find命令的输出刚好做到了这点,因此cpio命令一般和find命令配合使用。
磁盘管理与维护
- df命令
df命令用来检查Linux系统的磁盘空间占用情况。
- du命令
du命令用来显示文件或目录所占用的磁盘空间情况。
- fsck命令
fsck命令用来检查文件系统并尝试修复错误。
- sync命令
sync命令用来强制把内存中的数据写回硬盘,以免数据的丢失。
- eject 命令
eject 命令用来退出抽取式设备,如光驱或者磁带。如果该设备已经挂载,则 eject 先将设备卸载,然后再退出设备。
- mount/umount命令
挂载以及卸载指定的文件系统。
网络设置与维护
- ifconfig命令
ifconfig 命令用来配置网络或显示当前网络接口状态。它类似于 Windows 下的 ipconfig命令,同时ifconfig命令必须以root用户来执行。
格式如下:
ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]
interface:网络接口名,Linux下的网络接口名类似于eth0、eth1和lo等(在CentOS 7.x版本中,网络接口名变为类似enp0s1、enp0s2这样的标识),分别表示第1块网卡、第2块网卡和回环接口。这是个可选项,如果不添加此选项,则显示系统中所有的网卡信息;如果添加此选项,则显示指定网卡信息。
up:激活一个网络接口。
down:与up相反,使指定的网络接口无效。
netmask:为一个指定的网络接口指定子网掩码。
addr:这里的“addr”为网络接口指定的IP地址。
broadcast:为指定的接口设置广播地址。
用ifconfig命令配置的网卡信息,在网卡重启或者机器重启后,所有的配置都失效了,如果要让网卡配置永久生效,就需要修改网卡的配置文件了
- scp命令
scp就是secure copy,用于将文件或者目录从一个Linux系统复制到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。
- netstat命令
netstat命令用来显示本机网络连接、运行端口和路由表等信息。
- traceroute命令
traceroute 命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。
- telnet命令
telnet 命令通过 telnet 协议与远程主机通信或者获取远程主机对应端口的信息。
- wget命令
wget命令用来从网络上下载某个软件,
文本编辑工具vi
vi编辑程序有两种工作模式,即命令模式和文本输入模式。
Linux下软件的安装与管理
最常见的有源码安装方式、RPM安装方式、yum安装方式和二进制软件安装方式。
一、 源码安装方式
- 下载、解压源码
常见的源码打包压缩格式有“.tar.gz”、“.tar.baz2”等。
- 分析安装平台环境
在软件包解压完毕之后,源码目录中,一般都会存在configure和README这两个文件。configure文件一般是个可执行文件,可以在当前目录下直接输入“./configure”进行软件安装的环境测试,如果提示缺少某些安装包,就需要进行安装,直到测试通过。
- 编译、安装软件
在Linux系统下,make是经常用到的编译命令。
- makefile文件
make工具最主要的功能就是通过makefile文件来实现的。
文件中定义了各个源文件之间的依赖关系,说明了如何编译源文件并生成可执行文件,它通过描述各个源程序之间的关系让make工具自动完成编译工作。
- make与make install
须在命令行输入make命令,即可进入编译阶段,根据软件源程序的大小和系统的硬件配置,编译时间不定,编译完毕,会在当前目录以及子目录下生成相应的可执行文件。
命令行输入make install命令,开始安装软件。
二、 RPM包方式安装
RPM是Red Hat Package Manager的缩写,本意就是Red Hat软件包管理器,现在已经成为Linux平台下通用的软件包管理方式。
RPM包管理方式的优点是:安装简单、方便,因为软件已经编译完成且打包完毕,安装只是个验证环境和解压的过程。此外,通过RPM方式安装的软件,RPM工具都会记录软件的安装信息,这样方便了软件日后的查询、升级和卸载。
RPM包管理方式的缺点是对操作系统环境的依赖很大,它要求RPM包的安装环境必须与 RPM 包封装时的环境相一致或相当。
三、 yum安装方式
yum是进行Linux系统下软件安装和升级常用的一个工具,通过yum工具配合互联网即可实现软件的便捷安装和自动升级。
输入yum install sftp即可将sftp软件安装到系统中,输入yum update 即可实现系统的自动升级。通过yum进行软件安装或系统升级实质上是通过yum命令下载指定的远程互联网主机上的RPM软件包,然后自动进行安装,同时解决各个软件之间的依赖关系。
yum会自动下载所有所需的升级资源包并默认放置在/var/cache/yum目录下,当第一次使用yum或yum资源库更新时,软件升级所需的时间可能较长。
几个不错的yum源:
- EPEL(Extra Pockages for Enterprise Linux,企业版Linux附加软件包)
其官方网址为:http://fedoraproject.org/wiki/EPEL/zh-cn
,EPEL的软件包不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件。
- RPMForge是一个第三方软件源仓库
是CentOS官方社区推荐的第三方yum源,但是由于这个安装源不是CentOS本身的组成部分,因此要使用RPMForge,需要手动下载并安装。RPMForge的官方网站是
http://repoforge.org/
,可以在
http://pkgs.repoforge.org/rpmforge-release/
下载RHEL/CentOS 各个版本的“rpmforge-release”包,这样就可以使用RPMForge提供的丰富软件了。
四、二进制软件安装方式
Linux 下二进制格式的软件是指事先已经在各种平台编译安装好相关软件,然后压缩打包,在安装时只需解压或者执行安装可执行文件即可。
二进制软件包的优点是安装简单、容易,缺点是缺乏灵活性,相应的软件包只能在对应平台下安装,离开这个环境软件就无法运行。
第二篇 服务器搭建篇
架设Linux服务器
使用OpenSSH远程管理Linux服务器
sshd是OpenSSH 的服务器端守护进程,而与之对应的Windows下客户端软件有很多,常用的有SecureCRT、Xshell、PuTTY等。通过SecureCRT远程连接Linux系统,不受网络速度和带宽的影响。
OpenSSH在CentOS Linux发行版本中是默认安装的,一般的安装目录为/etc/ssh,对应的服务器配置文件为/etc/ssh/sshd_config。
上面仅仅列出最常用的一些选项,也是我们给出的推荐配置。
|
|
对sshd_config文件配置完毕,接着重启sshd守护进程,使修改生效。[root@localhost ~]# systemctl restart sshd
最后一步是设置sshd服务开机自动启动,只需执行如下命令即可。[root@localhost ~]# systemctl enable sshd
Web服务器的搭建
Apache的官方地址为
http://httpd.apache.org/
Tomcat的官方地址
http://tomcat.apache.org/。
在Tomcat运行环境下,JDK是必不可少的软件,因为Tomcat只是一个Servlet/JSP容器,底层的操作都需要JDK来完成。JDK的安装也非常简单,只需到
http://www.oracle.com/technetwork/java/index.html
下载对应的JDK即可。
Apache与Tomcat整合:
客户端请求静态页面时,由Apache服务器响应请求。客户端请求动态页面时,则由Tomcat服务器响应请求。通过Apache信息过滤,实现网站动、静页面分离,保证了应用的可扩展性和安全性。
现在一般都使用mod_jk作为Apache和Tomcat的连接器。JK的源码可以从这个地址下载,http://tomcat.apache.org/download-connectors.cgi
在Apache 2.2以后的版本,用proxy-ajp模块作为Apache和Tomcat的连接器是个不错的选择。
LAMP服务器的搭建
LAMP是一组构建Web应用平台的开源软件解决方案,它是一个开源套件组合。其中,“L”指的是Linux(操作系统),“A”指的是Apache HTTP服务器,“M”指的是MySQL或者MariaDB,“P”指的是指Perl或Python。
通过yum方式 [root@localhost ~]# yum install httpd
,默认配置文件主目录位于/etc/httpd下,/etc/httpd/conf/httpd.conf是Apache的主配置文件。Apache 模块的配置文件位于/etc/httpd/conf.modules.d 目录下,Web 根目录位于/var/www/html/目录下,日志文件位于/var/log/httpd/目录下。
MariaDB是MySQL的一个分支,采用GPL授权许可,目前主要由开源社区在维护。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
DNS服务器的搭建
DNS是Domain Name System的缩写,即域名系统,DNS服务主要的功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。
DNS服务器可以分为3种:主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)和缓存服务器(Cache-only server)。
在Linux系统下DNS服务的功能是通过bind软件实现的,几乎每个Linux发行版都自带了这个DNS服务软件。
要检查系统是否正确安装了bind软件: [root@localhost ~]# rpm -qa |grep bind
;如果没有输出,表示 bind 还没有安装 。
安装: [root@localhost ~]#yum -y install bind bind-utils bind-libs
bind安装完毕,主程序目录默认为/var/named,而bind的主配置文件named.conf路径为/etc/named.conf。
Samba服务器的搭建
Samba 是一个能让 Linux 系统应用 Microsoft 网络通信协议的软件。而 SMB 是 Server Message Block的缩写,即服务器消息块 ,SMB主要作为Microsoft的网络通信协议。
Samba 最大的功能就是可以用于 Linux 与 Windows 系统直接的文件共享和打印共享。
几乎所有的Linux发行版本中都默认自带了Samba软件包,登录系统,检查是否安装了Samba软件,执行如下操作:[root@localhost ~]# rpm -q samba
Samba的安装:[root@localhost ~]# yum -y install samba samba-client samba-common
可以通过systemctl start/stop/restart smb来启动、关闭、重启SMB服务。
构建高性能的MySQL数据库系统
在RHEL/CentOS 6.x以及之前版本中,安装过程如下:[root@ut localhost]# yum -y install mysql mysql-server
在RHEL/CentOS 7.x版本中,操作过程如下:[root@ut localhost]# yum -y install mysql mysql-server
高性能需要解决的主要有两个问题,第一个是如何实现数据共享或同步数据,第二个是如何处理故障转移。数据共享一般的解决方案是通过SAN(Storage Area Network)来实现,而数据同步可以通过rsync软件或DRBD技术来实现。
- 主从复制解决方案
主从复制解决方案是 MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL复制技术。
简单说,就是从服务器到主服务器拉取二进制日志文件,然后再将日志文件解析成相应的SQL在从服务器上重新执行一遍主服务器的操作,通过这种方式保证数据的一致性。
- MMM高可用解决方案
MMM是Master-Master Replication Manager for MySQL的缩写,全称为MySQL主主复制管理器,它提供了 MySQL主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件。是目前比较成熟的MySQL高可用解决方案。
Linux服务器安全策略
防范攻击策略
- 网络传输安全
网络传输安全一般由网络安全设备构成,常见的网络安全设备有硬件防火墙、网络入侵检测(IDS)、路由器、交换机等。
- 操作系统安全
在Linux操作系统下,经常进行的系统安全设置有:系统内核定期升级并保持最新,系统自带软件保持最新,配置系统软件防火墙 iptables 防范策略,配置杀毒软件防范病毒,关闭无关的服务和端口,密码安全管理等。
在Linux操作系统下,系统共定义了65536个可用端口。对于0~1023端口,都需要以root身份才能启用,这些端口主要用于系统一些常见的通信服务中。一般情况下,这些端口是预留给一些预设的服务来使用的,不经常用的服务最好不要使用这些预留端口。1024以上(包含1024)的端口主要是给客户端软件使用的,这些端口都是由软件随机分配的。
服务和端口是一个一一对应的关系,相互依赖,互为衬托。没有服务运行也就无所谓端口,端口的开启和关闭也就是软件服务的启动和关闭。
系统运行必需的服务
在Linux下推荐用密钥认证方式登录系统,彻底抛弃密码认证登录系统的弊端。密钥认证方式的实现是借助于SecureCRT软件和Linux系统中的SSH服务实现的。
Linux软件防火墙iptables
- 应用软件安全
应用软件安全是对在服务器上运行的应用软件程序本身进行的安全策略配置和优化。
Linux系统的备份
- Linux系统需要备份的数据
需要备份的文件大致可以分为两类:系统级配置文件和用户级配置文件。
不需要备份的目录,如:/dev目录、/proc目录、/mnt目录、/tmp目录等,这些目录都是不需要备份的。因为这些目录中要么是内存数据,要么是临时文件,没有重要的数据。备份的原则是重要数据一定要全部备份,无用数据绝不备份。
- 备份的介质与方式
常用备份介质: 光驱、磁盘、磁带机、软盘等。
Linux下使用磁带机的方式有多种。tar命令是最经常使用的方法,tar主要用于单机环境下,将数据直接写入磁带机。
数据备份方式:常见的有本地备份和异地容灾备份。
制定备份策略:常用的备份策略有完全备份、增量备份,同时增量备份还可以分为差异增量备份和累计增量备份。
备份工具的选择:经常使用的备份工具就是tar、cpio等命令。另外还有一个很有用的开源工具rsync,可以实现数据的远程容灾备份。
Linux故障排查思路与案例
常见系统故障的处理
处理问题的一般思路:1)重视报错提示信息;2)查阅日志文件;3)分析、定位问题;4)解决问题
- 忘记Linux root密码
只须重启Linux系统,然后引导进入Linux的单用户模式(init 1),由于单用户模式是不需要输入登录密码的,因此,直接登录系统,修改root密码即可解决问题。
- Linux系统无法启动的解决办法
/etc/fstab文件丢失,导致系统无法启动:
利用Linux修复模式登录系统,进而获取分区和挂载点信息,重构/etc/fstab文件。
root文件系统破坏,导致系统无法启动:进入系统修复模式,执行fsck命令,进行强制修复。
Linux系统无响应(死机)问题分析:常见处理办法就是重启系统。
常见网络故障处理
解决流程如下:
- 检查网络硬件传输是否有问题
可以通过检查网线、网卡、集线器、路由器、交换机等是否正常来确认是否由硬件问题造成网络故障。
- 检查网卡是否能正常工作
这可以从网卡是否正常加载、网卡IP设置是否正确、系统路由是否设置正确3个方面进行检查确认。
通过lsmod、ifconfig命令可以判断网卡是否正常加载。
- 检查DNS是否设定正确
可以从Linux的DNS客户端配置文件/etc/resolv.conf、本地主机文件/etc/hosts进行检查确认。
- 检查服务是否正常打开
可以通过telnet或者netstat命令的方式检查服务是否开启。
- 检查访问权限是否打开
可以从本机iptables防火墙、Linux内核强制访问控制策略SELinux两方面入手,进行检查确认。
- 检查局域网主机之间联机是否正常
可以通过ping自身IP,ping局域网其他主机IP,ping网关地址来确认局域网是否连接正常。
第三篇 系统管理篇
Linux用户权限管理
groupadd命令用来新建用户组。
newgrp命令主要用于在多个用户组之间进行切换。
groupdel命令用于删除用户组。
useradd建立用户。
usermod用来修改用户的账户属性信息。
userdel 用来删除用户,若指定“-r”参数不但删除用户,还删除用户的主目录以及目录下的所有文件。
“ls –al”可以显示文件或者目录的权限信息。
chown就是change owner的意思,主要作用就是改变文件或者目录的所有者,而所有者包含用户和用户组。
chmod用于改变文件或目录的访问权限。
Linux磁盘存储管理
fdisk是Linux下一款功能强大的磁盘分区管理工具,可用于观察硬盘的使用情况,也可以对磁盘进行分割。Linux下类似于fdisk的工具还有cfdisk、parted等。
disk工具对分区是有大小限制的,它只能划分小于2TB的磁盘。需要另外一个磁盘管理工具parted来完成大于2TB的磁盘分区工作。
LVM(Logical Volume Manager,逻辑卷管理器)是Linux下对磁盘分区进行管理的一种机制。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整分区的大小。
Linux文件系统管理
文件系统是操作系统与磁盘设备之间交互的一个桥梁,通过文件系统实现了数据合理组织和有效存取,表现在操作系统上就是对文件和目录的管理。
要在磁盘分区上创建文件系统,在Linux下常用的命令是mkfs(表示make file system)。
将一个文件系统与一个存储设备关联起来的过程称为挂载。在执行挂载时,要提供文件系统类型、存储设备和一个挂载点。
Linux下常用文件系统
- ext3和ext4文件系统
ext2是Linux上标准的文件系统。
ext3是一种日志式文件系统,其实就是在ext2文件系统基础上增加一个特殊的inode(日志文件),即日志记录功能,用于记录文件系统元数据或者各种写操作的变化。
ext3提供以下三种日志模式:
journal模式:在此模式下,文件系统所有数据和元数据的改变都记入日志中。这种模式减少了磁盘丢失数据的概率,但是需要很多额外的磁盘访问和读写。这种模式是最安全但最慢的ext3日志模式。
Ordered模式:在此模式下,只有对文件系统元数据的修改才会记录日志,这是默认的ext3日志模式。
Writeback模式:这种模式与Ordered模式类似,但是此模式不能保证修改过的数据先于元数据写入磁盘,因此可能出现元数据已经更新但数据还没有更新的情况,而这种模式是三种日志模式中最快的。
ext4是Linux下第四代扩展日志文件系统,是ext3文件系统的后继版本。
- ReiserFS
高性能的日志文件系统。与ext2/ext3相比,ReiserFS最大的优点是访问性能和安全性大幅提升。如果您的应用系统具有很多小文件,同时有大量读、写操作,那么ReiserFS文件系统绝对是首选。
- XFS
在CentOS 7.0版本以后,文件系统类型默认为XFS。
XFS是SGI开发的一个高级日志文件系统,后来移植到了Linux系统下。XFS通过分布处理磁盘请求、定位数据、保持缓存的一致性来提供对文件系统数据低延迟、高带宽的访问,因而,XFS极具伸缩性,非常健壮。
Linux下常用的数据恢复工具
extundelete是基于Linux的一个数据恢复工具,它通过分析文件系统的日志,解析出所有文件的inode信息,从而可以恢复Linux下主流的ext3、ext4文件系统下被误删除的文件。而ext3grep仅支持ext3文件系统的恢复。
extundelete 的官方网站是
http://extundelete.sourceforge.net/
,其目前的稳定版本是extundelete-0.2.4。在安装extundelete之前需要安装e2fsprogs和e2fsprogs-libs两个依赖包。
在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区。如果系统根分区的数据遭到误删除,就需要将系统进入单用户,并且将根分区以只读模式挂载。以只读模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的几率。
Linux内存管理
物理内存和虚拟内存
物理内存就是系统硬件提供的内存大小,是真正的内存。相对于物理内存,在Linux下还有一个虚拟内存的概念。虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间称为交换空间(Swap Space)。
Linux 的内存管理采取的是分页存取机制。
内存的监控
监控内存最常使用的命令有free、top等。
缓冲区主要用来存放目录里面有什么内容,文件的属性以及权限等。而缓存直接用来记忆我们打开过的文件和程序。
交换空间的使用
创建交换文件与创建普通文件不同,必须通过 dd 命令来完成,同时这个文件必须位于本地硬盘上,不能在网络文件系统(NFS)上创建交换文件。
通过mkswap命令指定作为交换空间的设备或者文件。
设置交换分区后,接着通过swapon命令激活交换空间。
需要在/etc/fstab中添加自动加载设置。这样,Linux在重启后就可以实现自动加载交换分区了。其实Linux在启动过程中会执行“swapon -a”命令,此命令会加载列在/etc/fstab中的所有交换空间。
通过swapoff即可移除交换空间。
Linux系统进程管理
Linux 是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用同一个Linux系统,多任务是指在Linux下可以同时执行多个任务。
进程的分类
- 系统进程:
可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。
- 用户进程:
通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。
用户进程,又可以分为交互进程、批处理进程和守护进程三类。
交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。
批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。
守护进程:守护进程是一直运行的一种进程,经常在Linux系统启动时启动,在系统关闭时终止。
进程的监控与管理
ps是Linux下最常用的进程监控命令。
pstree命令以树形结构显示程序和进程之间的关系。
top命令动态、实时地显示进程状态,而ps只能显示进程某一时刻的信息。同时,top命令提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,更清楚地了解进程的实时状态。
lsof(list opened files),用于列举系统中已经打开的文件。通过lsof,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
pgrep是通过程序的名字来查询进程ID的工具
任务调度进程crond的使用
crond 是 Linux 下用来周期性地执行某种任务或等待处理某些事件的一个守护进程,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
用户可以使用crontab工具来定制自己的计划任务。所有用户定义的crontab 文件都保存在 /var/spool/cron目录中。其文件名与用户名一致。
crontab常用的使用格式有如下两种。
|
|
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置。它的格式共分为6个字段,前5个字段是时间设定段,第6个字段是要执行的命令段,格式如下minute hour day month week command
使用crontab工具的注意事项
(1)注意环境变量问题
系统自动执行任务调度时,是不会加载任何环境变量的,所以,就需要在crontab文件中指定任务运行所需的所有环境变量。
(2)注意清理系统用户的邮件日志
(3)系统级任务调度与用户级任务调度
如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个定时重启系统的任务也是无效的。
用kill和killall终止进程
kill命令的使用语法如下。
|
|
killall也是关闭进程的一个命令。与kill不同的是,killall后面跟的是进程的名字,而不是进程的ID,因而,killall可以终止一组进程。
killall [信号类型] 进程名称
第四篇 性能调优篇
系统的性能是指操作系统完成任务的有效性、稳定性和响应速度。
系统性能优化一般遵循的流程:首先,Linux运维人员查看系统的整体状况,然后主要从系统硬件、网络设备、操作系统配置、应用程序架构和程序代码五个方面进行综合判断。
系统性能分析工具
- vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,很多Linux发行版本都默认安装了此命令工具。利用vmstat命令可以对操作系统的内存信息、进程状态、CPU活动等进行监控,不足之处是无法对某个进程进行深入分析。
- iostat命令
iostat是I/O statistics(输入/输出统计)的缩写,主要的功能是对系统的磁盘I/O操作进行监控。它的输出主要显示磁盘读写操作的统计信息,同时也会给出CPU使用情况。同vmstat一样,iostat也不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat一般都不随系统安装。要使用iostat工具,需要在系统上安装一个Sysstat工具包。Sysstat是一个开源软件,官方地址为
http://pagesperso-orange.fr/sebastien.godard。
- sar命令
sar命令很强大,是分析系统性能的重要工具之一。通过sar指令,可以全面地获取系统的CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。
- uptime命令
主要用来统计系统当前的运行状况。输出的信息依次为:系统现在的时间,系统从上次开机到现在运行了多长时间,系统目前有多少登录用户,系统在1分钟内、5分钟内、15分钟内的平均负载。
这里需要注意的是load average这个输出值,这三个值的大小一般不能大于系统CPU的个数,如果长期大于,就说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于时,也不用担心,一般不会影响系统性能。
## 第五篇 虚拟化与集群应用篇
虚拟化云计算平台ProxmoxVE
KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是一个开源的系统虚拟化模块,从Linux 2.6.20之后集成在Linux的各个主要发行版本中。
OpenVZ 是开源软件,是基于 Linux 平台的操作系统级服务器虚拟化解决方案,它是基于 Linux 内核和作业系统的操作系统级虚拟化技术。
Proxmox VE (Proxmox Virtual Environment) 是一个虚拟化集成应用平台。它提供了一个可运行OpenVZ和KVM的开源虚拟化平台,有方便易用的WEB界面、基于Java的UI和内核接口,用户可以很方便地登录VM进行操作。此外,Proxmox VE还有简单、易用的模板功能,基于模板的应用程序部署,可以在几分钟内用简单的方法创建新的虚拟服务器并投入使用,极大降低了服务器的安装和部署成本。
Proxmox VE是一个基于Debian Etch(x86_64)版本的虚拟环境,因此不能把它安装到一个i386系统上。同时,如果要使用的是KVM,首先操作系统的CPU必须支持类似于Intel VT或者AMD-V的硬件虚拟化技术,然后还需要在主机BIOS里面将VT-X或VT-D选项打开才能真正使用。
Proxmox VE的安装有两种方式。一种是安装一个最小化的Debian操作系统,然后在系统中添加Proxmox的安装源进行安装即可。另一种是下载Proxmox提供的ISO镜像光盘。可以从 http://www.proxmox.com/en/downloads
下载最新的Proxmox VE的ISO镜像,这个ISO文件包含了一个Debian系统和proxmox的安装程序,此方法适合初学者使用。
高性能集群软件Keepalived
集群简介
构建一个集群系统至少需要两台服务器,同时还需要有串口线、集群软件、共享存储设备(例如磁盘阵列)等。
集群的特点与功能:
- 高可用性
- 可扩展性
负载均衡
集群系统最大的特点是可以灵活、有效地分担系统负载,通过集群自身定义的负载分担策略,将客户端的访问分配到下面的各个服务节点。
错误恢复
当一个任务在一个节点上还没有完成时,由于某种原因,执行失败,此时,另一个服务节点应该能接着完成此任务,这就是集群提供的错误恢复功能。通过错误的重定向,保证了每个执行任务都能有效地完成。
集群的分类:
高可用集群(High Availability Cluster,HA集群)
其中高可用的含义是最大限度地可以使用。
负载均衡集群(Load Balance Cluster,LB集群)
也是由两台或者两台以上的服务器组成,分为前端负载调度和后端节点服务两个部分。负载调度部分负责把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供应用程序服务的部分。
与HA集群不同的是,在负载均衡集群中,所有的后端节点都处于活动状态,它们都对外提供服务,分摊系统的工作负载。
负载均衡集群可以通过软件方式实现,也可以由硬件设备来完成。Linux 下典型的负载均衡软件有开源LVS集群、Oracle的RAC集群等,硬件负载均衡器有F5 Networks等。
分布式计算集群
分布式计算集群致力于提供单个计算机所不能提供的强大的计算分析能力,包括数值计算和数据处理,并且倾向于追求综合性能。
目前流行的开源分布式计算平台:Hadoop、Spark。
Keepalived简介
Keepalived是 Linux下一个轻量级的高可用解决方案,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有Heartbeat功能强大,但Keepalived部署和使用非常简单,所有配置只需一个配置文件即可完成。
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。
Keepalived 一方面具有服务器状态检测和故障隔离功能,另一方面也具有HA集群功能。
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议):
它是一种主备模式的协议,通过VRRP可以在网络发生故障时透明地进行设备切换而不影响主机间的数据通信。
Keepalived安装与配置
Keepalived 的官方网址 http://www.keepalived.org,从中可以下载到各种版本的Keepalived。
根据配置文件所实现的功能,将Keepalived配置分为三类,分别是:全局配置(Global Configuration)、VRRPD配置和LVS配置。
Keepalived的配置文件都是以块(block)的形式组织的,每个块的内容都包含在{}中,以“#”和“!”开头的行都是注释。
VRRPD配置是Keepalived所有配置的核心,主要用来实现Keepalived的高可用功能。
通过vrrp_script模块实现对集群资源的监控,与此模块一起使用的还有track_script模块,在此模块中可以引入监控脚本、命令组合、shell语句等,以实现对服务、端口多方面的监控。track_script模块主要用来调用“vrrp_script”模块使Keepalived执行对集群服务资源的监控。
负载均衡集群LVS与HAProxy
LVS(Linux Virtual Server,Linux虚拟服务器)是由章文嵩博士发起的一个自由软件项目,它的官方站点是 www.linuxvirtualserver.org。
LVS是基于4层的IP负载均衡技术。
LVS的IP负载均衡技术是通过IPVS模块来实现的。IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。
IPVS 的官方网站为 http://www.linuxvirtualserver.org/software/ipvs.html
|
|
在基于软件的负载均衡产品中,又分为两种实现方式,分别是基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载均衡,而HAProxy就是基于第三应用实现的软负载均衡。
HAProxy是一款开源的、高性能的、基于TCP(第4层)和HTTP(第7层)应用的负载均衡软件,借助HAProxy可以快速、可靠地提供基于TCP和HTTP应用的负载均衡解决方案。
可以在HAProxy的官网 http://www.haproxy.org/ 下载HAProxy的源码包,HAProxy安装完成后,默认安装目录中没有配置文件,这里将源码包里面的示例配置文件复制到配置文件目录。
HAProxy 安装完成后,会在安装根目录的 sbin 目录下生成一个可执行的二进制文件haproxy,对 HAProxy 的启动、关闭、重启等维护操作都是通过这个二进制文件来实现的。执行“haproxy -h”即可得到此文件的用法。