文章目录
- Linux基础系统设置
- 网络设置(手动设置与DHCP自动获取):nmcli、hostname
- 日期与时间设置:timedatectl、ntpdate
- 语系设置
- 防火墙简易设置
- Linux 服务器硬件数据的收集:dmidecode、lspci、lsusb、iostat
- 了解磁盘的健康状态
- Linux 备份要点
- 确定备份的目录和文件
- 备份的种类、频率与工具的选择
- 完整备份
- 增量备份
- 差异备份
- 镜像备份
- 定期备份
- 远程备份的脚本
- 使用rsync上传备份数据
Linux基础系统设置
网络设置(手动设置与DHCP自动获取):nmcli、hostname
手动设置IP网络参数
假设你已经向你的ISP(网络服务提供商)获取了你的网络参数,基本上的网络参数需要这些信息:
- method:manual(手动设置)
- IP:192.168.100.10
- netmask:255.255.255.0
- gateway:192.168.100.1
- DNS:114.114.114.114
- hostname:study.csq.centos
上面的数据除了hostname是可以暂时不理会之外,如果你要上网,就得要上面的这些信息才行。然后通过 nmcli 来处理。
你得要先知道的是, nmcli 是通过一个名为【连接代号】的名称来设置是否要上网,而每个【连接代号】会有个【网卡名称】,这两个东西通常设置成相同名称。那就来先查看目前系统上默认有上面连接代号。
nmcli general status
:显示当前的网络状态,包括连接状态和DNS服务器地址。nmcli device status
:显示系统上所有网络设备的状态,包括网卡名称、连接状态和IP地址。nmcli device show <设备名称>
:显示指定网络设备的详细信息,包括MAC地址、IP地址、DNS服务器地址等。nmcli connection show
:显示所有网络连接的详细信息,包括连接代号、连接类型和IP地址。nmcli connection add
:添加一个新的网络连接。nmcli connection modify <连接代号>
:修改现有网络连接的设置。nmcli connection delete <连接代号>
:删除现有的网络连接。nmcli connection up <连接代号>
:启动指定的网络连接。nmcli connection down <连接代号>
:关闭指定的网络连接。
以上是一些常用的nmcli命令,还有很多其他命令可用于管理网络设置。
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens34 09c7b5e9-805b-4928-9003-094eae5240fd ethernet ens34
ens33 359ec964-ce76-40d2-8980-8780c8f80dd0 ethernet --
# NAME 就是连接代号,通常与后面的网卡 DEVICE 会一样
# UUID 这个是特殊的设备代码
# TYPE 就是网卡的类型,通常就是以太网卡
# DEVICE 当然就是网卡名称
从上面我们会知道有个ens34的连接代号,那么查一下这个连接代号都有哪些设置
[root@localhost ~]# nmcli connection show ens34
connection.id: ens34
connection.uuid: 09c7b5e9-805b-4928-9003-094eae5240fd
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens34
connection.autoconnect: 是
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
.......
.......
.......
ipv4.method: manual
ipv4.dns: 114.114.114.114
ipv4.addresses: 192.168.200.10/24
ipv4.gateway: 192.168.200.2
........
........
........
IP4.ADDRESS[1]: 192.168.200.10/24
IP4.GATEWAY: 192.168.200.2
........
........
IP6.ADDRESS[1]: fe80::5f07:885b:f6d6:71f7/64
IP6.GATEWAY: --
如上表的输出,最下面的是大写的IP4、IP6指的是目前实际使用的网络参数,最上面的 connection 开头的部分则指的是连接状态。比较重要的参数如下:
- connection.autoconnect [yes|no]:是否开机时启动这个连接,默认是yes
- ipv4.method [auto|manual]:自动还是手动设置网络参数的意思
- ipv4.dns [dns_server_ip]:就是填写DNS的地址
- ipv4.addresses [IP/Netmask]:就是IP与netmask的集合,中间用斜线 / 来隔开
- ipv4.gateway [gw_ip]:就是gateway的IP地址
所以,根据上面的设置选项,我们来将网络参数设置好
[root@localhost ~]# nmcli connection modify ens34 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.addresses 192.168.200.20/24 \
> ipv4.gateway 192.168.200.2 \
> ipv4.dns 8.8.8.8
最终执行【nmcli connection show ens34】 然后看最下方,是否为正确的设置值?如果是的话,那就设置好了
你会发现我们实际用IP还是原来的IP,我们可以执行nmcli connection up <连接代号>
来生效网卡;也可以使用systemctl restart network
来重启网络服务
[root@localhost ~]# nmcli connection up ens34
自动获取IP参数
DHCP协议是一种网络协议,它可以自动分配IP地址给你的电脑或设备,让你的设备能够连接网络。如果你的网络是由DHCP协议所分配,那么你不需要去记忆上述提到的所有功能,只需要把设置中的ipv4.method项目填成auto即可。所以来看看,如果变成自动获取,网络设置要如何处理?
[root@localhost ~]# nmcli connection modify ens34 \
> connection.autoconnect yes \
> ipv4.method auto
[root@localhost ~]# nmcli connection up ens34
[root@localhost ~]# nmcli connection show ens34
自动获取IP要简单太多了。同时执行 modify 之后,整个配置文件就写入了,因此你无须使用 vim 去重新改写与设置。nmcli 确实不错。另外,上面的参数中,那个 connection、ipv4等,你也可以使用[TAB]去调用出来。也就是说,nmcli 有支持 bash-commplete 的功能,所以命令执行也很方便。
可以执行如下命令安装
[root@localhost ~]# yum install -y bash-completion
修改主机名
主机名的修改就得要通过 hostnamectl 这个命令来处理
hostnamectl [set-hostname] NAME
-
显示目前的主机名称与相关信息
[root@localhost ~]# hostnamectl Static hostname: localhost.localdomain # 这就是主机名称Icon name: computer-vmChassis: vmMachine ID: 567928b865d945a8a3c7211006b3ba40Boot ID: 61e7c5dfdc194da58102b6271d530da0Virtualization: vmwareOperating System: CentOS Linux 7 (Core) # 操作系统名称CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-1160.el7.x86_64 # 内核版本也提供Architecture: x86-64 # 硬件架构也提供
-
尝试修改主机名称为 zzh 之后再改回来
[root@localhost ~]# hostnamectl set-hostname zzh [root@localhost ~]# cat /etc/hostname zzh # 可以使用reboot重启主机生效主机名,也可以使用bash命令生效主机名 [root@localhost ~]# hostnamectl set-hostname localhost [root@localhost ~]# cat /etc/hostname localhost
日期与时间设置:timedatectl、ntpdate
date
命令可以用来设置系统的日期和时间,但是如果要改变系统的时区,需要使用另外的命令来完成。在 Linux 系统中,时区信息通常保存在 /usr/share/zoneinfo
目录下,每个时区都有一个对应的文件。要改变系统的时区,可以使用 timedatectl
命令。
时区的显示与设置
timedatectl [command]
选项:
list-timezones 列出系统上所有支持的时区名称
set-timezone 设置时区位置
set-time 设置时间
set-ntp 设置网络校时系统
-
显示目前的时区与时间等信息
[root@zzh ~]# timedatectl Local time: 三 2023-05-24 19:36:11 CSTUniversal time: 三 2023-05-24 11:36:11 UTCRTC time: 三 2023-05-24 11:36:11Time zone: Asia/Shanghai (CST, +0800)NTP enabled: yes NTP synchronized: yesRTC in local TZ: noDST active: n/a
-
显示出是否有 New_York 时区?若有请将目前的时区更新一下
[root@zzh ~]# timedatectl list-timezones |grep -i new America/New_York America/North_Dakota/New_Salem [root@zzh ~]# timedatectl set-timezone "America/New_York" [root@zzh ~]# timedatectl Local time: 三 2023-05-24 07:40:15 EDTUniversal time: 三 2023-05-24 11:40:15 UTCRTC time: 三 2023-05-24 11:40:15Time zone: America/New_York (EDT, -0400)NTP enabled: yes NTP synchronized: yesRTC in local TZ: noDST active: yes
-
最后改回时区
[root@zzh ~]# timedatectl set-timezone "Asia/Shanghai"
时间的调整
当我们虚拟机时间显示不对的时候,我们就需要来调整一下时间,time格式为【yyyy-mm-dd HH:MM】
[root@zzh ~]# timedatectl set-time "2023-5-24 19:45"
Failed to set time: Automatic time synchronization is enabled
显示这个错误就代表你开启了时间同步 如果你要修改时间的话就要关闭时间同步
关闭时间同步来进行测试,测试完成后,再开启时间同步(NTP)
[root@zzh ~]# timedatectl set-ntp false
[root@zzh ~]# timedatectl Local time: 三 2023-05-24 19:54:53 CSTUniversal time: 三 2023-05-24 11:54:53 UTCRTC time: 三 2023-05-24 11:54:53Time zone: Asia/Shanghai (CST, +0800)NTP enabled: no
NTP synchronized: yesRTC in local TZ: noDST active: n/a
# 可以看到时间同步已经关闭了
[root@zzh ~]# timedatectl set-time "2023-5-23 20:00"
[root@zzh ~]# timedatectl Local time: 二 2023-05-23 20:00:02 CSTUniversal time: 二 2023-05-23 12:00:02 UTC
...
# 修改成功
[root@zzh ~]# timedatectl set-ntp true
# 然后再将时间同步开启
用ntpdate手动校时
ntpdate
命令可以手动从 NTP 服务器上获取时间并同步到本地系统。下面是使用 ntpdate
命令手动校时的步骤。
- 安装
ntpdate
命令
在大多数 Linux 发行版中,ntpdate
命令默认已经安装。如果没有安装,可以使用以下命令安装:
[root@zzh ~]# yum install -y ntpdate
- 查找可用的 NTP 服务器
可以使用ntpdate -q
命令查询可用的 NTP 服务器。例如,查询cn.pool.ntp.org
NTP 服务器的时间:
cn.pool.ntp.org是ntp网络授时组织的中国授时源
[root@zzh ~]# ntpdate -q cn.pool.ntp.org
server 162.159.200.123, stratum 3, offset -0.002245, delay 0.24213
server 193.182.111.142, stratum 2, offset -0.003186, delay 0.32124
server 119.28.183.184, stratum 2, offset -0.000999, delay 0.10298
24 May 20:04:29 ntpdate[66877]: adjust time server 119.28.183.184 offset -0.000999 sec
其中,offset
表示本地时间和 NTP 服务器时间的差值,delay
表示本地系统和 NTP 服务器之间的延迟时间。
3. 同步时间
使用 ntpdate
命令同步时间。例如,使用 cn.pool.ntp.org
NTP 服务器同步时间:
[root@zzh ~]# ntpdate cn.pool.ntp.org
24 May 20:13:50 ntpdate[81845]: adjust time server 84.16.73.33 offset -0.004202 sec
[root@zzh ~]# hwclock -w
该命令会从 cn.pool.ntp.org
NTP 服务器上获取时间并同步到本地系统。
hwclock 则是将正确的时间写入你的 BIOS 时间记录内。
语系设置
LANG 和 local 命令可以用来查询当前系统的语系信息和变量,而 /etc/local.conf 文件是语系的配置文件。系统的语系和软件的语言数据可能不同,如果想知道当前系统的语系,可以使用 localectl 命令来查看。
localectl 命令是一个用于管理系统语系的工具。它可以查看和修改系统语系,包括默认语言、键盘布局、时区等信息。使用 localectl 命令不需要编辑配置文件,更加方便。
例如,使用 localectl 命令查看当前系统的语系信息:
[root@zzh ~]# localectl System Locale: LANG=zh_CN.UTF-8VC Keymap: cnX11 Layout: cn
[root@zzh ~]# locale # 下面则是【当前这个软件的语系】信息
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
其中,System Locale
表示系统的默认语言,VC Keymap
表示系统的键盘布局,X11 Layout
表示系统的图形界面键盘布局。
如果想修改系统的语系,可以使用 localectl set-locale 命令,例如:
[root@localhost ~]# localectl set-locale LANG=en_US.UTF-8
[root@localhost ~]# localectl System Locale: LANG=en_US.UTF-8VC Keymap: cnX11 Layout: cn
这个命令会将系统的默认语言设置为 en_US.UTF-8。
防火墙简易设置
防火墙其实是一种网络数据的过滤方式,它可以根据你的服务器启动的服务来设置是否开放,也能够针对你信任的用户开放。由于目前 Centos 7 的默认防火墙机制为 firewalld,它的管理界面主要是通过命令行 firewall-cmd 这个详细的命令。我们用图形界面来介绍防火墙的相关内容
要启动防火墙的图形管理界面,你当然就得要先登录 X 才行。然后到【应用程序】>【杂项】>【防火墙】给它点下去。
配置: 【运行时】与【永久】的差异
如图箭头 1 处,基本上,防火墙的规则拟定大概有两种情况,一种是【暂时用来执行】的退则,一种则是【永久】的规则。一般来说,刚刚启动防火墙时,这两种规则会一模一样。不过,后来可能你会暂时测试而加上几条规则,如果该规则没有写入【永久】区的话,那下次重新加载防火墙时,该规则就会消失。所以请特别注意:【不要只是在运行时记录区增加规则设置,而是必须要永久记录区增加规则行才行】
区域:根据不同的环境所设计的网络区域
在计算机网络中,不同的网络环境可能需要划分不同的区域,以便更好地管理和保护网络资源。这些划分出的区域就是所谓的网络区域。
举个例子,一个大型企业的网络环境可能包括多个部门、多个子公司或者多个地区的分支机构,这些部门、子公司或分支机构之间可能需要进行一定的隔离,以保证各自的网络安全。为了实现这一目的,可以将网络划分为不同的区域,比如内部网络区域、外部网络区域以及 DMZ(即“隔离区域”)等。在这些区域之间设置相应的网络设备(如防火墙、路由器、交换机等),通过规定不同区域之间的访问规则,来实现网络资源的访问控制和安全保护。
总之,网络区域是根据不同的网络环境所设计的,用于实现网络资源的管理、保护和访问控制的一种组织方式。
相关设置项目
4号箭头的地方是重点。防火墙规则通常需要设置的地方有:
服务
:服务是指在网络上运行的应用程序,例如HTTP、FTP、SSH等。在设置防火墙规则时,我们需要指定哪些服务是允许访问的,哪些是禁止访问的。端口
:端口是指网络应用程序使用的通信端口,例如HTTP协议默认使用的端口是80,SSH协议默认使用的端口是22。在设置防火墙规则时,我们需要指定哪些端口是允许访问的,哪些是禁止访问的。协议
:协议是指网络通信中使用的协议,例如TCP、UDP等。在设置防火墙规则时,我们需要指定允许或禁止使用哪些协议进行通信。源端口
:源端口是指发起网络通信的应用程序使用的端口号。在设置防火墙规则时,我们可以指定允许或禁止使用哪些源端口进行通信。伪装
:伪装是一种隐藏机制,可以使网络通信看起来像是从防火墙本身发出的,从而增强网络安全性。在设置防火墙规则时,我们可以使用伪装功能来隐藏内部网络的真实IP地址和端口号。端口转发
:端口转发是一种网络通信机制,它可以将来自外部网络的请求转发到内部网络中的指定主机或端口。在设置防火墙规则时,我们可以使用端口转发功能来实现网络访问的转发和控制。ICMP过滤器
:ICMP是一种网络协议,用于在网络中传递控制信息和错误信息。在设置防火墙规则时,我们可以使用ICMP过滤器来控制网络中的ICMP消息,例如禁止PING等操作。富规则
:富规则是一种高级的防火墙规则,它可以根据不同的协议、源IP地址、目标IP地址、端口号等条件来设置访问策略。富规则可以更加灵活地控制网络访问,但设置起来也更加复杂。网卡
:网卡是指网络设备的物理或逻辑接口,例如网卡、虚拟网卡等。在设置防火墙规则时,我们需要指定哪些网卡是允许访问的,哪些是禁止访问的。来源
:在设置防火墙规则时,我们需要指定允许或禁止哪些来源访问网络,例如指定允许内部网络访问,禁止外部网络访问等。
现在我们的Linux服务器是要作为下面几个重要服务于相关的域名功能,你该如何配置防火墙?
- 开放ssh、www、ftp、https 等服务的常规端口
- 同时与前面几章搭配,还需要开放222端口与555端口
- 局域网络 192.168.200.0/24 是我们目前想要直接开放这段域名对我们服务器的连接
请注意,因为未来都要持续生效,所以请一定要到【永久】的防火墙设置项目里面去处理。不然只有这次开机期间会生效而已。
首先处理一下常规服务器开放,不过因为永久设置比较重要,因此你得要先经过授权认证才行
如下图所示,你要先确认箭头 1、2 、3的地方是正确的,如何再直接勾选 ftp、http、https、ssh即可。因为ssh默认被勾选就不再展示。比较特别的是勾选就生效,没有【确认】键
接下来按下【端口】的页面,如下图,按下【添加】之后出现的窗口当中填写你需要的端口号,通常也就是tcp协议保留它不动,之后按下【确定】即可
因为我们有两个端口要增加,所以请将222与555端口也添加,如下图
最后一个要处理的是局域网络开放,这时你可以这样执行命令
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.0/24" accept"
success
[root@localhost ~]# firewall-cmd --reload
success
最后一行很重要,我们上面的图例通通是作用于【永久】设置中,只是修改了配置文件,要让这些设置实际生效,那么就得要使用上面的reload,让防火墙系统整个完整的加载一行就行了。
代码解释
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.0/24" accept"
:
这条命令的作用是向防火墙添加一条永久规则,允许来自IP地址段为192.168.200.0/24的所有主机访问服务器。其中,–permanent选项表示将规则永久保存在防火墙中,add-rich-rule是添加富规则的命令,"rule family=“ipv4” source address=“192.168.200.0/24” accept"是具体的规则内容,它指定了规则的IP版本为IPv4,源IP地址为192.168.200.0/24,动作为允许访问。firewall-cmd --reload
:
这条命令的作用是重新加载防火墙规则,使刚刚添加的永久规则生效。
执行这两条命令后,就可以允许来自192.168.200.0/24地址段的主机访问服务器
Linux 服务器硬件数据的收集:dmidecode、lspci、lsusb、iostat
在Linux服务器上,可以使用一些命令来收集硬件数据,比如:
dmidecode
dmidecode是一款在Linux系统中用于获取计算机硬件系统信息的工具,可以获取到主板、BIOS、CPU、内存、硬盘等硬件信息。下面对dmidecode命令进行详解:
dmidecode [options]
常用选项:
- -t :指定要显示的硬件类型,如1表示显示主板信息,2表示显示内存信息,4表示显示CPU信息等。
- -s :指定要显示的硬件关键字,如system-manufacturer表示显示系统制造商。
- -u :以二进制格式显示DMI数据。
- -q :只显示硬件数据,不显示额外信息。
dmidecode支持的数字参数如下:
编号 | 信息 |
---|---|
0 | 计算机的基本输入输出系统,是计算机启动时加载的程序 |
1 | 计算机系统的基本信息,如制造商、型号、序列号等 |
2 | 主板的详细信息,如制造商、型号、序列号等 |
3 | 机箱的详细信息,包括制造商、型号、序列号等 |
4 | CPU 的详细信息,包括制造商、型号、频率等 |
5 | 内存控制器的详细信息,包括制造商、型号、频率等 |
6 | 内存模块的详细信息,包括制造商、型号、容量等 |
7 | CPU 缓存的详细信息,包括缓存级别、容量等 |
8 | 接口连接器的详细信息,如USB、SATA、PCI-E等 |
9 | 系统插槽的详细信息,如PCI-E插槽、内存插槽等 |
10 | 主板上的集成设备,如网卡、声卡等 |
11 | OEM厂商的信息 |
12 | 系统配置选项的详细信息,如BIOS设置等 |
13 | BIOS的语言信息 |
14 | 组关联信息 |
15 | 系统事件日志信息 |
16 | 物理内存信息 |
17 | 内存设备的详细信息,如制造商、型号、容量等 |
18 | 32位内存错误信息 |
19 | 内存阵列映射地址的信息 |
20 | 内存设备映射地址的信息 |
21 | 内置指针设备的信息,如触摸板、指点杆等 |
22 | 便携电池的信息 |
23 | 系统重置信息 |
24 | 硬件安全信息,如TPM |
25 | 系统电源控制信息 |
26 | 电压探头的信息 |
27 | 散热设备的信息,如CPU散热器、机箱风扇等 |
28 | 温度探头的信息 |
29 | 电流探头的信息 |
30 | 远程访问信息 |
31 | 启动完整性服务的信息 |
32 | 系统启动信息 |
33 | 64位内存错误信息 |
34 | 管理设备的信息 |
35 | 管理设备组件的信息 |
36 | 管理设备阈值数据的信息 |
37 | 内存通道的信息,如单通道、双通道等 |
38 | IPMI设备的信息 |
39 | 电源的信息 |
40 | 额外的信息 |
41 | 扩展的集成设备信息 |
42 | 管理控制器主机接口的信息 |
显示BIOS版本号
[root@localhost ~]# dmidecode -s bios-version
6.00
显示整个系统的硬件信息,例如主板型号
[root@localhost ~]# dmidecode -t 2
# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.Handle 0x0002, DMI type 2, 15 bytes
Base Board InformationManufacturer: Intel CorporationProduct Name: 440BX Desktop Reference PlatformVersion: NoneSerial Number: NoneAsset Tag: Not SpecifiedFeatures: NoneLocation In Chassis: Not SpecifiedChassis Handle: 0x0000Type: UnknownContained Object Handles: 0
显示整个系统的CPU信息
[root@chenshiren ~]# dmidecode -t 4
......
......
......
Handle 0x0082, DMI type 4, 42 bytes
Processor InformationSocket Designation: CPU #127Type: Central ProcessorFamily: UnknownManufacturer: GenuineIntelID: EA 06 00 00 FF FB 8B 1FVersion: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHzVoltage: 3.3 VExternal Clock: UnknownMax Speed: 30000 MHzCurrent Speed: 2600 MHzStatus: Populated, Disabled By BIOSUpgrade: ZIF SocketL1 Cache Handle: 0x0112L2 Cache Handle: 0x0192L3 Cache Handle: Not ProvidedSerial Number: Not SpecifiedAsset Tag: Not SpecifiedPart Number: Not SpecifiedCore Count: 4Core Enabled: 4Characteristics:64-bit capableMulti-CoreExecute Protection
lspci
lspci是Linux系统中的一个命令,它可以列出计算机中所有PCI设备的信息,包括显示卡、声卡、网卡等等。可以理解为,lspci是一个工具,它帮助我们查看计算机中的硬件设备。
lspci [-vvn]
选项:
-v:显示更多的PCI设备的详细信息
-vv:比-v还要更详细的详细信息
-n:直接查看PCI的ID而不是厂商名称
-s:只显示指定设备的信息
去看系统内的PCI相关设备
[root@localhost ~]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:10.0 SCSI storage controller: Broadcom / LSI 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:00.0 USB controller: VMware USB1.1 UHCI Controller
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:02.0 Multimedia audio controller: Ensoniq ES1371/ES1373 / Creative Labs CT2518 (rev 02)
02:03.0 USB controller: VMware USB2 EHCI Controller
不必加任何参数,就能够显示出目前主机上面的各个PCI设备
如果你要知道以太网的详细信息
[root@localhost ~]# lspci -s 00:03.0 -vv
/usr/share/hwdata/pci.ids
其实那个就是PCI的标准ID与品牌名称的对于表。此外,刚刚我们使用lspci时,其实所有数据都是从 /proc/bus/pci/ 目录中获取的。不过由于硬件发展太过迅速,所以你的 pci.ids 文件可能会落伍,可以使用下面的方式来在线更新你的对应文件
[root@localhost ~]# update-pciids
lsusb
lsusb命令用于列出系统中所有的USB设备信息,包括USB控制器、USB设备及其属性等。具体使用方法如下:
lsusb [-t]
选项:
-t:以树形结构显示设备信息
-s [bus]:[device]:只显示指定总线(bus)和设备(device)的信息,例如 lsusb -s 001:002。
-d [vendor]:[product]:只显示指定供应商(vendor)和产品(product)的信息,例如 lsusb -d 045e:00cb。
列出目前主机USB各端口状态
[root@localhost ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc.
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
iostat
iostat是一个Linux系统性能监控工具,用于显示CPU、磁盘和tty设备的统计信息。
如果没有这个软件就执行如下命令安装它
yum install -y sysstat
iostat [选项] [间隔时间] [次数]
选项:
-c:显示CPU的统计信息
-d:显示磁盘的统计信息
-k:以KB为单位显示统计信息
-m:以MB为单位显示统计信息
-t:显示时间戳
显示一下目前整个系统的CPU与存储设备的状态
[root@localhost ~]# iostat
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 2023年05月25日 _x86_64_ (8 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.28 0.00 0.87 0.00 0.00 98.85Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.26 24.06 8.13 545074 184191
scd0 0.00 0.05 0.00 1028 0
输出详解:
-
第一行:显示Linux系统的版本信息、当前日期和时间、CPU的架构和数量。
-
第二行:显示CPU的利用率统计信息,包括以下各列:
%user:表示用户进程占用CPU时间的百分比。
%nice:表示“优先级较高的进程”占用CPU时间的百分比。
%system:表示内核占用CPU时间的百分比。
%iowait:表示CPU等待I/O操作完成的时间占用的百分比。
%steal:表示虚拟机监控程序(如KVM)偷取CPU时间的百分比。
%idle:表示CPU空闲时间的百分比。
-
第三行:显示磁盘I/O统计信息,包括以下各列:
Device:表示磁盘设备的名称。
tps :平均每秒钟的传送次数,与数据传输【次数】有关,非容量
KB_read/s:开机到现在平均的读取单位
KB_wrtn/s:开机到现在平均的写入单位
KB_read:开机到现在,总共读出来的数据
KB_wrtn:开机到现在,总共写入的数据
仅针对sda,每两秒检测一次,并且共检测三次存储设备
[root@localhost ~]# iostat -d 2 3 sda
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 2023年05月25日 _x86_64_ (8 CPU)Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.24 23.25 8.07 545074 189201Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 1.00 0.00 10.75 0 21Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0
仔细看看,如果是有检测次数的情况,那么第一次显示的是【从开机到现在的数据】
第二次以后所显示的数据则代表两次检测之间的系统传输值,举例来说,上面的信息中,
第二次显示的数据,则是两秒钟内(本案例)系统的总传输量的平均值
了解磁盘的健康状态
其实Linux服务器最重要的就是【数据安全】,而数据都是放在磁盘当中的,所以,无时无刻了解以下你的磁盘健康状况,应该是个好习惯。我呢提提,你怎么知道你的磁盘是好还是坏?
smartctl是smartmontools软件包中的命令行工具,用于读取和显示磁盘的S.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology)信息。S.M.A.R.T是一种嵌入在计算机硬件中的技术,可以在磁盘上记录各种故障预测和错误信息,从而提前预测磁盘故障并采取相应措施。
smartctl命令的基本语法如下:
smartctl [options] device
其中,device参数指定要显示S.M.A.R.T信息的磁盘设备,可以是设备文件名(如/dev/sda)、磁盘代号(如sda)或磁盘路径(如/sys/block/sda)。
下面是一些常用的选项和参数:
- -a:显示磁盘的所有S.M.A.R.T信息。
- -H:显示磁盘的健康状态
- -i:显示磁盘的基本信息,包括制造商、型号、序列号、固件版本等。
- -l error:显示磁盘的错误日志。
- -t [testname]:执行磁盘的自测,testname参数指定自测的类型,如short(短自测)、long(长自测)等。
除了以上常用选项,smartctl命令还支持许多其他选项,可以使用“man smartctl”命令查看完整的手册。
用smartctl 显示完整的 /dev/sda 的信息
[root@localhost ~]# smartctl -a /dev/sdb
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===
Vendor: VMware,
Product: VMware Virtual S
Revision: 1.0
User Capacity: 21,474,836,480 bytes [21.4 GB]
Logical block size: 512 bytes
Rotation Rate: Solid State Device
Device type: disk
Local Time is: Thu May 25 16:08:23 2023 CST
SMART support is: Unavailable - device lacks SMART capability.=== START OF READ SMART DATA SECTION ===
Current Drive Temperature: 0 C
Drive Trip Temperature: 0 CError Counter logging not supportedDevice does not support Self Test logging
查看磁盘的健康状态
[root@localhost ~]# smartctl -H /dev/sdb
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-3.10.0-1160.el7.x86_64] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF READ SMART DATA SECTION ===
SMART Health Status: OK
Linux 备份要点
在Linux系统中,备份数据是非常重要的,特别是在生产环境中。以下是Linux备份的一些要点:
确定备份的目录和文件
Linux备份的目录和文件取决于用户需要备份的数据内容和重要性,以下是一些常见的备份目录和文件:
-
/etc:包含系统配置文件,例如网络配置、用户账户信息、服务配置等。
-
/home:包含用户主目录,其中包括用户的文档、音乐、视频、图片等文件。
-
/var:包含系统日志、缓存文件、邮件、数据库等数据。
-
/usr/local:包含用户安装的软件和应用程序。
-
/root:root用户的主目录,其中包括root用户的文档、配置文件等。
-
/opt:包含第三方软件和应用程序。
-
/srv:包含服务数据,例如Web服务器的网站数据、FTP服务器的文件等。
-
/boot:包含系统启动文件和内核文件。
-
/lib:包含系统共享库文件。
-
/mnt:包含挂载的文件系统或设备。
当然,以上仅是一些常见的备份目录和文件,具体需要备份哪些目录和文件取决于用户需要保护的数据内容和重要性。
虽然Linux备份可以备份大部分的目录和文件,但有些目录和文件不应该被备份或者无法被备份,以下是一些不能备份的目录和文件:
-
/proc和/sys:这些目录包含的是虚拟文件系统,其中的文件不是实际的文件而是系统内核的相关信息,无法被备份。
-
/dev:这个目录包含的是设备文件,备份这些文件没有意义,因为它们不包含实际的数据。
-
/run:这个目录包含的是运行时的系统信息,例如进程ID和锁文件,这些信息在系统重启后会被重新创建,无需备份。
-
/tmp:这个目录包含的是临时文件,通常不需要备份。
-
已经被加密的文件:如果文件已经被加密,备份也没有意义,因为备份文件也会被加密,无法还原。
-
大文件或者已损坏的文件:备份大文件需要消耗大量的时间和存储空间,因此不建议备份过大的文件。如果文件已经损坏,备份也没有意义,因为备份文件也会是损坏的。
总之,不能备份的目录和文件通常是没有实际意义或者无法还原的文件,备份时需要注意排除这些文件,以避免浪费时间和存储空间。
备份的种类、频率与工具的选择
备份分为多种类型,根据不同的备份需求和数据类型,需要选择不同的备份类型,以下是常见的备份类型、备份频率和备份工具的选择:
完整备份
完整备份(Full backup)是指备份系统中所有的文件和目录,包括系统文件和用户文件。完整备份的优点是备份文件包含了所有的数据,恢复时速度较快;缺点是备份文件较大,备份时间较长。完整备份通常用于定期备份,例如每周或每月备份一次。
以下是一个小案例,介绍如何使用tar工具进行完整备份:
假设我们有一个Web服务器,其中有一个/var/www/html目录,存储了网站的所有静态文件和动态脚本。我们需要对该目录进行完整备份,以防止数据丢失。
- 使用tar命令进行备份:
tar -czvf /backup/html_backup.tar.gz /var/www/html# -c :表示创建新的备份文件
# -z :表示使用gzip压缩
# -v :表示显示详细信息
# -f :表示指定备份文件名和路径
该命令将/var/www/html目录下的所有文件和子目录打包成一个名为html_backup.tar.gz的压缩文件,并将其保存在/backup目录下。
2. 恢复备份文件:
tar -xzvf /backup/html_backup.tar.gz -C /# -z :表示使用gzip解压缩
# -x :表示从备份文件中恢复数据
# -v :表示显示详细信息
# -f :表示指定备份文件名和路径
# -C :示指定解压缩路径
该命令将html_backup.tar.gz文件解压缩,并将其恢复到根目录/下。
增量备份
增量备份(Incremental backup)是指备份系统中自上次备份后新增或修改过的文件和目录,与完整备份不同,增量备份只备份最新的变更,因此备份文件较小,备份时间也较短。增量备份通常用于频繁备份,例如每天备份一次。
以下是一个小案例,介绍如何使用rsync工具进行增量备份:
假设我们有一个文件夹/data,其中存储了重要的数据文件,我们需要每天备份一次/data目录,以防止数据丢失。
- 使用rsync命令进行增量备份:
rsync -avz --delete /data /backup/data_backup/# -a :表示归档模式
# -v :示显示详细信息
# -z :表示使用gzip压缩传输
# --delete :表示删除目标目录中已经不存在的文件
该命令将/data目录的变更同步到/backup/data_backup目录中,第一次备份时,rsync会备份所有的文件,之后每天备份时,rsync只会备份新增或修改过的文件。备份完成后,目标目录/backup/data_backup中会保存最新的备份文件。
2. 恢复备份文件:
如果需要恢复备份文件,可以直接将备份文件复制回原始目录/data中,或者使用rsync命令进行恢复:
rsync -avz /backup/data_backup/ /data/
该命令将/backup/data_backup目录中的文件同步到/data目录中,-a表示归档模式,-v表示显示详细信息,-z表示使用gzip压缩传输。
差异备份
差异备份是指备份系统中自上次备份以来新增或修改过的文件和目录,与上一次备份之间的差异。
差异备份只备份新增或修改的文件和目录,而不是备份整个文件系统。
以下是一个小案例,介绍如何使用xfsdump工具进行差异备份:
假设我们有一台服务器,其中存储了重要的数据文件,我们需要每天进行差异备份,以保留系统最新的变更,并避免备份文件过大。
- 安装xfsdump工具:
xfsdump是一款用于备份和恢复XFS文件系统的工具,可以在大多数Linux发行版中找到。如果系统中没有安装该工具,可以使用以下命令进行安装:
yum install -y xfsdump
- 运行xfsdump进行备份:
先进行完整备份
xfsdump -l 0 -L 'fullbackup' -M 'fullbackup' -f /backupdata/home.dump /home
- xfsdump:命令名称,表示使用xfsdump工具进行备份。
- -l 0:备份级别为0,表示完全备份。
- -L ‘fullbackup’:备份标签为’fullbackup’,用于标记备份文件。
- -M ‘fullbackup’:备份模式为’fullbackup’,表示完全备份。
- -f /backupdata/home.dump:备份结果保存到/backupdata/home.dump文件中。
- /home:备份源路径,表示备份/home目录下的所有文件和子目录。
- 第一次进行差异备份
xfsdump -l 1 -L 'fullbackup-1' -M 'fullbackup-1' -f /backupdata/home.dump1 /home
- xfsdump:命令名称,表示使用xfsdump工具进行备份。
- -l 1:备份级别为1,表示增量备份。
- -L ‘fullbackup-1’:备份标签为’fullbackup-1’,用于标记备份文件。
- -M ‘fullbackup-1’:备份模式为’fullbackup-1’,表示差异备份。
- -f /backupdata/home.dump1:备份结果保存到/backupdata/home.dump1文件中。
- /home:备份源路径,表示备份/home目录下的所有文件和子目录。
- 恢复备份文件:
让/home整个恢复到原本的状态
xfsrestore -f /backupdata/home.dump -L fullbackup /home
镜像备份
镜像备份是指将整个硬盘或分区的内容完整地复制到另一个硬盘或分区中,以实现数据的完全备份。镜像备份的优点是备份结果与原始数据完全相同,可以快速还原系统。但是,由于备份结果的大小与原始数据一致,因此备份时间较长,占用存储空间较大。
在Linux系统中,可以使用dd命令进行镜像备份。dd命令是一个强大的数据复制工具,可以将数据从一个文件或设备复制到另一个文件或设备中。
以下是一个使用dd命令进行镜像备份的例子:
假设我们要将/dev/sda磁盘的整个内容备份到/dev/sdb中:
dd if=/dev/sda of=/dev/sdb bs=4M conv=sync,noerror
- sudo:使用管理员权限运行该命令;
- if=/dev/sda:表示输入文件为/dev/sda,即备份源;
- of=/dev/sdb:表示输出文件为/dev/sdb,即备份目标;
- bs=4M:表示以4MB为单位进行数据块复制;
- conv=sync,noerror:表示在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。
这条命令的作用是将/dev/sda整个磁盘的内容复制到/dev/sdb中,其中bs参数指定数据块大小为4MB,conv参数指定在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。
定期备份
定期备份是指按照一定的时间间隔,定期对系统数据进行备份,以保证数据的安全性和可靠性。通过定期备份,可以避免因系统故障、病毒攻击等原因导致数据丢失或损坏的风险。在Linux系统中,可以使用cron定时任务来实现定期备份。
以下是一个使用cron定时任务实现每天定期备份的例子:
假设我们要在每天凌晨3点进行一次全盘备份,备份结果保存到/home/backup目录下:
- 创建备份脚本文件
首先,我们需要创建一个备份脚本文件,例如/home/backup.sh,该脚本文件的内容如下:
#!/bin/bash
# 全盘备份
dd if=/dev/sda of=/home/backup/backup.img bs=4M conv=sync,noerror
该脚本文件的作用是将/dev/sda整个磁盘的内容备份到/home/backup/backup.img文件中,其中bs参数指定数据块大小为4MB,conv参数指定在出现读取错误时,使用同步模式继续复制,同时忽略读取错误。
2. 添加定时任务
接下来,我们需要使用cron定时任务来实现每天定期备份。可以使用以下命令打开cron编辑器:
sudo crontab -e
然后,在编辑器中添加以下行:
0 3 * * * /bin/bash /home/backup.sh
该行的含义是,在每天凌晨3点执行/home/backup.sh脚本文件进行备份。其中,0表示分钟数,3表示小时数,*表示任意日期,*表示任意月份,*表示任意星期几。最后,/bin/bash /home/backup.sh指定执行备份脚本文件。
远程备份的脚本
如果管理两台以上的Linux主机时,那么互相将对方的重要数据保存一份在自己的系统中也是个不错的想法。那么怎么保存?使用USB硬盘复制来吗?当然不是,你可以通过网络来处置。我们假设你已经有一台主机,这台主机的IP 是192.168.200.30 而且这台主机已经提供了 sshd这个网络服务了,接下里可以这样做。
使用rsync上传备份数据
要使用rsync你必须要在你的服务器上面获取某个账号使用权,并让该账号可以不用密码也登才行。
[root@server1 ~]# ssh-keygen
[root@server2 ~]# ssh-keygen
[root@server2 ~]# ssh-copy-id server1主机IP
[root@server1 ~]# ssh-copy-id server2主机IP
# copy过程要输入对方主机的密码
# 当提示你可以使用 ssh 对面主机IP时即为配置成功
当你已经设置好了两个服务器可以不用密码都可以登录远程服务器,而同样的,你要让 /backup/weekly/ 整个备份到 /home/下面时,可以简单地这样做
[root@server2 ~]# vim /backup/rsync.sh
#!/bin/bash
remotedir=/home
basedir=/backup/weekly
host=192.168.200.20
id=rootrsync -av -e ssh $basedir ${id}@${host}:${remotedir}
然后执行程序就可以远程备份了
[root@localhost ~]# sh /backuo/rsync.sh
sending incremental file list
weeklysent 5,244,244 bytes received 35 bytes 10,488,558.00 bytes/sec
total size is 5,242,880 speedup is 1.00