2026年4月3日07:35:24
知识点回顾
磁盘管理
1.认识磁盘
类型:机械 固态 NVMV接口
外观:2.5 3.5
接口:SICI PCI-E SATA SAS
SATA特点:速度慢,存储大,个人用备份用
SAS特点:速度快,存储小,企业用的多
转速:5000-7000转
2.RAID
为什么组RAID
获得更大容量,两块600G逻辑组在一起
获得更好的性能
获得更好的安全性
RAID的级别以及区别
RAID级别 最少盘数 安全冗余 性能 容量 使用场景
RAID 0 1块以上 不安全 最快 所有盘总和 对性能要求高,对安全没要求(集群)
RAID 1 只能是2块 安全 慢 总和的一半 速度没要求,要求稳定的项目
RAID 5 最少3块 相对安全 中等 n-1块 相对稳定的业务场景
RAID 10 最少4块 安全 快 总和的一半 高并发场景
3.磁盘分区fdisk
插入磁盘:
重启:
reboot
分区:
fdisk 磁盘 进入分区模式
n 创建分区
p 查看分区表
w 保存
q 退出
格式化:
mkfs.xfs 分区
挂载使用:
mount 分区 挂载点
加入自动化挂载:/etc/fstab
vim
dev/sdb/ /mnt
第一列:UUID
第二列:挂载点
第三列:文件系统类型
第四列:挂载参数默认
第五列:是否备份
第六列:是否开机自检
4.磁盘分区parted
fdisk和parted区别
fdisk:MBR分区表,最多4个主分区或最多3个主分区加一个扩展分区,扩展分区可以在划分多个逻辑分区,只能分≤2T的分区
parted:GPT分区表,最多128个主分区,≥2T的磁盘用这个工具分区
插入3T磁盘:
重启:
分区:
交互式分区:
parted 磁盘 回车进行交互式分区
非交互式分区:
按交换式分区流程提前把命令写好回车即可
格式化:
挂载使用:
写入自动挂载
5.企业中磁盘分区流程
现在企业一般不分区
插入新磁盘
关机重启或热插拔
格式化磁盘
挂载使用
写入自动挂载
01.磁盘相关案例
1.oom内存溢出
1.系统出现oom问题 内存溢出(out of memory)
Linux系统内存不够用时会出现oom报错、为了保证系统正常运行,会将占用内存最高的进程自动杀死。
解决内存不够用的问题?
出现oom内存溢出哪些原因?
1.用户量大(增加内存)
2.开发代码问题(找开发解决)
3.攻击导致(安全方面解决)你安全是怎么做的?
4.自己执行了一些危险的命令(dd ab压测 扫描..)
5.内部测试服务器
6.自己的虚拟机、服务器
------------
1.涉及用户-->增加内存
2.内部用户-->可以临时用swap解决
swap:硬盘的分区、来充当内存来使用,目的为了解决内存满了,防止oom来临时充当内存。速度慢
swap分区两种分配方式
第一种:安装系统进行分区
系统分区:硬盘 50G
/boot #引导程序 内核
swap #2048 2G
/ #根分区
第二种:进入到系统使用命令创建swap
----永久禁止/tmp挂载内存
[root@oldboy ~]# umount /tmp
#开机禁止挂载tmp
[root@oldboy ~]# systemctl mask tmp.mount
第一步:生成一个2G的空间
[root@oldboy ~]# dd if=/dev/zero of=/tmp/2g.txt bs=2M count=1000
1000+0 records in
1000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 3.60698 s, 581 MB/s
[root@oldboy ~]# ll -h /tmp/
total 2.0G
-rw-r--r-- 1 root root 2.0G Apr 3 14:30 2g.txt
第二步:格式化内存空间
[root@oldboy ~]# mkswap /tmp/2g.txt
mkswap: /tmp/2g.txt: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)
no label, UUID=2517bd0d-2d68-4d87-9120-3a1dfa055174
第三步:挂载使用
[root@oldboy ~]# free -h
total used free shared buff/cache available
Mem: 1.9Gi 523Mi 78Mi 1.0Mi 1.3Gi 1.3Gi
Swap: 2.0Gi 7.0Mi 2.0Gi
------------
[root@oldboy ~]# swapon /tmp/2g.txt
swapon: /tmp/2g.txt: insecure permissions 0644, 0600 suggested.
-------
[root@oldboy ~]# free -h
total used free shared buff/cache available
Mem: 1.9Gi 500Mi 99Mi 1.0Mi 1.3Gi 1.3Gi
Swap: 4.0Gi 7.0Mi 3.9Gi
第四步:开机自动挂载
[root@oldboy ~]# tail -1 /etc/fstab
/tmp/2g.txt none swap defaults 0 0
#查看swap的组合分区情况
[root@oldboy ~]# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 2097148 7436 -2
/tmp/2g.txt file 2047996 0 -3
#卸载swap 文件分区
[root@oldboy ~]# swapoff /tmp/2g.txt
[root@oldboy ~]# free -h
total used free shared buff/cache available
Mem: 1.9Gi 501Mi 93Mi 2.0Mi 1.3Gi 1.3Gi
Swap: 2.0Gi 7.0Mi 2.0Gi
#swap大小(面试题)
内存的1-1.5倍 如果内存大于8G,最多就给8G的swap
2.磁盘无法正常写入
1.inode
2.block
3.挂载问题、挂载参数
inode号满怎么排查问题?小文件多导致inode号多
df -i 当前的inode剩余
业务相关导致某个目录下有大量的小文件!目录本身越大下面的小文件就越多。因为目录的block中存在的是下级文件的文件名称
oldboy/ #oldboy目录本身的大小目录下的1.txt字符串的长度
1.txt #10G
[root@oldboy ~]# find / -type d -size +1M
/root/oldboy
block问题:
[root@oldboy ~]# find / -size +500M
3.解决磁盘不够问题
企业场景:
1T已经用了900多G马上用完,解决这个问题
web持续的将日志写入到/var/log/web.log---->700G,位置不能动.
1.插入新磁盘 格式化挂载
2.移动日志到新磁盘
3.创建软链接在第一块磁盘创建一个快捷方式

