初识Linux(十七)------ 基础系统设置与备份策略
新的 CentOS 7 有针对不同的服务提供了相当大量的命令行设置模式,而过去的 setup 似乎没用了。取而代之的是 bash-complete 提供了不少参数补全的设置工具,包括网络设置也是通过这个机制。这个章节主要就是在介绍如何通过这些基本的指令来设置系统,以及系统和数据备份。
1. 系统的基本设置
1.1 网络设置 (手动设置与DHCP自动获取)
主机通过网卡连上Internet,主流网卡都是根据以太网络协议所开发出来的以太网卡 (Ethernet),因此 Linux 就称呼这种网络接口为 ethN (N 为数字,从0开始)。
Centos 7 上网卡名称会是这样分类的:
- eno1 :代表由主板 BIOS 内置的网卡;
- ens1 :代表由主板 BIOS 内置的 PCI-E 界面的网卡;
- enp2s0 :代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有 s0, s1... 的编号~
- eth0 :如果上述的名称都不适用,就回到原本的默认网卡编号。
ifconfig -a
可查看网卡。
手动设置 IP 网络参数
基本上的网络参数需要这些数据的:
- 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
通过 nmcli 来处理,nmcli 是通过“联机代号”的名称来设置是否要上网,而每个“联机代号”会有个“网卡代号”, 这两个东西通常设置相同。
查看目前系统上默认有什么联机代号:
[root@study ~]# nmcli connection show [网卡代号] [root@study ~]# nmcli connection show NAME UUID TYPE DEVICE eth0 505a7445-2aac-45c8-92df-dc10317cec22 802-3-ethernet eth0 # NAME 就是联机代号,通常与后面的网卡 DEVICE 会一样 # UUID 这个是特殊的装置识别,保留就好 # TYPE 就是网卡的类型,通常就是以太网卡 # DEVICE 当然就是网卡名称 # 从上面我们会知道有个 eth0 的联机代号,那么来查看这个联机代号的设定 [root@study ~]# nmcli connection show eth0 connection.id: eth0 connection.uuid: 505a7445-2aac-45c8-92df-dc10317cec22 connection.interface-name: eth0 connection.type: 802-3-ethernet connection.autoconnect: yes .....(中间省略)..... ipv4.method: manual ipv4.dns: ipv4.dns-search: ipv4.addresses: 192.168.1.100/24 ipv4.gateway: -- .....(中间省略)..... IP4.ADDRESS[1]: 192.168.1.100/24 IP4.GATEWAY: IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64 IP6.GATEWAY:
如上面所示,最下面的大写的 IP4, IP6 指的是目前的实际使用的网络参数,最上面的 connection 开头的部份则指的是连线的状态,比较重要的参数如下:
- connection.autoconnect [yes|no] :是否于开机时启动这个连线,默认通常是 yes;
- ipv4.method [auto|manual] :自动还是手动设置网络参数;
- ipv4.dns [dns_server_ip] :就是 DNS 的 IP地址;
- ipv4.addresses [IP/Netmask] :就是 IP 与 netmask 的集合,中间用斜线 / 来隔开~
- ipv4.gateway [gw_ip] :就是 gateway 的 IP 地址;
根据上面的设置项目,来设置网络参数:
[root@study ~]# nmcli connection modify eth0 \ > connection.autoconnect yes \ > ipv4.method manual \ > ipv4.addresses 172.16.1.1/16 \ > ipv4.gateway 172.16.200.254 \ > ipv4.dns 172.16.200.254 # 上面只是“修改了配置文件”而已,要实际生效还得要启动 (up) 这个 eth0 连线界面才行 [root@study ~]# nmcli connection up eth0 [root@study ~]# nmcli connection show eth0 .....(前面省略)..... IP4.ADDRESS[1]: 172.16.1.1/16 IP4.GATEWAY: 172.16.200.254 IP4.DNS[1]: 172.16.200.254 IP6.ADDRESS[1]: fe80::5054:ff:fedf:e174/64 IP6.GATEWAY:
自动取得 IP 参数
只需要将 ipv4.method 修改为 auto 就可以。
[root@study ~]# nmcli connection modify eth0 \ > connection.autoconnect yes \ > ipv4.method auto [root@study ~]# nmcli connection up eth0 [root@study ~]# nmcli connection show eth0 IP4.ADDRESS[1]: 172.16.2.76/16 IP4.ADDRESS[2]: 172.16.1.1/16 IP4.GATEWAY: 172.16.200.254 IP4.DNS[1]: 172.16.200.254
修改主机名称
[root@study ~]# hostnamectl [set-hostname 你的主机名] # 1. 显示目前的主机名称与相关信息 [root@study ~]# hostnamectl Static hostname: study.centos.vbird # 这就是主机名称 Icon name: computer Chassis: n/a Machine ID: 309eb890d09f440681f596543d95ec7a Boot ID: b2de392ff1f74e568829c716a7166ecd Virtualization: kvm Operating System: CentOS Linux 7 (Core) # 操作系统名称! CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-229.el7.x86_64 # 核心版本也提供! Architecture: x86_64 # 硬件等级也提供! # 2. 尝试修改主机名称为 www.centos.vbird 之后再改回来~ [root@study ~]# hostnamectl set-hostname www.centos.vbird [root@study ~]# cat /etc/hostname www.centos.vbird [root@study ~]# hostnamectl set-hostname study.centos.vbird
1.2 日期与时间设置
时区的显示与设置
[root@study ~]# timedatectl [commamd] 选项与参数: list-timezones :列出系统上所有支持的时区名称 set-timezone :设置时区位置 set-time :设置时间 set-ntp :设置网络校时系统 # 1. 显示目前的时区与时间等信息 [root@study ~]# timedatectl Local time: Tue 2015-09-01 19:50:09 CST # 本地时间 Universal time: Tue 2015-09-01 11:50:09 UTC # UTC 时间,可称为格林威治标准时间 RTC time: Tue 2015-09-01 11:50:12 Timezone: Asia/Taipei (CST, +0800) # 就是时区 NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: n/a # 2. 显示出是否有 New_York 时区?若有,则请将目前的时区更新一下 [root@study ~]# timedatectl list-timezones | grep -i new America/New_York America/North_Dakota/New_Salem [root@study ~]# timedatectl set-timezone "America/New_York" [root@study ~]# timedatectl Local time: Tue 2015-09-01 07:53:24 EDT Universal time: Tue 2015-09-01 11:53:24 UTC RTC time: Tue 2015-09-01 11:53:28 Timezone: America/New_York (EDT, -0400) [root@study ~]# timedatectl set-timezone "Asia/Taipei"
时间调整
# 1. 将时间调整到正确的时间点上! [root@study ~]# timedatectl set-time "2015-09-01 12:02"
过去使用 date 去修改日期后,还得要使用 hwclock 去修正 BIOS 记录的时间~现在通过 timedatectl 全部搞定。
用 ntpdate 手动网络校时
[root@study ~]# ntpdate tock.stdtime.gov.tw 1 Sep 13:15:16 ntpdate[21171]: step time server 211.22.103.157 offset -0.794360 sec [root@study ~]# hwclock -w
tock.stdtime.gov.tw 指的是台湾地区国家标准实验室提供的时间服务器(因为看的书作者鸟哥是台湾的╮(╯▽╰)╭)。hwclock 则是将正确的时间写入 BIOS 时间记录内。
1.3 语系设置
如果想要知道目前“系统语系”的话, 除了调用配置文件 /etc/locale.conf 之外,也能够使用 localectl 来查阅:
[root@study ~]# localectl System Locale: LANG=zh_TW.utf8 # 下面这些数据就是“系统语系” LC_NUMERIC=zh_TW.UTF-8 LC_TIME=zh_TW.UTF-8 LC_MONETARY=zh_TW.UTF-8 LC_PAPER=zh_TW.UTF-8 LC_MEASUREMENT=zh_TW.UTF-8 VC Keymap: cn X11 Layout: cn X11 Options: grp:ctrl_shift_toggle [root@study ~]# locale LANG=zh_TW.utf8 # 下面的则是“当前这个软件的语系”数据! LC_CTYPE="en_US.utf8" LC_NUMERIC="en_US.utf8" .....(中间省略)..... LC_ALL=en_US.utf8
至于修改: localectl set-locale LANG=en_US.utf8
1.4 防火墙简易设置
防火墙其实是一种网络数据的过滤方式,它可以依据你服务器启动的服务来设置是否放行,也能够针对你信任的用户来放行。目前 CentOS 7 的默认防火墙机制为 firewalld, 他的管理界面主要是通过命令行 firewall-cmd 。
略
2. 查看硬件数据
2.1 dmidecode 查看硬件配置
[root@study ~]# dmidecode -t type 选项与参数: 详细的 type 项目请 man dmidecode 查询更多的数据,这里仅列出比较常用的项目: 1 :详细的系统数据,含主板的型号与硬件的基础数据等 4 :CPU 的相关数据,包括倍频、外频、核心数、核心绪数等 9 :系统的相关插槽格式,包括 PCI, PCI-E 等等的插槽规格说明 17:每一个内存插槽的规格,若内有内存,则列出该内存的容量与型号
2.2 硬件资源的收集与分析
Linux kernel 在开机时就能够侦测主机硬件并载入适当的模块来驱动硬件了。 而核心所侦测到的各项硬件设备,后来就会被记录在 /proc 与 /sys 当中。除了直接调用出 /proc 下面的文件内容之外,其实 Linux 有提供几个简单的指令:
- gdisk:可以使用 gdisk -l 将分区表列出;
- dmesg:观察核心运行过程当中所显示的各项信息记录;
- vmstat:可分析系统 (CPU/RAM/IO) 目前的状态;
- lspci:列出整个 PC 系统的 PCI 接口设备;
- lsusb:列出目前系统上面各个 USB 端口的状态,与连接的 USB 设备;
- iostat:与 vmstat 类似,可实时列出整个 CPU 与周边设备的 Input/Output 状态。
lspci
[root@study ~]# lspci [-vvn] 选项与参数: -v :显示更多的 PCI 接口设备的详细信息; -vv :比 -v 还要更详细的细部信息; -n :直接观察 PCI 的 ID 而不是厂商名称
范例一:查阅您系统内的 PCI 总线相关设备: [root@study ~]# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.0 RAM memory: Red Hat, Inc Virtio memory balloon 00:06.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 01) 00:1d.0 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03) 00:1d.1 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03) 00:1d.2 USB controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03) 00:1d.7 USB controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03) # 不必加任何的参数,就能够显示出目前主机上面的各个 PCI 接口的设备
如果想要知道那个以太网卡更详细的信息时,可以使用如下的选项来处理:
[root@study ~]# lspci -s 00:03.0 -vv
-s 后面接的那个东西每个设备的总线、插槽与相关函数功能。
可以对照下面这个文件来了解该串数据的意义:/usr/share/hwdata/pci.ids 。其实就是 PCI 的标准 ID 与厂牌名称的对应表,使用 lspci 时,其实所有的数据都是由 /proc/bus/pci/ 目录下的数据所取出的。
如果pic.ids文件过时了,使用下面的方式来线上更新:update-pciids
lsusb
[root@study ~]# lsusb [-t] 选项与参数: -t :使用类似树状目录来显示各个 USB 端口的相关性 范例一:列出目前鸟哥的测试用主机 USB 各端口状态 [root@study ~]# lsusb Bus 002 Device 002: ID 0627:0001 Adomax Technology Co., Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub # 如上所示,鸟哥的主机在 Bus 002 有接了一个设备, # 该设备的 ID 是 0627:0001,对应的厂商与产品为 Adomax 的设备。
ID 号码与厂商型号对照也是在 /usr/share/hwdata/pci.ids 。
iostat
默认 CentOS 并没有安装这个软件,要先安装 yum install sysstat
[root@study ~]# iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数] 选项与参数: -c :仅显示 CPU 的状态; -d :仅显示储存设备的状态,不可与 -c 一起用; -k :默认显示的是 block ,这里可以改成 K Bytes 的大小来显示; -m :与 -k 类似,只是以 MB 的单位来显示结果。 -t :显示日期出来; 范例一:显示一下目前整个系统的 CPU 与储存设备的状态 [root@study ~]# iostat Linux 3.10.0-229.el7.x86_64 (study.centos.vbird) 09/02/2015 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.08 0.01 0.02 0.00 0.01 99.88 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 0.46 5.42 3.16 973670 568007 scd0 0.00 0.00 0.00 154 0 sda 0.01 0.03 0.00 4826 0 dm-0 0.23 4.59 3.09 825092 555621 # 瞧!上面数据总共分为上下两部分,上半部显示的是 CPU 的当下信息; # 下面数据则是显示储存设备包括 /dev/vda 的相关数据,他的数据意义: # tps :平均每秒钟的传送次数!与数据传输“次数”有关,非容量! # kB_read/s :开机到现在平均的读取单位; # kB_wrtn/s :开机到现在平均的写入单位; # kB_read :开机到现在,总共读出来的文件单位; # kB_wrtn :开机到现在,总共写入的文件单位; 范例二:仅针对 vda ,每两秒钟侦测一次,并且共侦测三次储存设备 [root@study ~]# iostat -d 2 3 vda Linux 3.10.0-229.el7.x86_64 (study.centos.vbird) 09/02/2015 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 0.46 5.41 3.16 973682 568148 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 1.00 0.00 0.50 0 1 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 0.00 0.00 0.00 0 0 # 仔细看一下,如果是有侦测次数的情况,那么第一次显示的是“从开机到现在的数据”, # 第二次以后所显示的数据则代表两次侦测之间的系统传输值!举例来说,上面的信息中, # 第二次显示的数据,则是两秒钟内(本案例)系统的总传输量与平均值。
2.3 了解磁盘的健康状态
SMART 是“ Self-Monitoring, Analysis and Reporting Technology System ”的缩写,主要用来监测 ATA 与 SCSI 界面的磁盘, 要被监测的磁盘也必须要支持 SMART 的协议,否则 smartd 就无法去下达指令,smartd 提供一只指令名为 smartctl。
# 1. 用 smartctl 来显示完整的 /dev/sda 的信息 [root@study ~]# smartctl -a /dev/sda smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-229.el7.x86_64] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org # 首先来输出一下这部磁盘的整体信息状况!包括制造商、序号、格式、SMART 支持度等等! === START OF INFORMATION SECTION === Device Model: QEMU HARDDISK Serial Number: QM00002 Firmware Version: 0.12.1 User Capacity: 2,148,073,472 Bytes [2.14 GB] Sector Size: 512 Bytes logical/physical Device is: Not in smartctl database [for details use: -P showall] ATA Version is: ATA/ATAPI-7, ATA/ATAPI-5 published, ANSI NCITS 340-2000 Local Time is: Wed Sep 2 18:10:38 2015 CST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED # 接下来则是一堆基础说明 General SMART Values: Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled. .....(中间省略)..... # 再来则是有没有曾经发生过磁盘错乱的问题登录! SMART Error Log Version: 1 No Errors Logged # 当你下达过磁盘自我检测的过程,就会被记录在这里了! SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 4660 - # 2 Short offline Completed without error 00% 4660 - # 2. 命令磁盘进行一次自我检测的动作,然后再次观察磁盘状态! [root@study ~]# smartctl -t short /dev/sda [root@study ~]# smartctl -a /dev/sda .....(前面省略)..... # 下面会多出一个第三笔的测试信息!看一下 Status 的状态,没有问题就是好消息! SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed without error 00% 4660 - # 2 Short offline Completed without error 00% 4660 - # 3 Short offline Completed without error 00% 4660 -
进行磁盘自我检查时,可能磁盘的 I/O 状态会比较频繁,因此不建议在系统忙碌的时候进行。
3. 备份
略
突然有一天假期结束,时来运转,人生才是真正开始了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步