处理故障的思路
1、首先明确自己出现该问题之前做了哪些操作,把做过的操作记录下来。
2、排除基本故障(防火墙、SeLinux、权限等)
3、查看相关报错信息,出现error关键词或者其他错误信息关键词,找出报错信息的核心,复制——进入百度先大体查看一下是哪一类问题。
4、我们可以使用 echo $? 来查看上一条命令是否成功执行。
5、提取中心"思想",用自己的话语来描述问题。在描述问题的过程中一定要注意系统的版本号。其基本格式为:系统版本号+问题原因+问题现象
6、通过百度检索发现类似问题,尝试在自己的机器上解决,若解决无效果,回滚命令,查找问题所在,并继续检索另外的答案。
如何问问题,才能更高效
- 前因(环境)
- 后果(报错)
- 尝试过哪些解决方法,是否解决
- 将过程写到Word或博客上,方便他人查看和解决类似问题
- 逆商
学习方法
- 花在学习上多少时间?
- 花在专业知识的学习上多少时间?
- 花在专业知识的读书笔记输出上多少时间?
- 在自己所在行业的关键岗位上工作多少时间?
- 工作中用到专业知识的地方花费多少时间?
- 自己一共输出了多少本书,属于自己的专业书籍的读书笔记?
行业中未过时的知识
- 数据结构
- 算法
- 计算机系统结构
- 操作系统
- 编译原理
- 数据库
- 计算机网络
- 软件工程
- 数据分析
运维高薪的技术点
- 容器:
K8s
和docker
- 自动化工具:
ansible
、shell
、ELK
、EFK
- CI/CD:
jenkins
、gitlab
运维找工作必会知识点
- Web服务:
nginx
、tomcat
- 数据库:
MySql
、redis
- 监控:
zabbix
、prometheus
- 备份与还原:数据备份及还原的过程和方法
运维基础知识点:
- 基础命令:
find
、sed
、awk
、head
、cat
、ls
、cd
、df
… - 服务搭建:
ftp
、apache
、svn
、git
- 负载均衡:
nginx
、lvs
- 服务附属工具:
MySqldump
、ab
、fail2ban
… - 大学计算机理论:
网络基础
、数据结构
、算法
、操作系统
等
会了加分
openstatck
、VMware
、kvm
- 数据库:
oracle
、SQL server
- 负载均衡:
apache
、DNS
- 大数据:
hadoops
、hdfs
想拿更高的薪资
编程:Python
、go
、Java
、PHP
…
底层原理:内核
、手写操作系统
,tcp/ip
…
VMware软件的安装
-
复制该链接 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html ,到浏览器中打开(该版本是VMware Workstation 17 Pro)。
-
点击
DOWNLOAD NOW
进行本地下载。 -
下载完成后,在本地找到下载的文件并双击运行进行安装。
-
在弹出的窗口中“单机”——下一步
-
在弹出的窗口中勾选"我接受许可协议中的条款",“单机”——下一步
-
自定义安装更改安装位置(一般我们在安装类似软件的时候,不选择安装在系统盘C盘中,因而在此我们要修改安装位置),修改之后保持默认,之后点击"下一步"
-
用户体验设置与快捷方式默认"下一步"
-
点击安装(由于我是在虚拟机上进行的演示,故而会出现以下情况),如果读者在本机中进行安装,则不会出现此问题。
-
如果只是试用,点击完成即可免费使用30天。
-
如果想要永久使用就输入许可证密钥,https://www.bilibili.com/read/cv20885433 此链接中含有VMware Workstation 17 Pro的许可证密钥,随便选一个复制粘贴即可。接下来你就可以免费畅游在"虚拟机的世界中了"。
虚拟机安装CentOS7操作系统
-
点击VMware软件,在弹出的页面中点击"创建新的虚拟机"
-
系统弹出"新建虚拟机向导",默认使用"典型"类型的配置文件,单击"下一步"
-
在"安装客户机操作系统"中选择"稍后安装操作系统",单击"下一步"
-
在"选择客户机操作系统"中选择;客户机操作系统:
Linux
、版本:CentOS 7 64位
,单击"下一步" -
在"命名虚拟机"中,我们将虚拟机的名字进行设置,但最好见名知意。将其安装的位置进行修改。
-
在"指定磁盘容量里",最大磁盘大小保持默认20GB即可,选择"将虚拟磁盘存储位单个文件",单击"下一步"。
-
在"已准备好创建虚拟机"中选择自定义硬件,我们要将虚拟机中不是特别"刚需"的外设或者其他内容进行调整。在此中我们将其内存修改为本机内存的"一半"(主要是为了能够保证主机的内存使用,在虚拟机和主机进行内存资源争夺的时候可以尽量保证主机的内存使用,当然,你也可以按照自己对虚拟机的需求进行动态的调整内存),处理器目前设置为1核(保持默认即可),可以在日后的生产环境中进行动态的调整。新CD/DVD(IDE)中,单击"连接"中的"使用ISO映像文件",并通过浏览将自己下载的CentOS7镜像加载进来。网络适配器可以选择"桥接"或"NAT"模式,本文选择"NAT模式"来演示。将"USB控制器"、“声卡”、“打印机"进行移除。点击"关闭”–>“完成”。
- 接下来你就可以看到"库"中添加了一个CentOS7-164的虚拟机。
CentOS7操作系统的部署
- 双击刚刚新建的虚拟机,启动虚拟机。在弹出的页面中"选择Insall CentOS 7",进入系统安装界面。之后按"Enter"键进行系统安装。
- 在"Welcome come to CnetOS 7"中选择"中文"——>“简体中文”,并单击"继续"。
- 接下来我们进入到"安装信息摘要",在其中我们要对几个选项进行修改,编辑。在软件选择中选择"带GUI的服务器"以及"KDE"进行安装,完成之后点击"完成"。
- 在系统中找到"安装位置",我们默认使用自动分区即可(即默认)。
- 在系统中找到"网络和主机名",将以太网打开,单机"配置",对网络进行设置。点击"IPv4设置",将"方法"从"自动(DHCP)“修改为手动(静态IP地址),在地址中单击"Add”,进行IP地址的配置。如图所示,完成后单击"保存"。
- 可以在网络和主机名页面中适当的修改一下主机名,之后"单击"完成。
- 点击"开始安装"
- 在配置页面中设置root密码
- 在生产环境中必须要设置一个可靠程度高的密码。
- 等待系统安装完成(完成之后就会出现一下界面),之后就可进行"重启",进入CentOS7系统了(在其中我并未创建用户,读者可以根据自生要求去创建用户,方法很简单)。
设置可用实验环境
- 在初始设置中对许可证进行接受,并"单击"完成配置
- 接下来在页面中,不断点击"前进",在此阶段的最后一步同样需要创建一个用户,设置用户名和密码即可,最后会显示登录页面。登录之后就可以享用Linux操作系统了。
-
点击"未列出",在此处我们使用
root
账户进行登录,因为其有最高权限,方便我们学习Linux
的操作。(用户名即为root
,密码为你初始设置时的root密码
)![image.png](https://img-blog.csdnimg.cn/img_convert/586eb091395dd317fcc0019a2d6080b5.png#averageHue=#2c3d4b&clientId=ud54c43d4-74ae-4&from=paste&height=238&id=u16930499&name=image.png&originHeight=238&originWidth=475&originalType=binary&ratio=1&rotation=0&showTitle=false&size=66873&status=done&style=none&taskId=ufc63f36c-ab5c-4b58-bb9b-305784231ec&title=&width=475)
-
看到以下桌面环境,就说明你已经成功安装并可以使用
CentOS 7
操作系统了。
- 接下来我们打开终端看一下系统中的一些参数。打开终端方式如下图所示,当然还有一些其他的打开终端的方式,比如:"鼠标"右击——>"打开终端"等
- 在终端中输入以下命令查看系统的
IP
地址。
[root@BraHir164 ~]# ifconfig | grep inet
inet 192.168.237.164 netmask 255.255.255.0 broadcast 192.168.237.255
inet6 fe80::a4a5:7cfc:da65:6d6a prefixlen 64 scopeid 0x20<link>
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
- 为了检测系统中的网络是否可用,我们使用
ping
命令进行验证。
[root@BraHir164 ~]# ping www.baidu.com
PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=128 time=30.9 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=2 ttl=128 time=44.6 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=3 ttl=128 time=50.4 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=4 ttl=128 time=40.6 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=5 ttl=128 time=38.3 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=6 ttl=128 time=30.2 ms
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=7 ttl=128 time=40.7 ms
^C
--- www.a.shifen.com ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6011ms
rtt min/avg/max/mdev = 30.218/39.415/50.420/6.654 ms
- 拍摄快照,
目的:
为了方便以后可以随时的恢复到想要恢复的节点,如果我们在未来的操作中出现了问题,我们可以使用快照
进行恢复,不需要再去重装系统。快照的命名尽量见名知义即可。还有就是,最好在关机的状态下进行快照的拍摄,其有利于节省系统资源。
- 恢复快照只需要在快照管理中,选择想要
恢复到的节点
,即可恢复到想要的计算机状态。(快照管理器看上图)
创建可用实验快照
目标:
-
网络需要能够
ping
通 -
hostname见名知义
-
host,一对一的映射关系
-
关闭防火墙,seLinux
-
配置本地
yum源
-
网络需要能够
ping
通,不经ping
外网,也要ping
网关。
[root@BraHir164 ~]# ping -c1 -w1 www.baidu.com
PING www.a.shifen.com (14.119.104.254) 56(84) bytes of data.
64 bytes from 14.119.104.254 (14.119.104.254): icmp_seq=1 ttl=128 time=101 ms
--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 101.549/101.549/101.549/0.000 ms
[root@BraHir164 ~]# ping -c2 -w1 192.168.237.2
PING 192.168.237.2 (192.168.237.2) 56(84) bytes of data.
64 bytes from 192.168.237.2: icmp_seq=1 ttl=128 time=0.236 ms
--- 192.168.237.2 ping statistics ---
2 packets transmitted, 1 received, 50% packet loss, time 999ms
rtt min/avg/max/mdev = 0.236/0.236/0.236/0.000 ms
- 关闭
防火墙
和SeLinux
,并使用ping
命令来检验网络的可用性。在此处我们使用iptables -F
或者firewall -F
来清除防火墙的规则从而实现关闭防火墙。使用setenforce 0
来暂时关闭
selinux,如果想要永久关闭则需要修改其配置文件。
[root@BraHir164 ~]# setenforce 0
[root@BraHir164 ~]# iptables -F
[root@BraHir164 ~]# ping -c1 -w1 www.baidu.com
PING www.a.shifen.com (120.232.145.185) 56(84) bytes of data.
--- www.a.shifen.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
- 补充(永久关闭
SeLinux
):首先使用vi
或者其他编辑器进入selinux
的配置文件vi /etc/selinux/config
,修改SELINUX=enforcing
为SELINUX=disabled
,一般至此之后我们需要重启操作系统,以达到配置的目的。
[root@BraHir164 ~]# vi /etc/selinux/config
[root@BraHir164 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
- 补充如何展示关闭防火墙以及永久关闭防火墙
[root@BraHir164 ~]# systemctl stop firewalld.service #暂时关闭防火墙
[root@BraHir164 ~]# systemctl disable firewalld.service #永久关闭防护墙
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@BraHir164 ~]# systemctl enable firewalld.service #开启防火墙
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
[root@BraHir164 ~]#
- 补充(如何查看
SeLinux
的状态):查看当前的运行模式:getenforce
、查看概要状态信息:sestatus
、查看详情状态信息:sestatus -v
[root@BraHir164 ~]# getenforce
Permissive
[root@BraHir164 ~]# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
[root@BraHir164 ~]# sestatus -v
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
Process contexts:
Current context: unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Init context: system_u:system_r:init_t:s0
/usr/sbin/sshd system_u:system_r:sshd_t:s0-s0:c0.c1023
File contexts:
Controlling terminal: unconfined_u:object_r:user_devpts_t:s0
/etc/passwd system_u:object_r:passwd_file_t:s0
/etc/shadow system_u:object_r:shadow_t:s0
/bin/bash system_u:object_r:shell_exec_t:s0
/bin/login system_u:object_r:login_exec_t:s0
/bin/sh system_u:object_r:bin_t:s0 -> system_u:object_r:shell_exec_t:s0
/sbin/agetty system_u:object_r:getty_exec_t:s0
/sbin/init system_u:object_r:bin_t:s0 -> system_u:object_r:init_exec_t:s0
/usr/sbin/sshd system_u:object_r:sshd_exec_t:s0
[root@BraHir164 ~]#
- 设置一对一的映射关系。
1 、远程登录 Linux 主机过慢问题
有时客户端想远程登录一台 Linux 主机,但每次登录输入密码后都会等很长一段时间才会进入,这是因为 Linux 主机在返回信息时需要解析 IP,如果在 Linux 主机的 hosts 文件事先加入客户端的 IP 地址,这时再从客户端远程登录 Linux 就会变很快.
注:这里所说的远程登录不仅仅是 ssh,还可能是 mysql 远程登录,或是文件共享的查询等.
2 双机互连
当两台主机只是双机互连时,这时两台主机都需要设置自己的 IP,同时在对方的 hosts 文件里加入自己的 IP 和主机名
[root@BraHir164 ~]# cat >> /etc/hosts << eof
> 192.168.237.164 BraHir164
> eof
[root@BraHir164 ~]# cat -bns /etc/hosts
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
3 192.168.237.164 BraHir164
[root@BraHir164 ~]#
- 设置
hostname
,注意在修改完hostname后要执行bash
命令使之呈现出来。
[root@BraHir164 ~]# hostname huihui
[root@BraHir164 ~]# bash
[root@huihui ~]# hostnamectl set-hostname BraHit
[root@huihui ~]# bash
[root@brahit ~]#
[root@brahit ~]# hostnamectl set-hostname BraHit164
[root@brahit ~]# bash
[root@brahit164 ~]#
- 设置本地
yum源
,通过右击虚拟机,点击设置
,打开虚拟机设置。点击CD/DVD(IDE)
查看设备状态是否连接。
- 打卡终端配置本地
yum源
。
[root@brahit164 ~]# cd /etc/yum.repos.d/
[root@brahit164 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@brahit164 yum.repos.d]# vim redhat.repo
[root@brahit164 yum.repos.d]# cat !$
cat redhat.repo
[redhat]
name=this is redhat.repo test
enabled=1
baseurl=file:///mnt
gpgcheck=0
[root@brahit164 yum.repos.d]#
- 检测是否配置好
yum源
,使用yum repolist
命令进行查看,但可以看到redhat
源的状态为0——说明该源不可使用。故而我们要去其是否挂载了
。
[root@brahit164 yum.repos.d]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00
extras | 2.9 kB 00:00
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在尝试其它镜像。
updates/7/x86_64 | 2.9 kB 00:00
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base 10,072
extras/7/x86_64 CentOS-7 - Extras 515
redhat this is redhat.repo test 0
updates/7/x86_64 CentOS-7 - Updates 4,886
repolist: 15,473
[root@brahit164 yum.repos.d]#
- 首先我们使用
df -h
命令来查看挂载内容,可以看到其默认的挂载点。
[root@brahit164 yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 5.3G 12G 31% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 378M 20K 378M 1% /run/user/0
/dev/sr0 4.2G 4.2G 0 100% /run/media/root/CentOS 7 x86_64
- 接着我们使用
umount /dev/sr0
命令将默认的挂载点进行删除,然后继续使用命令df -h
检查是否杀死
默认挂载。
[root@brahit164 yum.repos.d]# umount /dev/sr0
[root@brahit164 yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 5.3G 12G 31% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 378M 20K 378M 1% /run/user/0
- 重新进行挂载,将其挂载到
/mnt
,其实/dev/sr0
与/dev/cdrom
差不多,前者是后者的软链接
。挂载后使用df -h
命令检查是否挂载成功。(如果使用检查命令发现有两个一样的挂载点需要将两个进行删除之后重新挂载)。
[root@brahit164 yum.repos.d]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@brahit164 yum.repos.d]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 4月 12 16:36 /dev/cdrom -> sr0
[root@brahit164 yum.repos.d]# ll /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 4月 12 16:36 /dev/sr0
[root@brahit164 yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 5.3G 12G 31% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
tmpfs 378M 20K 378M 1% /run/user/0
/dev/sr0 4.2G 4.2G 0 100% /mnt
[root@brahit164 yum.repos.d]#
- 接下来我们,再次使用
yum repolist
命令对其进行检查。可以看到redhat
源有3971
个包,从不同的地方下载的镜像其所含的软件包的数量有所差别,如果读者再该步发现自己数值与本文的有所差异实属正常。
- 我们可以切换到
/mnt/Packages
的目录下使用ls
命令进行查看包中的源,并使用ls |wc -l
命令查看包中的源的个数。
[root@brahit164 mnt]# cd Packages/
[root@brahit164 Packages]# ls |wc -l
3972
[root@brahit164 Packages]# ^C
- 永久关闭
yum.pid
——自动更新。
[root@brahit164 ~]# vim /etc/yum/pluginconf.d/langpacks.conf
[root@brahit164 ~]# head -2 !$
head -2 /etc/yum/pluginconf.d/langpacks.conf
[main]
enabled=0
[root@brahit164 ~]#
- 创建可实验快照,最好关机拍摄快照。