第二十章 基础系统设置与备份策略
20.1 系统基本设置
20.1.1 网络设置(手动设置和DHCP自动获取)
网络参数的3种获取方式:
(1)手动设置固定IP
常用于学术网络服务器设置,公司内部特定网络设置,这种方式必须获取的信息如下:
- IP
- 子网掩码(netmask)
- 网关(gateway)
- DNS主机的IP(通常会有两个,若记不住的话,硬背119.29.29.29即可)
(2)网络参数可自动获取(DHCP协议自动获取)
常见于IP路由器后端的主机,或是学习宿舍的网络环境等。这种网络参数获取方式就被称为DHCP,你啥都不需要知道,只要设置上网方式为DHCP即可。
(3)光纤到户与ADSL宽带拨号
不管是固定IP还是动态IP,只要通过光纤到户或宽带调制解调器拨号上网的,就是这种方式。
通过网卡这个硬件连上Internet。有1块以太网卡,Linux主机的网络接口为ethN(N为数字)。
手动设置IP网络参数:
假设你已经向你的ISP获取了你的网络参数,基本上的网络参数需要如下信息:
- method:manual(手动设置)
- IP:172.16.1.1
- netmask:255.255.0.0
- gateway:172.16.200.254
- DNS:172.16.200.254
- hostname:study.centos.vbird (这个没有影响不大)
查看目前系统上有什么连接代号:
[dj@study ~]$ nmcli connection show 看看都有哪些
NAME UUID TYPE DEVICE
ens33 e8a9d81b-0ad9-4ee2-948e-67d8aeab208e ethernet ens33
virbr0 6375af01-10eb-44cd-b483-ae27e791f0c8 bridge virbr0
[dj@study ~]$ nmcli connection show ens33 选择一个看看具体信息
会输出很多内容
如果要设置参数:
nmcli connection show ens33 \
connection.autoconnect yes \
ipv4.method manual \
ipv4.address 172.16.1.1/16 \
ipv4.getway 172.16.200.254 \
ipv4.dns 172.16.200.254
修改完参数后,还得让它生效:
nmcli connection up ens33
检查下看看是不是生效了:
nmcli connection show ens33
自动获取IP参数
如果你的网络是由自动获取的DHCP协议所分配,上述所有的功能都可以不用知道,只要知道ipv4.method那个项目改成auto即可。
nmcli connection modify ens33 \
connection.autoconnect yes \
ipv4.method auto
nmcli connection up ens33
nmcli connection show ens33
修改主机名
[dj@study ~]$ hostnamectl
Static hostname: study.centos.vbird 主机名称
Icon name: computer-vm
Chassis: vm
Machine ID: 6abd99169ddf4e83841c049cf5a68726
Boot ID: c410de2144d84633ab97919f4ebb15ff
Virtualization: vmware
Operating System: CentOS Linux 7 (Core) 操作系统名称
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-1062.el7.x86_64 内核名称
Architecture: x86-64 硬件架构
[dj@study ~]$ hostnamectl set-hostname study.centos.dj 修改vbird为dj
[dj@study ~]$ cat /etc/hostname 看看主机名称,果然改好了!
study.centos.dj
20.1.2 日期与时间设置
[dj@study ~]$ timedatectl
Local time: 三 2020-06-17 18:51:28 CST 本地时间
Universal time: 三 2020-06-17 10:51:28 UTC UTC时间,格林威治标准时间
RTC time: 三 2020-06-17 10:51:28
Time zone: Asia/Shanghai (CST, +0800) 时区
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
[dj@study ~]$ timedatectl list-timezones | grep -i new 看看有没有New York时区,若有,将目前的时区更新一下
America/New_York
America/North_Dakota/New_Salem
[dj@study ~]$ timedatectl set-timezone "America/New_York" 重新设置一下
[dj@study ~]$ timedatectl 查看当前时区信息
Local time: 三 2020-06-17 06:54:54 EDT
Universal time: 三 2020-06-17 10:54:54 UTC
RTC time: 三 2020-06-17 10:54:54
Time zone: America/New_York (EDT, -0400)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
日 2020-03-08 01:59:59 EST
日 2020-03-08 03:00:00 EDT
Next DST change: DST ends (the clock jumps one hour backwards) at
日 2020-11-01 01:59:59 EDT
日 2020-11-01 01:00:00 EST
[dj@study ~]$ timedatectl set-timezone "Asia/Shanghai" 最好重新设置回来
[dj@study ~]$ timedatectl
Local time: 三 2020-06-17 18:55:38 CST
Universal time: 三 2020-06-17 10:55:38 UTC
RTC time: 三 2020-06-17 10:55:38
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
20.1.3 语系设置
[dj@study ~]$ localectl 查看系统语系
System Locale: LANG=zh_CN.UTF-8
VC Keymap: n/a
X11 Layout: cn,gb
X11 Variant: ,
[dj@study ~]$ locale 当前这个软件的语系信息
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
切换为en_US.utf8:
[dj@study ~]$ localectl set-locale LANG=en_US.utf8
[dj@study ~]$ systemctl isolate multi-user.target
[dj@study ~]$ systemctl isolate graphical.target
20.1.4 防火墙简易设置
防火墙是一种网络数据的过滤方式,可以根据你服务器启动的服务来设置是否开放,也能对你信任的用户来开放。
CentOS 7.x默认的防火墙机制是firewalld,它的管理界面主要是通过命令行firewall-cmd这个详细的命令,这里仅使用图形界面来介绍。
配置:运行时、永久,两者差异
不要只是在运行时记录区增加规则设置,而是必须要在永久记录区增加规则才行。
区域:根据不同的环境所涉及的网络区域
目前只需要考虑public这个项目即可。
相关设置项目
- 服务:默认开启了ssh和dhcpv6-client
- 端口:如果你提供的服务所启动的端口不是常规的端口,那么还要调整整个端口。
- 富规则
- 接口:这个区域是针对哪个网卡来做规范,只有一个网卡的话,那当然就是针对那个网卡做的规范
打开tcp、http、HTTPS服务,同时添加222(tcp)、555(tcp)端口。
开放局域网络:
[dj@study ~]$ firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'
success
[dj@study ~]$ firewall-cmd --reload 重新加载防火墙系统
success
20.2 服务器硬件数据的收集
20.2.1 使用dmidecode查看硬件设备
可以查看CPU型号、主板型号、内存相关的型号等,在升级设备方面很有用。
[root@study ~]$ dmidecode -t 1 阿拉伯数字1,详细的系统信息,含主板的型号与硬件的基础信息等
[root@study ~]$ dmidecode -t 4 数字4,CPU相关信息
[root@study ~]$ dmidecode -t 9 数字9,系统的相关插槽格式,包括PCI、PCI-E等插槽规格说明
[root@study ~]$ dmidecode -t 17 每一个内存插槽的规格,若有内存,则列出该内存的容量与型号
20.2.2 硬件资源的收集与分析
除了直接调出/proc
下面的文件内容之外,还有几个简单命令来将内核所检测到的硬件显示出来,常见的命令:
gdisk 可以使用gdisk -I 将分区表列出
dmesg 查看内核运行过程中所显示的各项信息记录
vmstat 可分析系统(CPU、RAM、IO)目前的状态
lspci 列出整个PC系统的PCI接口设备
lsusb 列出目前系统上面各个USB端口的状态,与连接的USB设备
iostat 与vmstat类似,可实时列出整个CPU与接口设备的输入/输出状态
20.2.3 了解磁盘的健康状态
smartctl -a /dev/sda 显示/dev/sda完整的信息
smartctl -t short /dev/sda 让磁盘进行一次自我检测的操作
smartctl -a /dev/sda 再次查看一下
磁盘自我检测的操作,可能磁盘的I/O状态会比较忙碌,不建议在系统忙碌的时候进行,否则会影响系统性能。
20.3 备份的要点
20.3.1 备份数据的考虑
Ghost,单机备份软件,可以将你系统上面的磁盘数据完整地复制起来,变成一个大文件,你可以通过限制非常便宜的USB外接磁盘备份出来,未来恢复时,只需要将USB硬盘连接到主机,就几乎可以进行裸机恢复了。
20.3.2 哪些Linux数据具有备份的意义
可以选择备份重要的文件,也可以备份整个系统,这里讲解备份重要文件。
重要文件分为两类:
- 操作系统本身需要备份的文件
- 类似网络服务的内容数据
操作系统本身需要备份的文件
/etc/*
/home/*
/var/spool/mail/
/var/spool/{at|cron}/
/boot/
/root/
- 如果安装过其他的软件,那么
/usr/local/
或/opt
也最好备份一下
网络服务的数据库方面
- 软件本身的配置文件,如
/etc/*
和/usr/local/*
- 软件服务提供的数据,
WWW数据:/var/www/*
或/srv/www/*
,及系统的用户家目录
MariaDB:/var/lib/mysql/*
- 其他在Linux主机上面提供的服务的数据库文件
推荐需要备份的目录
/etc
/home
/root
/var/spool/mail
、/var/spool/cron/
、/var/spool/at/
/var/lib
不需要备份的目录
/dev
/proc
、/sys
、/run
/mnt
、/media
/tmp
20.3.3 备份用存储媒介的选择
如果可以的话,最好使用能够容错的外接式NAS存储设备。所谓NAS其实就是一台小型的Linux服务器,里面还能提供定制化的服务,包括不同的接口和传输协议。
一般如果要存储较长时间,同时担心碰撞问题,目前企业界还是很多人会喜欢用磁带来存储。磁带的存储方式除了怕被消磁和发霉,还是很受企业欢迎的。
20.4 备份的种类、频率与工具的选择
备份的种类:累计备份、差异备份。
20.4.1 完整备份之累积备份
完整备份的话,当硬件出问题导致系统损坏时,只要将完整备份拿出来,整个给它填回硬盘,所有事情就搞定了。不涉及什么配置环境啥的,如果是使用dd命令甚至都不需要重装系统。
完整备份就是将整个目录/
整个系统通通备份下来的意思。
累积备份的原则:第一次备份后,下次备份,只比较当前待备份内容与第一次备份内容的差异,仅备份差异的文件。
还原麻烦,要先把第一次备份内容还原,再还原第二次备份的差异,再还原第三次备份的差异…
累计备份用的备份软件:dd
、cpio
、xfsdump/xfsrestore
等。dd
可以直接读取磁盘的扇区而不理会文件系统,是相当好的备份工具,就是慢!
dd if=/dev/sda of=/dev/sdb dd用来将/dev/sda备份到完全一模一样的/dev/sdb硬盘中(由于dd是读取扇区,因此后者不需要格式化)
find / -print | cpio -covB > /dev/st0 备份到磁带机
cpio -iduv < /dev/st0 还原
完整备份文件系统:
xfsdump -l 0 -L 'full' -M 'full' -f /backupdata/home.dump /home
第一次进行累积备份:
xfsdump -l 1 -L 'full-1' -M 'full-1' -f /backupdata/home.dump1 /home
使用tar,将不需要备份的排除在外
tar --exclude /proc --exclude /mnt --exclude /tmp --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2/
20.4.2 完整备份之差异备份
差异备份是,每次的备份都是与原始的完整备份比较的结果。
rsync -av 来源目录 目标目录
将/home镜像到/backupdata/home中:
rsync -av /home /backupdata/ 此时会在/backupdata下面产生/home这个目录
rsync -av /home /backupdata/ 再次进行备份会快很多,如果没有修改,几乎不会进行任何操作
差异备份所使用的的磁盘容量可能比累积备份更大,但是它还原很快,因为只需要还原完整备份与最近一次的差异备份即可。
20.4.3 关键数据备份
备份关键数据最麻烦的地方在于还原。
根据日期备份MariaDB数据库:
tar -jpcvf mysql.`date +%Y-%m-%d`.tar.bz2 /var/lib/mysql
20.5 鸟哥的备份策略
- 主机硬件:使用一个独立的文件系统来存储备份数据,将此文件系统挂载到/backup当中
- 每日进行:备份mysql数据库
- 每周进行:包括
/home
,/var
,/etc
,/boot
,/usr/local
等目录与特殊服务的目录 - 自动处理:利用
/etc/crontab
来进行自动备份 - 异地备份:(a)每月定期将数据分贝刻录到光盘上面,(b)使用网络传输给另一台机器上面
20.6 灾难恢复的考虑
硬件损坏,且具有完整备份的数据时
首先处理好硬件。
然后直接将完整的系统恢复回去即可。
由于软件的问题产生的被攻击信息安全事件
- 先拔掉网线,最好将系统进行完整备份到其他媒介上,以备未来查验
- 开始查看日志文件,尝试找出各种可能的问题
- 开始安装新系统(最好找最新的发行版)
- 进行系统升级,与防火墙相关规则的制定
- 根据2的错误,在安装完成新系统后,将那些bug修复
- 进行各项服务与相关数据的恢复
- 正式上线提供服务,并且开始测试