一、磁盘基础概念

1.1 磁盘物理结构

硬盘(Hard Disk Drive, HDD)由盘片、磁头、电机、控制电路等组成,数据存储在盘片的磁道、扇区和柱面中

  • 磁道:盘片表面同心圆轨迹,从外向内编号(0开始)。

  • 扇区:磁道被划分的最小存储单元,默认大小为512字节(部分新硬盘支持4K扇区),是磁盘I/O的最小单位。

  • 柱面:所有盘片上相同编号的磁道组成的圆柱面,分区时以柱面为边界,确保数据连续存储,提升读写效率。

  • 磁头:负责读写盘片数据,每个盘片上下表面各对应一个磁头,磁头数量与盘片两面数一致。

磁盘结构示意图:

固态硬盘(Solid State Drive, SSD)无机械结构,由闪存芯片、控制器组成,读写速度更快,无寻道时间,磁盘管理逻辑与HDD一致,但无需碎片整理。

1.2 磁盘接口类型

  • SATA:串行接口,传输速率通常为6Gbps,兼容性强,广泛用于消费级硬盘。

  • SAS:串行连接SCSI,传输速率可达12Gbps,可靠性高、支持热插拔,多用于服务器。

  • NVMe:基于PCIe总线的接口协议,专为SSD设计,传输速率远超SATA/SAS(如PCIe 4.0 x4可达32Gbps),是高性能存储首选。

  • SCSI:并行接口,老旧接口,逐渐被SAS替代,仅在部分legacy设备中存在。

1.3 磁盘在Linux中的标识

Linux通过设备文件管理磁盘,设备文件位于/dev目录下,命名规则如下:

  • SATA/SAS硬盘:以sd开头,如/dev/sda(第一块硬盘)、/dev/sdb(第二块硬盘),依次类推。

  • NVMe硬盘:以nvme开头,如/dev/nvme0n1(第一块NVMe控制器下的第一块硬盘),分区标识为/dev/nvme0n1p1(第一个分区)。

  • 虚拟磁盘(如VMware):可能以vd开头,如/dev/vda,命名逻辑与sd系列一致。

  • 分区标识:IDE硬盘(老旧)以hd开头(如/dev/hda1);sd系列硬盘的分区为/dev/sda1(sda的第一个主分区/扩展分区)、/dev/sda5(第一个逻辑分区,逻辑分区编号从5开始)。

分区编号规则:硬盘最多4个主分区(Primary)或3个主分区+1个扩展分区(Extended),扩展分区内可划分多个逻辑分区(Logical),逻辑分区编号从5起始,无论主分区是否占满1-4号。

二、磁盘分区管理

磁盘分区是将物理磁盘划分为多个独立逻辑区域,便于管理数据、隔离系统与用户数据,常用工具包括fdisk(MBR分区表)、gdisk/parted(GPT分区表)。

①硬盘中的主分区数目只有四个   ②主分区和扩展分区的序号限制在1~4

③扩展分区(e)再分为逻辑分区      ④逻辑分区的序号从5开始

2.1 分区表类型

磁盘分区分为MBR分区表和GPT分区表两种格式,二者不能共存。

2.1.1 MBR分区表(Master Boot Record)

传统分区表格式,兼容所有系统,但存在限制:

  • 支持最大磁盘容量为2TB,单分区最大容量2TB。

  • 最多4个主分区或3主+1扩展分区。

  • 分区表存储在磁盘第一个扇区(MBR扇区,512字节),易被破坏,无冗余备份。

2.1.2 GPT分区表(GUID Partition Table)

新一代分区表格式,解决MBR限制,适用于大容量磁盘:

  • 支持最大磁盘容量为18EB(1EB=1024PB),单分区最大容量18EB。

  • 最多支持128个主分区(无扩展/逻辑分区概念),无需分区编号限制。

  • 分区表存储在磁盘开头和结尾,有冗余备份,安全性更高。

  • 支持UEFI启动(MBR仅支持BIOS启动),是现代服务器和大容量磁盘的首选。

2.2 常用分区工具实操

① fdisk(MBR分区表,适用于≤2TB磁盘)

