当前位置: 首页 > news >正文

day018-磁盘管理-案例

文章目录

  • 1. 磁盘分区
    • 1.1 手动磁盘分区
    • 1.2 重装系统,保留分区
      • 1.2.1 选择从光盘启动
      • 1.2.2 保留系统盘分区
      • 1.2.3 挂载数据盘
  • 2. 物理服务器使用流程
  • 3. swap
    • 3.1 增加swap
    • 3.2 关闭swap
  • 4. 故障案例(红帽类系统)
    • 4.1 root密码忘记,重新设置密码
      • 4.1.1 进入编辑模式
      • 4.1.2 编辑配置
      • 4.1.3 取消root密码
    • 4.2 从U盘/光盘启动进入救援模式
      • 4.2.1 用光盘进入救援模式
      • 4.2.2 补充:制作系统启动U盘
      • 4.2.3 用U盘进入救援模式
  • 5. no space left on device 磁盘空间不足
    • 5.1 inode耗尽
      • 5.1.1 故障复现
      • 5.1.2 排查(找出系统中大目录)
      • 5.1.3 xargs参数转换
    • 5.2 文件未彻底删除
      • 5.2.1 故障复现
      • 5.2.2 排查
  • 6. 踩坑记录
    • **1. dd 创建的文件为什么能当作分区?**
  • 7. 思维导图

1. 磁盘分区

常见分区说明大小
/boot引导分区,引导系统启动;存放Linux内核文件1g/2g
/根分区存放软件包、安装服务20g起步
swap交换分区(虚拟内存分区),特殊文件系统,没有挂载点。
特殊环境中数据库、存储服务、k8s环境;
推荐关闭swap,除非特殊需求(比如java)配置swap。
建议最多8g
/data独立数据分区,名字和路径可以自己定义剩余所有空间

1.1 手动磁盘分区

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 安装系统后,在数据盘添加些文件。

在这里插入图片描述

1.2 重装系统,保留分区

  • 模拟系统故障后,无法进入系统,需要恢复之前的数据。
  • 需要从CD启动系统

1.2.1 选择从光盘启动

  • 挂载系统盘
  • 开机时摁下Esc键,进入系统启动选择菜单,选择光盘启动

在这里插入图片描述

  • 在系统log界面按Esc,多试几次
  • ctrl+alt+insert是虚拟机重启快捷键

在这里插入图片描述

  • 选择安装系统

在这里插入图片描述

1.2.2 保留系统盘分区

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 数据盘不要变
  • 其他和重新安装系统一样

1.2.3 挂载数据盘

在这里插入图片描述

  • 数据盘是最后剩余容量的分区,所以是扩展分区,而使用扩展分区必须划分逻辑分区,所以编号从5开始
  • 而且从该分区的容量可以推断sda5是数据盘
  • 接下来直接挂载就行了

在这里插入图片描述

  • 最后查看下数据盘的文件,发现没有丢失。

2. 物理服务器使用流程

  1. 拆开包装,上电,进行配置;机架式服务器
  2. 配置远程控制卡:物理设备卡,不用去机房现场操作
  3. 配置raid:8块硬盘,2个raid1,6个raid5
  4. 安装系统:自定义分区,/boot、/、swap、/data
  5. 连接,基础优化配置:命令行配置、下载软件包、sshd等
  6. 配置/部署服务(可选):根据需求部署服务、配置
  7. 服务器上架:服务器放在机柜中。IDC数据中心机房

3. swap

  • swap是交换分区,也叫虚拟内存
  • 查看swap命令:free -h、top、htop

3.1 增加swap

