摘自 《CentOS 7系统管理与运维实战》

《CentOS 7系统管理与运维实战》
《CentOS 7系统管理与运维实战》

更新中~

1. 预备知识

1.1 Linux 版本问题

Linux 的内核版本

Linux 内核C 语言编写,符合 POSIX 标准。但是 Linux 内核并不能称为操作系统,内核只提供基本的设备驱动、文件管理、资源管理等功能,是 Linux 操作系统的核心组件

Linux 内核版本有稳定版开发版两种,内核版本号一般由 3 组数字组成,比如 2.6.18 内核版本:

  • 第 1 组数字2表示目前发布的内核主版本
  • 第 2 组数字6表示稳定版本,如为奇数则表示开发中版本
  • 第 3 组数字18表示修改的次数

前两组数字用于描述内核系列,可以通过uname -r查看当前使用的内核版本。

Linux 的发行版本

点击查看常见的 Linux 发行版

1.2 CentOS 之于 Linux

CentOS 简介

CentOS (Community Enterprise Operating System) 最初是由一个社区主导的操作系统,其来源于另一个最重要的发行版 RHEL (Red Hat Enterprise Linux)。由于 CentOS 是免费的且得到社区的大力支持,因此得到了市场的青睐。

2014 年初,CentOS 和 Red Hat 共同宣布,CentOS 将加入 Red Hat。目前 CentOS 由红帽公司和社区共同维护。

CentOS 7 的最新改进

相比与 CentOS 6CentOS 7 的主要改进之处在于:

  • 内核版本更新为 3.10.0:新版本的内核将对 swap 内存空间进行压缩,显著提高了 I/O 性能;优化 KVM 虚拟化支持;开启固态硬盘和机械硬盘框架,同时使用将会提速;更新和改进了图形、音频驱动
  • 文件系统方面:默认支持 XFS 文件系统,并更新了 KVM,使其可以支持 ext4XFS 快照
  • 网络方面:支持 Firewalld(动态防火墙);更新了高性能网络驱动
  • 支持 Linux 容器
  • 使用 Systemd 替换 SysVinit

2. 安装 CentOS 7

2.1 系统分区

磁盘分区

Linux 系统磁盘分区类型包括:

  1. 主分区:可以直接用来存放数据,但一个硬盘上的主分区最多只能有 4 个
  2. 扩展分区:扩展分区也是一种主分区,但不能用来存放数据。可以在扩展分区之上再划分可以存放数据的逻辑分区。
  3. 逻辑分区:逻辑分区是在扩展分区基础上建立的,可以用来存放数据。

明确了分区类型的概念之后,安装 CentOS 时还需要制订一个分区方案。在 Windows 系统中,不同的分区被 C、D、E 等盘符替代。但在 Linux 系统中没有盘符的概念,不同的分区被挂载在不同的目录下,目录称为挂载点。只要进入挂载点目录就进入了相应的分区,这样做的好处是用户可以根据需求为某个目录单独扩展空间

一个最简单的分区方案如下:

  1. 引导分区 /boot:创建一个约 300MB~500MB 的分区挂载到/boot目录下,这个分区主要用来存放系统引导时使用的文件
  2. 交换分区 swap:这个分区没有挂载点,大小通常为内存的 2 倍。系统运行时,当物理内存不足时,系统会将内存中不常用的数据存放到 swap 中,即 swap 此时被当作虚拟内存
  3. 根分区 /:根分区的挂载点是/,这个目录是系统的起点,可以将剩余的空间都分到这个分区中。
  4. 家目录 /home:用户的家目录,可根据实际需求划分适当容量的分区空间。

静态分区的缺点和逻辑卷管理简介

对于普通用户而言,直接对硬盘分区然后挂载这种使用静态分区的方法几乎没有什么问题。但对于某些特定的生产环境而言,这种方法弊大于利。

例如要求不间断运行的数据库中心,这类服务会随着时间增加而逐渐占用大量硬盘空间。如果使用静态分区方案,这类服务会在硬盘空间耗尽后自动停止,即使运维工程师及早发现,也会在更换硬盘时停止服务。因此这类要求不间断运行的服务,最好不要使用静态分区方案