fdisk是Linux自带的MBR分区工具,支持交互式操作,命令如下:

  1. 查看磁盘信息fdisk -l,列出所有磁盘及分区详情,确认目标磁盘(如/dev/sdb)。

  2. 进入分区编辑模式fdisk /dev/sdb,进入后输入指令进行分区操作。

  3. 核心交互指令

    1. n:新建分区(主分区/扩展分区/逻辑分区)。

    2. p:查看当前分区表。

    3. d:删除分区(需指定分区编号)。

    4. t:修改分区类型(如Linux分区为83,swap分区为82)。

    5. w:保存分区表并退出(仅w会生效,q为放弃修改退出)。

    6. q:放弃修改并退出。(gdisk同样适用

 gdisk(GPT分区表,适用于>2TB磁盘)

gdisk是GPT分区表专用工具,操作逻辑与fdisk类似,命令如下:

  1. 查看GPT磁盘信息gdisk -l /dev/sdb

  2. 进入编辑模式gdisk /dev/sdb

parted支持两种分区表格式,可非交互式操作,适合脚本自动化,也支持交互式操作

2.3 分区生效与验证

分区完成后,需刷新分区表使系统识别新分区,命令如下:

  • 刷新分区表:partprobe /dev/sdb(无需重启系统)。

  • 验证分区:lsblk /dev/sdbfdisk -l /dev/sdb,确认新分区是否存在。

三、文件系统创建与管理

分区后需格式化(创建文件系统)才能存储数据,Linux支持多种文件系统,不同文件系统有不同特性和适用场景。

常见文件系统类型

文件系统 特点 适用场景 最大单个文件 最大分区容量
ext4 Linux默认文件系统,日志型,支持配额、延迟分配,稳定性强 系统盘、数据盘(通用场景) 16TB 1EB
xfs 高性能日志型,读写速度快,支持动态扩展,适合大文件 服务器数据盘、数据库存储 8EB 8EB
btrfs 支持快照、RAID、动态扩展,功能丰富,兼容性待完善 需要快照/RAID的场景(谨慎使用) 16EB 16EB
swap Linux交换分区,用于虚拟内存,缓解内存不足 所有Linux系统(必备) - 通常为内存的1-2倍(内存>8GB可设为8-16GB)
vfat 兼容Windows/Linux,无权限管理,适合U盘/移动硬盘 跨系统共享存储 4GB 2TB

四、磁盘挂载与自动挂载

文件系统需挂载到Linux目录树的某个节点(挂载点)才能访问,挂载点需为空目录,常用挂载命令为mount,自动挂载需配置/etc/fstab文件。

临时挂载(mount命令)

  1. 创建挂载点mkdir /data        mount /dev/sdb1/data 

  2. 查看挂载状态

    1. mount:列出所有已挂载的文件系统。

    2. df -h:以人类可读格式查看挂载点容量使用情况。

    3. lsblk:查看磁盘、分区及挂载点关联关系。

  3. 卸载挂载点umount /data,若提示“设备正忙”,需先关闭占用该目录的进程(fuser -m /data查看进程,kill -9 进程ID终止)。

修改/etc/fstab时需格外谨慎,语法错误会导致系统启动失败。若出错,可在启动时进入单用户模式,注释错误行或修正后重启。

五、磁盘容量监控与管理

5.1 查看磁盘容量使用情况

  1. df:查看挂载点容量(文件系统级)。   常用选项:-h:以人类可读格式(KB、MB、GB)显示;-T:显示文件系统类型;-i:显示inode使用情况。

  2. du:查看目录/文件占用空间(文件级)。 常用选项:-h:人类可读格式;-s:仅显示总大小,不列出子目录和文件;-a:显示所有文件和目录的占用空间;--max-depth=N:显示深度为N的目录占用情况。ncdu:可视化磁盘分析工具(需安装),交互性强,适合快速定位大文件/目录。 

5.2 磁盘空间清理

 清理日志文件

系统日志默认存储在/var/log目录,可清理旧日志或配置日志轮转(logrotate)自动压缩、删除旧日志。

# 清空单个日志文件(保留文件,仅删除内容)
> /var/log/messages
# 删除7天前的日志文件(以.log结尾)
find /var/log -name "*.log" -mtime +7 -delete
# 压缩3天前的日志文件
find /var/log -name "*.log" -mtime +3 -exec gzip {} \;

5.3 文件系统检查与修复(fsck命令)

fsck(filesystem check)用于检查和修复损坏的文件系统,仅能对未挂载的文件系统操作,否则可能导致数据损坏。

# 卸载损坏的文件系统(如/dev/sdb1)
umount /dev/sdb1
# 检查并修复ext4文件系统(自动修复添加-y选项)
fsck.ext4 /dev/sdb1
fsck.ext4 -y /dev/sdb1
# 检查并修复xfs文件系统(xfs_repair命令)
xfs_repair /dev/sdb2

注意:xfs文件系统修复后可能会丢失部分数据,建议定期备份;ext4文件系统修复相对稳定。

六、高级磁盘管理

逻辑卷管理(LVM)

LVM(Logical Volume Manager)是一种灵活的磁盘管理技术,可将多个物理分区(物理卷PV)整合为卷组(VG),再从卷组中划分逻辑卷(LV),逻辑卷可动态扩容、缩容,无需重新分区。

 LVM核心组件

  • 物理卷(PV):被LVM管理的物理分区,需先格式化为LVM类型(8e);

  • 卷组(VG):由多个PV组成的存储池,可动态添加/移除PV;

  • 逻辑卷(LV):从VG中划分的虚拟分区,可直接格式化挂载使用;

  • 物理扩展(PE):VG的最小分配单位,默认4MB,LV的大小为PE数量×PE大小。

格式化:mkfs -t xfs /dev/web_document/bdqn

mkfs(make filesystem)用于格式化分区,生成指定类型的文件系统,语法:mkfs.文件系统类型 分区设备名。

总结:

Linux磁盘管理核心流程为:磁盘识别→分区(MBR/GPT)→格式化(选择文件系统)→挂载(临时/永久),日常维护需熟练使用df、du、fsck等命令,针对大存储、高可靠性需求,可采用LVM、RAID等高级技术。操作前务必备份重要数据,避免误操作导致数据丢失。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