day021-Linux基础-磁盘案例

5次阅读
没有评论

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.创建软链接在第一块磁盘创建一个快捷方式

day021-Linux基础-磁盘案例

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
正文完
 0
评论(没有评论)