本文约2600字,今天继续Linux文件系统第三阶段高级实战学习,本文聚焦Linux磁盘高级管理,主要介绍磁盘相关的高级知识点、实操命令、生产避坑点。
我建了一个BSP学习交流群,想学BSP或者已经是BSP开发者可私信我,加入群,一起交流学习,共同进步。
关注公众号, 即可获得与Linux相关的电子书籍以及常用开发工具,文末有文档清单。

一 磁盘类型识别与排查
Linux中所有磁盘(本地盘、U盘、RAID盘、逻辑卷)都以设备文件形式存在于/dev目录下。
[1]. 常见磁盘类型与设备文件名规范
Linux系统通过固定的命名规则识别不同磁盘,核心规范如下,覆盖所有常见磁盘类型:
说明:本文基于SD卡、U盘、SATA/移动硬盘等来描述(部分高级内容RAID、LVM、NVMe在目前常规产品中未使用到)。
[2]. 核心命令:识别所有磁盘与分区信息
无论哪种磁盘,都可以通过以下4个命令快速识别,覆盖“磁盘存在性、分区情况、挂载状态、磁盘详情”,必练:
# 1. 查看所有磁盘(含未挂载磁盘),最常用fdisk -l# 2. 查看所有磁盘分区及挂载状态(更直观)lsblk# 3. 查看已挂载磁盘的使用情况(含容量、挂载点)df -h# 4. 查看磁盘UUID、文件系统类型(高级配置必备)blkid
# 补充:查看磁盘详细信息(如转速、接口)
lsblk -f # 查看文件系统+UUIDhdparm -I /dev/sda # 查看磁盘硬件信息
说明:通过fdisk -l可区分“已分区磁盘”和“未分区磁盘”,未分区磁盘仅显示磁盘容量,无分区信息;已分区磁盘会列出所有分区(如/dev/sda1、/dev/sda2)。
二 高级核心1:磁盘分区与格式化
磁盘分区是高级管理的基础——无论是本地盘、U盘,使用前都需要分区(规划磁盘逻辑区域)和格式化(创建文件系统)。不仅要掌握基础分区,还需要重点突破“大磁盘分区(>2TB)、分区表类型选择、全文件系统格式化”。
[1]. 分区表类型选择
磁盘分区表有两种核心类型,直接决定磁盘最大支持容量和分区数量,需根据磁盘大小选择:
MBR分区表:支持最大磁盘容量2TB,最多4个主分区(或3个主分区+1个扩展分区),兼容所有Linux系统,适合小容量磁盘(<2TB)。
GPT分区表:支持最大磁盘容量18EB(几乎无限制),最多支持128个主分区,适合大容量磁盘(>2TB),是目前生产环境主流选择。
避坑提醒:若2TB以上磁盘用MBR分区表,超出2TB的部分会无法识别,直接浪费容量;新建大磁盘优先用GPT分区表。
[2]. 高级分区实操(fdisk vs parted)
fdisk仅支持MBR分区表,parted支持MBR和GPT,适合大磁盘分区,重点掌握parted实操(覆盖所有磁盘类型):
>>parted分区实操(GPT分区表,推荐)
以“/dev/sdb(3TB磁盘)”为例,分区为1个主分区(/dev/sdb1),步骤如下:
# 1. 进入parted交互模式(指定磁盘)parted /dev/sdb# 2. 查看当前分区表类型(parted) print# 3. 若为MBR,转换为GPT(警告:会清空磁盘数据!)(parted) mklabel gpt# 4. 创建分区(分区类型primary,起始位置0%,结束位置100%,即全磁盘)(parted) mkpart primary 0% 100%# 5. 查看分区结果(parted) print# 6. 退出交互模式(parted) quit
>>fdisk分区实操(MBR分区表,仅小磁盘用)
# 1. 进入fdisk交互模式fdisk /dev/sda# 2. 查看分区Command (m for help): p# 3. 新建分区(n=新建,p=主分区,1=分区号,默认起始扇区,结束扇区自定义)Command (m for help): nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): pPartition number (1-4, default 1): 1First sector (2048-209715199, default 2048):Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +100G# 4. 保存分区(w=保存,q=退出不保存)Command (m for help): w
[3]. 全文件系统格式化实操(适配所有磁盘)
分区后必须格式化(创建文件系统),才能挂载使用。Linux常用文件系统有ext4、xfs、vfat、ntfs,根据磁盘用途选择,实操如下:
# 1. 格式化ext4(最常用,兼容所有Linux,适合本地数据盘)mkfs.ext4 /dev/sdb1# 2. 格式化xfs(高并发、大容量磁盘首选,CentOS 7+默认文件系统)mkfs.xfs /dev/sdb1# 3. 格式化vfat(U盘、移动硬盘,兼容Windows和Linux)mkfs.vfat /dev/sdc1# 4. 格式化ntfs(Windows分区,需安装ntfs-3g工具)yum install -y ntfs-3g # 安装工具mkfs.ntfs /dev/sdd1# 补充:格式化后查看文件系统blkid /dev/sdb1 # 确认文件系统类型
说明:格式化会清空分区内所有数据,操作前务必确认数据已备份;生产环境中,本地数据盘优先用xfs(性能更优),U盘用vfat,Windows共享磁盘用ntfs。
三 磁盘性能监控与故障排查
高级磁盘管理不仅要会“配置”,还要会“监控”和“排障”——生产环境中,磁盘IO瓶颈、磁盘故障、挂载异常等问题频发,需掌握核心监控工具和故障排查思路,覆盖所有磁盘类型。
[1]. 磁盘性能监控
重点监控“磁盘IO使用率、读写速度、IO等待时间”,核心工具3个,覆盖基础监控和深度诊断:
# 1. iostat:最常用,查看磁盘IO统计(安装sysstat包)yum install -y sysstatiostat -x 2 # 每2秒刷新一次,-x显示详细IO指标# 关键指标解读(重点关注)# %util:磁盘IO使用率(>60%即存在瓶颈,NVMe盘此值参考意义有限)# r/s、w/s:每秒读/写请求数(IOPS)# rkB/s、wkB/s:每秒读/写字节数(吞吐量)# r_await、w_await:IO请求平均等待+服务时间(ms,HDD<10ms,SATA SSD<1ms,NVMe<0.1ms)# 2. iotop:按进程查看IO占用(类似top,直观定位高IO进程)iotop -o # 仅显示有IO活动的进程# 3. blktrace+blkparse:内核级IO追踪(深度诊断IO延迟)yum install -y blktraceblktrace -d /dev/sda -w 10 # 追踪/dev/sda 10秒blkparse sda.blktrace.* | less # 解析追踪结果# 补充:查看磁盘IO队列长度(判断是否拥堵)cat /proc/diskstats # 第13列为IO进行中的时间(ms)
[2]. 常见磁盘故障排查
针对生产环境中高频磁盘故障,整理排查思路和解决方法,覆盖所有磁盘类型:
>>故障1:磁盘无法识别(fdisk -l看不到磁盘)
原因:磁盘物理连接松动、磁盘损坏、驱动未加载。
排查解决:
# 1. 检查磁盘物理连接(服务器机房操作,虚拟机检查磁盘是否添加)# 2. 查看磁盘驱动加载情况lspci | grep -i disk # 查看磁盘控制器是否识别lsmod | grep sd_mod # 查看SATA驱动是否加载# 3. 重新扫描磁盘(无需重启)cho "- - -" > /sys/class/scsi_host/host0/scan # 扫描所有SCSI控制器fdisk -l # 重新查看磁盘
>>故障2:磁盘IO瓶颈(系统卡顿、读写缓慢)
原因:磁盘IO使用率过高、高IO进程占用、磁盘碎片过多、RAID性能异常。
排查解决:
# 1. 定位高IO进程iotop -o # 找到占用IO高的进程,优化或停止lsof /mnt/data # 查看哪些进程在占用目标磁盘# 2. 查看磁盘IO使用率iostat -x 2 # 确认%util是否过高# 3. 优化措施# ① 优化高IO进程(如数据库慢查询、日志写入)# ② 清理磁盘碎片(ext4用e2fsck,xfs用xfs_fsr)xfs_fsr /dev/sda1# ③ 调整挂载参数(添加noatime,减少磁盘IO)mount -o remount,noatime /dev/sda1
以上为全文内容。
这里是女程序员的笔记本
15年+嵌入式软件工程师兼二胎宝妈
分享读书心得、工作经验,自我成长和生活方式。
希望我的文字能对你有所帮助