为了防止需要不间断运行的服务因硬盘空间耗尽而停止,应该采用更加先进的逻辑卷管理(Logical Volume Manager,LVM)方案。LVM 先将硬盘分区转化为物理卷 PV,然后将 PV 组成卷组 VG,然后在卷组的基础上再划分逻辑卷 LV,最后就可以使用逻辑卷来存放数据

使用 LVM 有以下优点:

  • 可以解决硬盘空间不足,需要停止服务迁移数据的问题。扩容过程是在线进行的,无需停止服务。即使卷组中没有剩余空间,也可以向卷组添加新物理卷为卷组扩容。
  • 当硬盘空间不足时,可以添加更大的硬盘,从而将卷组中那些容量较小的硬盘移出卷组,这个过程也可以在线进行,无需关闭服务。
  • 可以为逻辑卷添加快照卷,利用这一功能可实现数据备份等操作,而无需担心数据的一致性受到影响。

2.2 安装 CentOS 7

安装 CentOS 7 可搜索网上教程,此处略

2.3 Linux 运行级别

如果想切换到命令模式,可在进入系统后在终端输入init 3,即可完成运行级别的转变。Linux 运行级别如下表所示:

级别 说明
0 停机
1 单用户模式
2 多用户模式
3 完全多用户模式,服务器一般运行在此级别
4 一般不用,仅在一些特殊情况下使用
5 X11 模式,一般发行版的默认运行级别,可以启动图形桌面系统
6 重新启动

2.4 Linux 目录结构

推荐阅读

  1. Unix 目录结构的来历 | 阮一峰
  2. Linux 的启动流程 | 阮一峰
  3. 比起Windows,怎样解读Linux的文件系统与目录结构?| 高效开发运维
  4. Linux 目录结构 | 程序猿

Linux 的目录类似树形结构,任何目录、文件和设备都在根目录/之下。

UNIX 中的树形目录结构
UNIX 中的树形目录结构

Linux 常见目录如下:

路径 说明
/ 根目录,文件系统的最顶端。
/bin 存放系统所需的重要命令。另外 /usr/bin 也存放了一些系统命令,这些命令对应的文件都是可执行的
/boot 存放 Linux 启动时内核引导系统程序所需的核心文件。内核文件和 grub 系统引导管理器都位于此目录。
/dev 存放 Linux 系统下的设备文件。访问该目录下的某个文件相当于访问某个硬件设备,常用的是挂载光驱。
/etc 一般存放系统的配置文件,作为一些软件启动默认配置文件的读取目录,例如 /etc/fstab 存放系统分区信息。
/home 系统默认的用户主目录,可以用 HOME 环境变量表示当前用户的主目录。
/lib 主要存放动态链接库.so文件,在 64 位系统中还有 /lib64 目录。类似的目录有 /usr/lib、usr/local/lib 等。
/lost_found 存放一些当系统意外崩溃意外关机时产生的文件碎片
/mnt 用于存放挂载存储设备的目录,如光驱、共享存储等。
/proc 存放操作系统运行时的运行信息,如进程信息、内核信息、网络信息等。此目录的内容存在于内存中,实际不占用磁盘空间。如 /proc/cpuinfo 存放 CPU 的相关信息。
/root Linux 超级权限用户 root主目录
/sbin 存放一些系统管理命令,一般只能由 root 用户执行。大多数命令普通用户无权限执行,类似 /sbin/ifconfig,不过使用绝对路径也可执行。类似的目录有 /usr/sbin、/usr/local/sbin。
/tmp 临时文件目录,任何人都可以访问。系统软件或用户运行程序时产生的临时文件都存放在这里。此目录数据需要定期清除。此目录空间不宜过小。
/usr 应用程序存放目录,如命令、帮助文件等。安装 Linux 软件包会默认安装到 /usr/local 目录下,例如 /usr/share/fonts 存放系统字体,/usr/share/man 存放帮助文档,/usr/include 存放软件的头文件等。/usr/local 目录建议单独分区并设置较大的磁盘空间。
/var 这个目录的内容是经常变动的,/var/log 用于存放系统日志,/var/lib 存放系统库文件等。
/sys 目录与/proc类似,是一个虚拟的文件系统,主要记录与系统核心相关的信息,如系统当前已经载入的模块信息等。类似的,这个目录实际不占用磁盘空间