# 创建1g的分区,用dd命令比较方便
[root@oldboy99-Kylin /data]# dd if=/dev/zero of=./1g bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB,1.0 GiB)已复制,11.2178 s,95.7 MB/s
[root@oldboy99-Kylin /data]# ll
总用量 1048576
-rw-r--r-- 1 root root 1073741824  520 19:42 1g
# 将分区格式化成swap
[root@oldboy99-Kylin /data]# mkswap ./1g 
mkswap: ./1g:不安全的权限 0644,建议使用 0600。
正在设置交换空间版本 1,大小 = 1024 MiB (1073737728  个字节)
无标签,UUID=98ff0575-589a-43cf-9c5d-6043db9ccfb5
# 修改权限
[root@oldboy99-Kylin /data]# chmod 600 1g 
# 开启swap分区
[root@oldboy99-Kylin /data]# swapon 1g
# 查看虚拟内存
[root@oldboy99-Kylin /data]# free -htotal        used        free      shared  buff/cache   available
Mem:          948Mi       203Mi       104Mi       2.0Mi       639Mi       598Mi
Swap:         3.1Gi       5.0Mi       3.1Gi
  • 上面是临时配置swap,永久配置需要修改fstab文件
/data/1g                none                    swap    defaults        0       0

3.2 关闭swap

  • 临时关闭:swapoff /data/1g
  • 临时关闭所有swap:swapoff -a
[root@oldboy99-Kylin ~]# swapoff -a
[root@oldboy99-Kylin ~]# free -htotal        used        free      shared  buff/cache   available
Mem:          948Mi       206Mi       546Mi       7.0Mi       194Mi       592Mi
Swap:            0B          0B          0B
  • 永久关闭:注释掉/etc/fstab中有关swap的行

ubuntu系统中,除了上面两个步骤还要执行:

systemctl mask swap.target(永久禁用 swap)

4. 故障案例(红帽类系统)

4.1 root密码忘记,重新设置密码

  • 这个案例适用于Linux无法启动、误修改/etc配置导致的无法启动
  • Linux自带救援模式,系统故障不严重时进入该模式即可
  • 比较严重时使用U盘/关盘进入救援模式

4.1.1 进入编辑模式

  • 在系统选择界面按e进入编辑模式

在这里插入图片描述

  • 需要输出编辑模式的用户和密码,不是root的密码

在这里插入图片描述

4.1.2 编辑配置

  • 找到 linux的行,修改ro为rw,表示读写权限
  • 在该行最后添加:init=/bin/bash

在这里插入图片描述

  • ctrl+x,启动系统,进入救援模式

4.1.3 取消root密码

  • vim /etc/passwd
  • 将root用户的密码标志取消

在这里插入图片描述

  • 重启系统,无root密码也可以进入了

4.2 从U盘/光盘启动进入救援模式

  • 针对系统故障严重,无法进入grub菜单的情况

4.2.1 用光盘进入救援模式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 选择救援模式

在这里插入图片描述

  • 这些是光盘中的文件系统,需要挂载本地的root文件系统

在这里插入图片描述

在这里插入图片描述

  • 挂载root文件系统后,进入该目录下,可以修改原主机的配置文件了

4.2.2 补充:制作系统启动U盘

  • https://www.ventoy.net/cn/,下载软件
  • 选择一个U盘,确保里面没有需要的文件

在这里插入图片描述

  • 复制需要的镜像到U盘内

4.2.3 用U盘进入救援模式

  • 打开主机磁盘管理,查看U盘编号

    在这里插入图片描述

  • 将U盘连接到虚拟机

在这里插入图片描述

  • U盘编号是5,选择编号5的硬盘

在这里插入图片描述

在这里插入图片描述

  • 添加成功后的是硬盘4

在这里插入图片描述

  • 开启需要选择从硬盘4启动系统,所以需要调整BIOS中系统的启动顺序
  • 选择进入固件,直接进入BIOS

在这里插入图片描述

  • 将第四块硬盘移到最上面(+)

在这里插入图片描述

在这里插入图片描述

  • 保存配置,重启系统,选择硬盘启动系统

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. no space left on device 磁盘空间不足

