1.0 linux与centos有着什么样的关系
CentOS是基于Linux内核的开源操作系统,是Linux发行版之一。
CentOS的源代码主要来源于Red Hat Enterprise Linux(RHEL),并在其基础上进行了重新编译和打包。
Linux通常指的是Linux系统内核,而CentOS是基于Linux内核的完整操作系统发行版。
Linux内核本身只有终端命令界面,无图形界面;而CentOS作为完整的操作系统发行版,同时提供了终端命令界面和图形界面。
1.0.1 安装过哪些linux版本,描述⼀下安装过程,尽可能详细,不能模糊描述
Ubuntu、CentOS、Debian
CentOS安装过程:
- 下载CentOS ISO镜像
- 准备安装媒介(vmware)
- 选择安装语言
- 配置安装选项
- 网络和主机名
- 开始安装
- 设置root密码
- 创建用户(可选)
- 重启计算机
1.1 软连接和硬链接的区别
- 链接方式
- 软连接:通过路径名进行链接,类似于指向目标的指针。
- 硬链接:通过inode号进行链接,直接指向文件的物理数据。
- 跨文件系统
- 软连接:可以跨文件系统创建,即可以链接到不同文件系统中的文件或目录。
- 硬链接:不能跨文件系统创建,因为每个文件系统都有自己独立的inode空间。
- 链接对象
- 软连接:可以对不存在的文件或目录创建软链接,也可以在文件或目录被删除后保留链接(但此时成为死链接)。
- 硬链接:只能对已存在的文件进行创建,不能对目录创建硬链接。
- 删除影响
- 软连接:删除软链接本身不影响被指向的文件或目录。但如果被指向的文件或目录被删除,软链接将变为死链接。
- 硬链接:删除其中一个硬链接不会影响其他具有相同inode号的文件。只有当所有硬链接都被删除,且没有进程正在使用该文件时,文件才会被真正删除。
- 空间占用
- 软连接:作为一个文件存在,占用少量的磁盘空间(主要是路径名的存储空间)。
- 硬链接:不占用额外的磁盘空间,因为它们都指向同一个物理数据块。
- 用途
- 软连接:常用于创建桌面或文件夹中的快捷方式,方便用户快速访问目标文件或目录;也可用于跨文件系统引用文件或目录。
- 硬链接:用于在文件系统中提供文件的多个访问入口,便于共享和备份文件;也可用于节省存储空间(因为不占用额外空间)。
1.2 Linux的目录结构
[root@localhost ~]# tree -L 1 /
/
├── bin -> usr/bin (软链接)(二进制文件,用于系统管理和维护)
├── boot (Linux系统启动文件)
├── dev (内核中设备驱动程序的接口)
├── etc (系统配置文件)
├── home (存储个人文件)
├── lib -> usr/lib (存储32位共享库文件,运行程序所需)
├── lib64 -> usr/lib64 (存储64位共享库文件,运行程序所需)
├── media (挂载)
├── mnt (挂载)
├── opt (挂载)
├── proc (虚拟文件系统,提供了内核和进程信息的接口)
├── root (超级用户的主目录)
├── run (存储系统自上次启动以来创建的信息,这些信息在重新启动后会被删除)
├── sbin -> usr/sbin (软链接)(二进制文件,用于系统管理和维护)
├── srv (挂载)
├── sys (虚拟文件系统,允许用户程序与内核进行交互)
├── tmp (存储临时文件,重启后,文件通常会被删除)
├── usr (包含了大多数用户级程序、库文件、文档和源代码)
└── var (存储经常变化的文件,如日志文件、数据库)
官方文档:
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
1.3 Linux系统的启动流程
- BIOS自检阶段
- MBR引导阶段
- 加载内核阶段
- init进程初始化阶段
- 启动系统服务
- 建立终端
- 用户登录
- 系统运行
1.4 删除修改时间超过60分钟的.log格式的文件(find grep awk的用法)
查看:
find . -type f -name "*.log" -mmin +60
查看加删除:
find . -type f -name "*.log" -mmin +60 -exec rm {} \;
1.4.1 shell⼿撕 查找data⽬录下后缀名为.log的⽂件,然后删除
查看:
find /path/to/data -type f -name "*.log"
查看加删除:
find /path/to/data -type f -name "*.log" -exec rm {} \;
1.5 看操作系统发行版本,内核版本等
发行版本:
cat /etc/os-release
内核版本:
uname -a
1.6计算机操作系统中buffer和 cache什么区别?
1、缓冲区(buffer) 将数据写入到内存里,这个数据的内存空间被称为缓冲区(buffer)
先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
2、缓存区(cache) 从内存里读取数据,这个存数据的内存空间称为缓存区(cache)
最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
人话:缓存(cache)是用来加速数据从硬盘中”读取”的,而缓冲(buffer)是用来加速数据”写入”硬盘的。
1.7 设置用户下次登录必须修改密码(考察:用户管理等)
第一步
使用chage
命令来设置密码的宽限期为0天,确保用户不会忽略密码更改的提示:
sudo chage -W 0 用户名
第二步
passwd
命令的-e
选项,将用户的密码设置为已过期
sudo passwd -e 用户名
1.8 sudo和su的区别
sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。
sudo提权,su切户切换
1.8.1 如何使用户拥有sudo权限
步骤一:切换到root用户下:
su root
步骤二:vim /etc/sudoers
root ALL=(ALL) ALL, 在这行下面添加 xxx ALL=(ALL) ALL (xxx是用户),注意保持格式一致(我记得后面还有一个ALL)
步骤三:强制保存退出
:wq!
1.9 配置dir目录下新建文件自动赋予test1用户的可读可写权限
setfacl -d -m u:test1:rwX /dir/
1.10 文件的特殊权限
SUID(Set User ID)
允许普通用户在执行设置了SUID权限的命令时,临时获得该命令文件所有者的权限。这种权限仅限于可执行文件(通常是二进制文件),如系统命令。
chmod 4711 文件名
SGID(Set Group ID)
允许执行者临时获得该文件所属组的权限。
chmod 2775 目录名
SBIT(Sticky Bit)
保护目录中的文件不被其他用户删除(除了文件的所有者和目录的所有者以及root用户)。
chmod 1777 目录名
1.11 :孤儿进程,僵尸进程(及解决方法),守护进程讲解
孤儿进程:
父进程如果不等待子进程退出,在子进程之前就结束了自己的“生命”此时的子进程叫做孤儿进程。====爹没了。 Linux避免系统存在过多的孤儿进程,init进程收留孤儿进程,变成孤儿进程的父进程。====init养父
僵尸进程:
创建子进程后,子进程退出状态不被收集,变成僵尸进程。爹不要它了 除非爹死后变孤儿,init养父接收。如果父进程是死循环,那么该僵尸进程就变成游魂野鬼消耗空间。
守护进程:
守护进程(Daemon)是在一类脱离终端在后台执行的程序, 通常以 d 结尾, 随系统启动, 其父进程 (ppid) 通常是init 进程。====后台小天使
1.11.1僵尸进程和孤儿进程如何产生如何处理
僵尸进程(父在子死)
改写父进程,为子进程收尸。具体做法是接收SIGCHLD信号,子进程死后会发送SIGCHLD信号给父进程,父进程收到此信号后,执行waitpid()函数为其(子进程)进行收尸。 就算父进程没有调用wait,内核也会向它发送SIGCHLD消息,默认处理为忽略,我们可以设置一个函数来对其进行处理。 如果把这个子进程(僵尸进程)的父进程杀掉,僵尸进程会变为孤儿进程,由init进程进行管理,init负责进行清理僵尸进程。
孤儿进程(父死子在)
孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。
1.12 进程信号的作用和原理
作用:
- 简单通信
- 控制进程状态
- 处理异常
- 资源管理
原理:
- 信号产生
- 信号传递
- 信号处理
- 信号屏蔽
- 信号优先级
- 信号安全
1.13 Linux中,ctrl+c的原理
发送一个中断信号(SIGINT)给当前正在运行的程序,告诉它需要终止
1.14 kill USR1和USR2信号的区别
kill USR1:
告知应用程序重载配置文件
kill USR2:
通知进程进行更新版本的软件或者进行系统的维护操作
1.15 cd /data 需要有什么权限才能cd进去,并对 /data下的⽂件和⽬录按照时间反向排序
- 读取(r):允许用户读取目录中的文件名和子目录名。
- 写入(w):允许用户在目录中创建、删除和重命名文件或子目录。
- 执行(x):允许用户进入该目录(即,使用
cd
命令切换到该目录)。
需要x权限
按照时间升序
ls -lrt
详细解释:
-l use a long listing format 以长列表方式显示(详细信息方式)
-t sort by modification time 按修改时间排序(最新的在最前面)
-r reverse order while sorting (反序)
2,按照时间降序(最新修改的排在前面)
ls -lt
1.16 LVM中几个组件的关系(LV,PV,PE,VG)
组件 | 定义 | 作用 | 与其他组件的关系 |
---|---|---|---|
PV | 物理卷 | 提供物理存储空间 | VG的组成部分,可动态加入或移出VG |
VG | 卷组 | 将多个PV组合成一个可管理的单元 | 包含PV,并为LV提供存储空间 |
PE | 物理区域 | PV中可用于分配的最小存储单元 | VG中物理存储空间的划分单位,决定LV的最大容量 |
LV | 逻辑卷 | 从VG中分配的逻辑存储空间 | 建立在VG之上,可动态扩展和缩小空间 |
1.17 selinux,iptables,firewalld的关系和区别
SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。 其实iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已 或者说它们只是一种服务。 iptables服务会把配置好的防火墙策略交由内核层面的netfilter
网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables
包过滤框架来处理。
1.18 iptables中的五链四表
五链
- PREROUTING(路由判断之前所要进行的规则)
- INPUT(入站)
- OUTPUT(出站)
- FORWARD(转发)
- POSTROUTING(路由判断之后所要进行的规则)
四表:
- raw表(跟踪)
- mangle表(标记)
- nat表(IP地址或端口)
- filter表(放行)
1.19 firewalld如何开放端口
检查防火墙状态
systemctl status firewalld
开放单个端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
删除已开放的端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
1.20 cron计划任务的表达式(分时日月星期)
cat /etc/crontab
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行]
1.21 bash中管道和重定向的作用
管道:
每个命令的输出都会自动成为下一个命令的输入
重定向
追加
1.22 日志切割,轮转相关知识点
日志轮转
将当前正在使用的日志文件归档,并开始使用新的日志文件来记录新的日志信息。这个过程可以基于时间、文件大小或特定事件来触发。
logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
日志切割
将一个大的日志文件分割成多个小的日志文件,以便于管理和分析。
Logrotate不仅支持日志轮转,还支持基于文件大小的切割。
1.23 各类文件系统的区别
- ext2: 是Linux最早的文件系统之一,它没有日志功能,数据安全性不如其他文件系统,但是性能较高。
- ext3: 是在ext2文件系统的基础上进行改进的,增加了日志功能,使其更加可靠,但是性能略有下降。
- ext4: 是在ext3的基础上进行改进的,具有更好的性能和更高的可靠性,能够支持更大的文件和分区,支持更快的文件系统检查和恢复。
- XFS: 是一种高性能、可扩展的日志文件系统,支持很多特性,如在线备份、文件系统重构等。
- Btrfs: 是一种新型的文件系统,支持快照、在线修复、数据压缩等特性,适合大容量存储和数据备份等应用场景。
1.24 top命令的各个字段的意思
[guixiang@localhost ~]$ top
top - 11:09:36(命令启动的时间) up 48 min(运行了48分钟), 2 users(当前有2个用户登录系统), load average: 0.00, 0.01, 0.05(系统的负载平均值,分别表示过去1分钟、5分钟、15分钟的平均负载。这些值很低,表示系统当前非常空闲。)
Tasks: 120 total(系统中共有120个进程), 1 running(当前有1个进程正在运行), 119 sleeping(有119个进程处于睡眠状态,等待某些事件发生), 0 stopped(没有进程被停止。), 0 zombie(没有僵尸进程。僵尸进程是那些已经结束但父进程尚未通过 wait() 或类似调用回收其资源的进程)
%Cpu(s): 0.0 us(用户空间占用CPU的百分比), 0.2 sy(内核空间占用CPU的百分比), 0.0 ni(改变过优先级的进程占用CPU的百分比), 99.8 id(空闲CPU百分比,非常高,表示CPU大部分时间都在空闲), 0.0 wa(等待输入输出的CPU时间百分比,这里为0,表示没有进程在等待I/O), 0.0 hi(硬件中断占用CPU的百分比), 0.0 si(软件中断占用CPU的百分比), 0.0 st(被虚拟机偷走的时间百分比(在虚拟化环境中才有意义))
KiB Mem : 13427724 total(物理内存总量,单位为KiB(千字节)), 12962956 free, 226216 used, 238552 buff/cache(用作缓冲和缓存的内存量)
KiB Swap: 2097148 total(交换空间总量), 2097148 free, 0 used. 12896220 avail Mem(估计的可用内存量,考虑了缓存和缓冲区,是系统实际可用的内存量)
1.25 cpu使用率会超过100%嘛,为什么
多核CPU的并行处理
在多核CPU系统中,每个核心都可以独立处理任务。CPU使用率通常以百分比表示,但在多核环境下,这个百分比是相对于单个核心而言的。(如果一个应用使用了两个CPU核心,并且每个核心的使用率都是100%,那么系统的总CPU使用率就会显示为200%。)
一个物理CPU核心模拟成两个逻辑CPU,从而提高系统的并行处理能力。即使物理CPU核心的使用率没有达到100%,系统的总CPU使用率也可能超过100%。
虚拟化和容器化技术
一个物理CPU可能会被多个虚拟机或容器共享。在这种情况下,每个虚拟机或容器都会报告自己的CPU使用率,而这些使用率加起来可能会超过物理CPU的实际使用率。然而,这并不意味着物理CPU的使用率真的超过了100%,而是由于虚拟化或容器化技术的资源隔离和分配机制造成的。
亲身经历:
1.26 CPU利⽤率我们经常关注,然后另外是⼀个系统的负载,负载我们也经常关注,然后这俩是直接相关吗?
不直接相关:
CPU利用率
是计算机中央处理单元(CPU)的工作负载与其可用处理能力之间的比例,通常以百分比表示。它反映了CPU在一段时间内被占用的情况。
系统负载(特别是平均负载)
是指在一段时间内系统处于可运行状态和不可中断状态的平均进程数。它更侧重于描述系统整体的活跃进程数量,而不是直接反映CPU的使用情况。
平均负载包括了正在使用CPU的进程、等待CPU的进程以及等待I/O(输入/输出)的进程。因此,即使CPU利用率很高,如果系统中有很多进程在等待I/O操作,平均负载也可能很高。反之亦然,即使CPU利用率不高,但如果系统中有很多活跃的进程(无论是使用CPU还是等待I/O),平均负载也可能很高。
纠正
当提到“系统负载”时,它通常指的是系统的整体负载状况,包括CPU使用率、内存使用率、磁盘I/O性能、网络流量等多个方面的综合表现。然而,在日常讨论中,人们更倾向于使用“平均负载”这个更具体的指标来描述系统的繁忙程度。
因此,虽然“系统负载”和“平均负载”在概念上有所区别,但在实际使用中,人们常常用“平均负载”来指代系统当前的负载状况。如果你听到“系统负载”,很可能是在讨论平均负载或者系统的整体负载状况。
总结来说,平均负载是系统负载的一个具体指标
1.27 cpu的软中断和硬中断
打个比方,你在家里打电话,如果这时候有人敲门,你中断了打电话的行为就叫做软中断,而如果是因为电话线出了问题导致你的电话中断了,这就叫做硬中断。
软中断
也叫同步中断。软中断是由CPU执行中断产生指令时产生,是由程序预先实现好的,不是随机的。
此外,为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断来完成。
硬中断
也叫异步中断。是由硬件设备依照CPU时钟信号产生的,即意味着中断发生具有随机性和突发性,能够在指令正在执行时发生。例如键盘中断。硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等,主要是用来通知操作系统系统外设状态的变化。
中断请求分为两个阶段:
第一阶段(上半部请求):接受硬件中断请求(从硬件中取完数据后发送一次软断请求,复杂逻辑交给下半部分请求),称为硬中断,特点是处理速度快
第二阶段(下半部请求): 内核线程接受到上半部分软中断请求,就会异步的继续执行上半部未完成的请求, 称为软中断,特点延迟执行
举个网络接受数据例子: 当网卡接收到数据时,首先会发送一个硬中断请求,这个时候CPU就会执行中断处理程序,快速将网卡中数据读取到内存中,完成后会发送一个软中断请求,下半部被软中断信号唤醒后就会按照网络协议栈将内存数据进行解析处理,最终递给应用程序。(处理期间还是可以响应其他硬中断请求的)
1.28 进程运行级别,优先级如何计算
PRI即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序, 值越小进程的优先级别越高 PRI(new)=PRI(old)+nice
1.29 查看linux路由表
netstat -rn
route -n | grep <目标网络>
1.30 shell和其他语言有什么区别
Shell是一种脚本语言,主要用于管理操作系统和执行系统命令
shell直接与系统交互,执行系统命令和工具,因此其执行效率通常较高。但是,Shell脚本在处理复杂逻辑和大量数据时可能不如其他编程语言高效。
shell适用于系统管理和自动化任务;而其他编程语言则具有更广泛的用途和更强大的编程能力,适用于各种复杂的编程任务和应用场景
1.31 如何查看系统负载,怎么判断负载很高,负载很高怎么办
1.top命令查看该机器的负载状况
2.cd /proc/pid 查看对应高占用程序的位置
3.进入对应程序中查看日志,根据CPU和内存这两个因素分析
增加资源来应对高负载。例如,增加CPU核心数、升级内存等。
考虑使用负载均衡技术来分散负载,提高系统的整体性能。
1.32 什么是内核态什么是用户态
内核态:
CPU 可以访问任意的数据,包括外围设备,比如网卡、硬盘等,处于内核态的 CPU 可以从一个程序切换到另外一个程序,并且占用 CPU 不会发生抢占情况,一般处于特权级 0 的状态
用户态:
CPU 只能访问受限资源,不能直接访问内存等硬件设备,不能直接访问内存等硬件设备,必须通过「系统调用」陷入到内核中,才能访问这些特权资源。
1.33 如何查看Linux系统的网关
ip route show default
1.34 什么是默认⽹关
默认网关是子网中的设备(主要是路由器),用于将本地子网中无法直接到达的数据包转发到其他网络,以寻找目标主机。当一台计算机需要发送信息给不在本地子网中的目标主机时,它会将数据包发送给默认网关,由网关负责将数据包转发到正确的目标网络。
1.35 计算IP可⽤地址数量
IP 192.168.1.1 子网 255.255.255.0
把IP和子网掩码全换成二进制,对比一下,
IP: 1100 0000 1010 1000 0000 0001 0000 0001,
子网: 1111 1111 1111 1111 1111 1111 0000 0000。 #可以推出网络地址
网络地址: 1100 0000 1010 1000 0000 0001 0000 0000,即得到十进制数字为192.168.1.0
有八位遇到0的,就是又2的八次方个地址,即256个地址,除去一个网络地址,一个广播地址,就剩254个可用地址。
1.36 ⽹络地址和⼴播地址和主机地址、
网络地址: 网络地址是指仅包含网络号而不包含主机号的IP地址。它用于唯一标识一个网络。在网络通信中,网络地址用于路由和寻址。例如,一个IP地址为192.168.0.0
,IP掩码为255.255.255.0
,那么它的网络地址就是192.168.0.0
。
广播地址: 广播地址是指在特定网络上发送广播消息的地址。它用于向网络上的所有设备发送信息。广播地址通常是某个网络的最大可能地址,将主机号部分全部设置为1。例如,在 IP 地址为192.168.0.0
,IP掩码为255.255.255.0
的情况下,广播地址就是192.168.0.255
。
主机地址: 主机地址是指除网络地址和广播地址之外的IP地址部分。它用于标识一个特定的主机或设备。主机地址可以是网络中的任意一个有效地址。例如,在 IP 地址为192.168.0.0
,IP掩码为255.255.255.0
的情况下,可以有从192.168.0.1
到192.168.0.254
的主机地址。
1.35 linux中磁盘的理解
在Linux系统中所有的设备都会以文件的形式存储。设备一般保存在/dev目录下面,以sda、sda1、sda2 …,sdb、sdb1…,hda,hdb。现在的设备一般都是sd命名,以前的很老的硬盘是以ha命名。 sda:第一块硬盘,如果对磁盘进行了分区会有sda1(第一个分区),sda2等。 sdb:第二个硬盘,同样对硬盘分区后有sdb1,sdb2等。
1.36 有一块新磁盘,如何挂载到linux上
创建分区
fdisk /dev/sdb
创建文件系统
mkfs.ext4 /dev/sdb
挂载
mkdir /data
mount /dev/sdb /data
1.37 raid 介绍
独立磁盘冗余阵列,用于提高数据存储性能和可靠性。RAID通过将多个独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单个硬盘更高的存储性能和提供数据备份技术
1.38 RAID 0,1,5,10的区别和各自的优缺点
运维生产环境常用RAID级别为RAID0,RAID1, RAID5 ,RAID10
RAID级别 | 最少磁盘要求 | 关键优点 | 关键缺点 | 实际应用场景 |
---|---|---|---|---|
RAID0 | 1块 | 读写速度快 | 没有任何冗余 | MySQL Slave(数据库的从库),集群的节点RS |
RAID1 | 2块(只能) | 100%冗余,镜像 | 读写性能一般,成本高 | 单独的,数据很重要,且不能宕机的业务,监控,系统盘 |
RAID5 | 3块 | 具有一定性能和冗余,可以坏一块盘 | 写入性能不高 | 一般的业务都可以用 |
RAID10 | 4块 | 读写速度很快,100%冗余 | 成本高 | 性能和冗余要求很好的业务。数据库主库和存储的主节点。 |
1.39 服务器它的这个IO 磁盘IO⽐较⾼,那我这个排查思路是什么样的呢?
(IO 磁盘IO 即:磁盘输入输出)
磁盘通常是计算机最慢的子系统,也是最容易出现性能瓶颈的地方,因为磁盘离CPU 距离最远而且CPU 访问磁盘要涉及到机械操作,比如转轴、寻轨等。
占用IO过高,可以做如下考虑:
- 首先考虑写日志内容过多(或者访问量较大)
- 日志打印内容是否合理
- 日志级别是否合理
- 磁盘满(压测过程中现象:TPS降低,响应时间增加)
- 定期清理
- 磁盘扩容
- 不好清理的,在主硬盘上进行读写操作,基础数据定时移动到挂载硬盘上。
- 磁盘IO过高是由于读写文件导致的: 可以利用raid来减轻压力
- 磁盘本身性能不足
- 数据库
- 数据库连接数过量
- 程序里每次连接数据库后,记得关闭数据库。
- 在mysql配置文件中,设置mysql超时时间wait_timout, 默认是八小时,设置低一点
- 数据库IO过高,查询量大,可以进行读写分离(增加读库)或者分库操作,减小磁盘压力