3. CentOS 7 网络管理技能

3.2 网络管理命令

3.2.1 ping

ping 用来测试目标主机或域名是否可达

> ping abelsu7.top
> ping 192.168.3.100
> ping -c 3 192.168.3.100 # -c 指定次数
> ping -c 3 -i 0.01 192.168.3.100 # -i 指定间隔

3.2.2 ifconfig

ifconfig 命令用于查看、配置、启用或禁用指定网络接口。语法如下:

> ifconfig interface [[-net -host] address [parameters]]

例如:

> ifconfig docker0
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:77ff:fefe:d330  prefixlen 64  scopeid 0x20<link>
        ether 02:42:77:fe:d3:30  txqueuelen 0  (Ethernet)
        RX packets 5607  bytes 2293055 (2.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6232  bytes 10143929 (9.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

输出信息说明:

  • 第 1 行:UP 表示此网络接口为启用状态RUNNING 表示网卡设备已连接MULTICAST 表示支持组播MTU数据包最大传输单元
  • 第 2 行:依次为网卡 IP子网掩码广播地址
  • 第 3 行:IPv6 地址
  • 第 4 行:Ethernet(以太网)表示连接类型ether为网卡 MAC 地址
  • 第 5 行:接收数据包个数、大小统计
  • 第 6 行:异常接受包的数量,如丢包量、错误等
  • 第 7 行:发送数据包个数、大小统计信息
  • 第 8 行:异常发送包的数量,如丢包量、错误等

设置 IP 地址使用以下命令:

> ifconfig eno1 192.168.100.100 netmask 255.255.255.0
> ifconfig eno1 hw ether 00:0c:29:0b:07:77 # 更改网卡的 MAC 地址
> ifconfig eno1 192.168.100.170/24 UP
> ifconfig eno1 down

CentOSRHEL 中使用命令ifupifdown网络接口名,可以启用、禁用对应的网络接口

3.2.3 route

route 命令用于查看或编辑计算机的 IP 路由表,语法如下:

> route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 enp5s0
116.56.129.0    0.0.0.0         255.255.255.0   U     100    0        0 enp5s0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

# 添加一条路由:发往 192.168.60.0 网段的全部要经过网关 192.168.19.1
> route add -net 192.168.60.0 netmask 255.255.255.0 gw 192.168.19.1

# 删除一条路由,删除的时候不需要指明网关
> route del -net 192.168.60.0 netmask 255.255.255.0

3.2.4 scp

scp 命令可以将本地文件传送到远程主机从远程主机拉取文件到本地。常用参数如下:

  • -P:指定远程连接端口
  • -q:把进度参数关掉
  • -r递归的复制整个文件夹
  • -VVerbose。打印排错信息方便问题定位
# 将本地文件传送至远程主机 192.168.3.100 的 /usr 路径下
> scp -P 12345 myfile root@192.168.3.100:/usr

# 拉取远程主机文件至本地路径
> scp -P 12345 root@192.168.3.100:/etc/hosts ./

# 使用参数 -r 传送目录
> scp -r -P 12345 root@192.168.3.100:/usr/local/apache2 ./

# 将本地目录传送至远程主机指定目录
> scp -r apache2 root@192.168.3.100:/data

3.2.5 rsync

rsync 是 Linux 系统下常用的数据镜像备份工具,用于在不同的主机之间同步文件。

除了单个文件,rsync 还可以镜像保存整个目录树和文件系统,支持增量同步,并保持文件原有的属性(如权限、时间戳等)。

另外,rsync 的数据传输过程加密的,可以保证数据的安全性。