常见原因排查如何解决
经典原因:磁盘空间不足(block不足);有大文件df/du定位到目录或文件,确定之后操作
inode耗尽找出系统中的大目录(1M)清理这个目录
文件未彻底删除,日积月累导致磁盘空间不足lsof命令检查delete标记定位到具体进程,重启服务即可

5.1 inode耗尽

  • inode存放文件属性信息,inode数量格式化后就固定了
  • 正常使用情况下,block使用的多一些
  • 但是也有一些原因导致有大量小文件出现,占用inode

5.1.1 故障复现

# 创建小分区
[root@oldboy99-Kylin /data]# dd if=/dev/zero of=./20m bs=1M count=20
记录了20+0 的读入
记录了20+0 的写出
20971520字节(21 MB,20 MiB)已复制,0.00808378 s,2.6 GB/s
[root@oldboy99-Kylin /data]# ll 20m 
-rw-r--r-- 1 root root 20971520  520 21:32 20m
# 格式化分区
[root@oldboy99-Kylin /data]# mkfs.xfs 20m 
meta-data=20m                    isize=512    agcount=1, agsize=5120 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1
data     =                       bsize=4096   blocks=5120, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=1368, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
# 挂载分区并查看
[root@oldboy99-Kylin /data]# mount ./20m /inode/
[root@oldboy99-Kylin /data]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 453M     0  453M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  9.8G   56G   15% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  202M  813M   20% /boot
/dev/sdc1               1017M   40M  978M    4% /app/data
/dev/mapper/klas-backup   32G  260M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0                15M  1.2M   14M    9% /inode
  • 查看测试分区的inode数量
[root@oldboy99-Kylin /data]# df -i
文件系统                  Inodes 已用(I)  可用(I) 已用(I)% 挂载点
devtmpfs                  115792     498   115294       1% /dev
tmpfs                     121353       1   121352       1% /dev/shm
tmpfs                     121353     757   120596       1% /run
tmpfs                     121353      18   121335       1% /sys/fs/cgroup
/dev/mapper/klas-root   34134016  130334 34003682       1% /
tmpfs                     121353      14   121339       1% /tmp
/dev/sda1                 524288     345   523943       1% /boot
/dev/sdc1                 523776       3   523773       1% /app/data
/dev/mapper/klas-backup 16664576      16 16664560       1% /backup
tmpfs                     121353       5   121348       1% /run/user/0
/dev/loop0                 10240       3    10237       1% /inode
  • 创建10237+的小文件

在这里插入图片描述

5.1.2 排查(找出系统中大目录)

  • ls -l显示的是目录的block值大小
  • 目录中文件越多该值越大
# 查找根目录下大小大于1M的目录
[root@oldboy99-Kylin ~]# find / -type d -size +1M

5.1.3 xargs参数转换

  • 创建/删除大量文件时需要该命令,与管道配合使用
  • touch {1…10000000},这样的命令会占用大量的内存,不适用
[root@oldboy99-Kylin ~/test]# echo {1..100000}.txt |xargs touch
[root@oldboy99-Kylin ~/test]# ll |wc -l
100001
  • xargs是将管道左侧命令的结果作为右侧命令的参数
  • 如果没有xargs命令,左侧的结果只是一堆字符,右侧命令不能识别
  • 删除也是同样的道理,ls |xargs rm -f

5.2 文件未彻底删除

  • 文件的硬链接数量为0时,文件被彻底删除了
  • 当有其他程序使用文件时,文件不会被彻底删除

5.2.1 故障复现

# 创建大文件
[root@oldboy99-Kylin ~/test]# dd if=/dev/zero of=./big bs=1M count=30000
记录了30000+0 的读入
记录了30000+0 的写出
31457280000字节(31 GB,29 GiB)已复制,414.527 s,75.9 MB/s
# 查看分区大小和目录大小
[root@oldboy99-Kylin ~/test]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 453M     0  453M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G   40G   27G   61% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  202M  813M   20% /boot
/dev/sdc1               1017M   40M  978M    4% /app/data
/dev/mapper/klas-backup   32G  260M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0                15M  6.6M  8.1M   45% /inode
[root@oldboy99-Kylin ~/test]# du -sh ./
30G	./
  • 用其他程序读取该文件