4.进程调用
删除一个大文件、但是磁盘空间没有释放?
因为文件被程序调用着,所以删除了文件但是没有真正的释放。
需要找到这个程序杀死他
#模拟进程占用
第一步:生成2G的文件
[root@oldboy ~]# dd if=/dev/zero of=/tmp/2g.txt bs=2M count=1000
第二步:模拟进程占用
[root@oldboy ~]# tail -f /tmp/2g.txt
第三步:删除/tmp/2g.txt 查看磁盘空间
[root@oldboy ~]# rm -rf /tmp/2g.txt
[root@oldboy ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/sda3 48G 18G 31G 38% /
/dev/sda1 195M 139M 56M 72% /boot
tmpfs 196M 0 196M 0% /run/user/2004
第四步:找出文件被哪个进程所调用然后杀死他
[root@oldboy ~]# lsof |grep 2g.txt
tail 1831 root 3r REG 8,3 2097152000 69093157 /tmp/2g.txt (deleted)
第五步:杀死
[root@oldboy ~]# kill -9 1831
[root@oldboy ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 8.9M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/sda3 48G 16G 33G 33% /
/dev/sda1 195M 139M 56M 72% /boot
tmpfs 196M 0 196M 0% /run/user/2004
面试题:如何查看文件被哪些进程所调用
lsof
02.配置邮箱
#1.安装服务
[root@oldboy ~]# yum -y install mailx sendmail
#2.准备163邮箱 生成授权码
登录163邮箱点设置->POP3-SMTP选项-->开启
#3.配置邮箱
[root@oldboy ~]# vim /etc/mail.rc
set from=alnwei0532@163.com
set smtp=smtp.163.com
set smtp-auth-user=alnwei0532@163.com
set smtp-auth-password=xxxxxx #授权码
set smtp-auth=login
#4.发送邮件测试
方式一:echo 邮件内容|mail -s "标题" 邮箱地址
[root@oldboy ~]# echo hehe|mail -s "测试 " alnwei0532@163.com
方式二:mail -s "标题" 邮箱地址 </etc/hosts
[root@oldboy ~]# mail -s "测试" 1632183467@qq.com </etc/hosts
----------------------------------------
#shell脚本示例
[root@oldboy ~]# vim if.sh
if [ `df -h|awk -F "[% ]+" '/\/$/{print $(NF-1)}'` -gt 90 ];then
echo "发送邮件..."
else
echo "磁盘使用率正常.."
fi
[root@oldboy ~]# sh if.sh
磁盘使用率正常..
或者使用
[root@oldboy ~]# vim if.sh
num=`df -h|awk -F "[% ]+" '/\/$/{print $(NF-1)}'`
if [ $num -gt 10 ];then
echo "当前磁盘使用率:$num%"|mail -s "磁盘使用率异常" 1632183467@qq.com
else
echo "磁盘使用率正常.."
fi
[root@oldboy ~]# sh if.sh
----------
好玩的网站
[root@oldboy ~]# echo `curl -s https://api.1314.cool/words/api.php`|mail -s "爱你" 1632183467@qq.com
正文完