1.每日复盘与今日内容
1.1复盘
- 面试题:raid(物理服务器)
- 磁盘使用流程:分区,格式化,挂载(永久挂载)
- mbr vs gpt区别
- fdisk,mkfs,mount/umount -lf(强制卸载)
- df -hT
- blkid
1.2今日内容
- 磁盘分区方案
- swap关闭,开启增加
- 故障案例空间不足系列
- 救援模式
2.磁盘案例
2.1 磁盘分区
linux磁盘分区类似于windows c: d: e: f:
一切从根开始
常见方案 | 说明 | 大小 |
/boot/ | 引导分区,引导系统启动,存放linux内核文件 | 1g/2g |
/根分区 | 存放软件包,安装服务 相当于是c盘 | 20g起步,一般推荐20g—xxxxG |
swap | 分区,特殊文件系统,没有挂载点.特殊环境中数据库,存储,k8s环境,推荐关闭swap,特殊需求(比如java)配置swap | 建议最多8G |
/data | 独立数据分区,名字与路径未来自己定义,看需求,有重要数据 | 剩余所有空间 |
2.2 物理服务器使用全流程
物理服务器使用全流程 | 说明 | 补充 |
1️⃣拆开包装,上电,进行配置 | 机架式服务器 | |
2️⃣配置远程控制卡 | 物理设备(卡),无法远程连接,备用方案,不用跑机房现场操作. | |
3️⃣配置raid | 8块硬盘 2个raid 1 6个raid 5 | |
4️⃣安装系统 | 自定义分区 raid 1 /boot/swap raid 5 /data/ | |
5️⃣连接,基础优化配置 | 命令行,软件包,ssh...... | |
6️⃣可选(配置,部署服务) | 根据需求部署服务,配置 | |
7️⃣服务器上架 | 机柜服务器,机柜在机房中心(公司内部测试),IDC数据中心机房 |
2.3 swap
1️⃣创建/增加swap
2️⃣关闭swap
1.增加swap 1g
当前是否有swap都不影响你添加swap
#1.准备swap文件
mkdir -p /data
dd if=/dev/zero of=/data/1g bs=1M count=1024
#2.格式化创建swap
mkswap /data/1g
chomod 600 data/1g #可改可不改
#3.激活swap
free -h #查看开启swap前的情况
swapon /data/1g
free -h #查看开启swap后的情况
2.关闭swap
#1.临时关闭
swapoff -a
#2.永久关闭
vim /etc/fstab
#注释掉这行即可
/dev/mapper/klas-swap none swap defaults 0 0
- ⚠️ubt/debian系统 上面2个步骤之外还要执行下面的 命令才行.
systemctl mask swap.target
2.4 故障案例:root密码忘记重新设置
- 这个故障不仅仅为root密码
- 也适用于linux无法启动.误修改/etc/配置导致无法启动....
- 需要重启linux.
- Linux系统自带救援系统,系统不严重使用这个即可,比较严重需要使用光盘
1.红帽类--救援模式
1️⃣重启linux系统,迅速按上下键,进入grub菜单,输入e,进入编辑模式
(麒麟:输入root,密码Kylin123123)
2️⃣找到linux这行,将ro改为rw,这行结尾加上init=/bin/bash
3️⃣按ctrl+x启动系统
4️⃣进入到救援模式进行对应操作
#对于本故障需要重置密码
vim /etc/passwd
#将root的权限x删除
#VM 界面重启
2.突发状况
1️⃣故障解决
- 此时重启发现很慢且直接进入救援模式,故开始进入日志查看情况
- 发现/dev/sdb1磁盘问题
故进入/etc/fstab将昨天新创建的sdb1挂载先注释掉
重启发现可以
2️⃣故障分析
应该是昨天创建磁盘是未能正确创建磁盘以及格式化导致。
3️⃣故障后期
后面将/dev/sdb1重新创建并格式化后,挂载到/app/data并重启,发现没有问题。
2.红帽类--光盘/U盘救援模式
- 针对linux无法启动了,grub菜单都无法进入
- 抢救数据
1️⃣重启linux,以光盘启动 U盘(在VM设置更改启动),提示品牌logo页面 esc(F12/F10具体看提示)
2️⃣选择U盘/光盘启动.进入到安装页面
3️⃣选择 troubleshooting 然后选择resuce
4️⃣进入系统,然后挂载本地硬盘的根到当前环境中,进行后续操作
- 找到本地根在这里
- 将本地根挂载到其他目录下(方便操作)
mount /dev/mapper/klas-root /mnt/
- 操作完后,重启即可。
- 补充:制作启动linux的U盘
从网上下载到U盘(注意系统),复制对应系统的iso文件,未来插在服务器按F2(具体看提示)
2.5 故障案例:no space left on device 磁盘空间不足
常见原因 | 排查 | 如何解决 |
经典:日常/正常(linux,windows)磁盘空间不足 block大文件 | df,du | 定位到文件或目录,确定然后操作 |
inode耗尽 | 找出系统大目录 | 清理这个目录 |
文件未彻底删除,日积月累导致磁盘空间不足 | lsof命令检查delete标记 | 定位到具体进程,重启服务即可 |
1️⃣inode
存放属性信息,inode数量格式化后固定了.
正常使用一般block使用多一些.
但是也有一些原因导致有大量的小文件出现,占用inode.
故障复现
#1.创建一个小分区50MB(dd)
dd if=/dev/zero of=/data/50m bs=1M count=50
#2.格式化
mkfs.xfs /data/50m
#3.挂载
mkdir -p /inode/
mount /data/50m /inode/
#4.创建文件与观察错误
#观察目录的inode数量
df -i
#创建大量文件占用inode
touch {01..200000}
发现inode已经满了,但磁盘还是有容量的。
排查(在系统中 找出大的目录)
模拟
mkdir /test
touch test/{01..100000}
#查找目录/下为目录的且大小比1M大的目录
find / -type d -szie +1M
#查找目录/下为文件的且大小比10M大的文件
find / -type f -szie +10M
- 解决
通过find找出目录
然后检查目录下是否有大量文件,慎用tree,ls,ll命令. ls | wc -l
确认后(可以删除后)
进行删除
#1.|的搭档xargs
#xargs 参数转换 字符--》参数(字符--》文件名,目录名字可以被命令识别)
#|管道传递的是字符(grep,awk,sort,uniq)
echo lidao.txt | xargs touch
#2.Argument list too long 使用echo +touch方式解决
echo {01.500000} |xargs touch
#3.删除大量小文件
ls |xargs rm -f
#ls a* |xargs rm -f 文件数量过大的时候建议使用以名字开头进行删除
#ls 0* |xargs rm -f
- 小结:
inode耗尽导致磁盘空间不足
现象:提示磁盘空间不足了,df -h没有满,df -i查看满了
排查:找出系统大目录 find / type d -size +1M
解决:确认后删除,目录下的小文件
🅰️ls/find + | xrags rm 删除
🅱️删除文件所在目录(目录名字,目录所有者,权限)慎重
补充:
| 与|xrags 区别
|正常过滤取行取列. 字符.
|xargs 传递参数(文件名,目录名字...)
2️⃣文件未彻底删除导致
- 原因:删除正在运行的文件,只会删除硬链接,但文件数据还在。
场景:发现磁盘空间不足,排查日志文件导致的,删除这个文件
删除1个文件(1个文件被彻底删除条件)文件删除原理
1.rm命令删除 入口为0 (硬链接数量为0)
2.文件被使用中(不能被使用中,某个进程)
- 复现故障
#1窗口1 创建大文件并使用tail占用
dd if=/dev/zero of=/var/log/big bs=1M count=30000
tail -f /var/log/big
du -sh /* | sort -rhk1 | head
#一步一步找到占用空间大的文件
#2.窗口2
删除这个文件观察 空间是否释放
df -h du -sh 对比空间差异
lsof |grep delete 标记
- 排查现象
#1. df -h 查看满了
df -h
#2. 通过du -sh 查看 没有满
du -sh /* | sort -rhk1 | head
#3. 怀疑是文件未彻底删除导致的.
#lsof 查看系统打开的文件
lsof | grep deleted | sort -rnk8 | head
#4.定位到具体的进程 服务
pkill tail(举例)
- 解决
重启服务即可
3.今日工作总结
- 磁盘分区方案(自己创建自定义虚拟机 跑下流程.)
- swap增加,关闭.
- 故障案例:进入救援模式.
- 故障案例:优盘救援模式.
- 故障案例:磁盘空间不足系列(复现,排查,解决)
经典
inode不足
未彻底删除不足