[root@oldboy99-Kylin ~/test]# tail -f big 
  • 删除该文件,观察空间是否释放
[root@oldboy99-Kylin ~/test]# \rm -f big 
[root@oldboy99-Kylin ~/test]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 453M     0  453M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G   40G   27G   60% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  202M  813M   20% /boot
/dev/sdc1               1017M   40M  978M    4% /app/data
/dev/mapper/klas-backup   32G  260M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0                15M  6.6M  8.1M   45% /inode
[root@oldboy99-Kylin ~/test]# du -sh ./
0	./
  • 文件系统分区显示空间没有释放
  • 当前目录空间已变成0

5.2.2 排查

  1. df -h显示分区满了
  2. du -sh显示目录没有满
  3. 怀疑是文件未彻底删除导致的
  4. 通过 lsof |grep deleted定位到具体的进程、服务
  • lsof(List Open Files)用于 列出当前系统打开的文件
  • lsof | grep deleted 用于查找 已被删除但仍被进程占用的文件

在这里插入图片描述

  • 停止或重启服务即可
[root@oldboy99-Kylin ~/test]# kill 1967
[root@oldboy99-Kylin ~/test]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 453M     0  453M    0% /dev
tmpfs                    475M     0  475M    0% /dev/shm
tmpfs                    475M  6.9M  468M    2% /run
tmpfs                    475M     0  475M    0% /sys/fs/cgroup
/dev/mapper/klas-root     66G  9.8G   56G   15% /
tmpfs                    475M     0  475M    0% /tmp
/dev/sda1               1014M  202M  813M   20% /boot
/dev/sdc1               1017M   40M  978M    4% /app/data
/dev/mapper/klas-backup   32G  260M   32G    1% /backup
tmpfs                     95M     0   95M    0% /run/user/0
/dev/loop0                15M  6.6M  8.1M   45% /inode
[root@oldboy99-Kylin ~/test]# du -sh ./
0	./

6. 踩坑记录

1. dd 创建的文件为什么能当作分区?

dd 命令可以生成一个 全零填充的二进制文件;

这个文件本质上是一个 未格式化的空白磁盘镜像,可以被操作系统识别为“虚拟磁盘”。

7. 思维导图

【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX

http://www.xdnf.cn/news/557515.html

相关文章:

  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用控件调色板QPalette)
  • Linux X86平台安装ARM64交叉编译器方法
  • 如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)
  • 首次中医知识问答模型微调
  • CSS display有几种属性值
  • 深入理解 Python 中的几种方法:实例方法、类方法、静态方法与特殊方法
  • leetcode 162. Find Peak Element
  • python新手学习笔记①
  • Linux探秘:驾驭开源,解锁高效能——基础指令
  • Git命令使用全攻略:从创建分支到合并的完整流程
  • 大模型高效微调技术全面解析:从PEFT原理到实战应用
  • 项目进度延误,如何按时交付?
  • 预训练模型:深度学习的通用特征引擎
  • Greenplum数据库维护篇之常用操作指导
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(十八)
  • Windows逆向工程提升之IMAGE_DOS_HEADER
  • 定时任务延迟任务
  • linux内核编译学习笔记
  • Java异常处理与File类终极指南
  • 【基础知识】SPI协议的种类及异同
  • 数据库 1.0.1
  • DAY28类
  • MYSQL备份恢复知识:第四章:备份锁
  • 【优秀三方库研读】在 quill 开源库中为什么封装 safe_fwrite,而不是直接使用系统 fwrite
  • MySQL中添加一个具有创建数据库权限的用户
  • Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程
  • C/C++ Select Poll Epoll 多路转接
  • python -> matplotlib简单用法
  • Unity3D仿星露谷物语开发47之砍树时落叶特效
  • Wan2.1 加速推理方法