当前位置:首页>Linux>新手必看!Linux 磁盘管理入门:分区、挂载 + df/du 命令实战

新手必看!Linux 磁盘管理入门:分区、挂载 + df/du 命令实战

  • 2026-10-10 14:46:05
新手必看!Linux 磁盘管理入门:分区、挂载 + df/du 命令实战

很多刚接触Linux的新手都会有这些灵魂拷问:

  • Windows里有C盘、D盘,为什么Linux里看不到盘符?
  • 我给虚拟机加了一块新硬盘,怎么在系统里用起来?
  • 怎么看服务器磁盘还剩多少空间?哪个目录占的空间最大?
  • 为什么df显示磁盘满了,但du算出来的总大小却差很多?

这些问题的答案,都在今天的内容里。磁盘管理是Linux运维的必备技能,不管是日常使用、服务器运维,还是排查磁盘满、文件丢失等故障,都离不开它。

本篇我们从核心概念讲起,先搞懂「磁盘、分区、挂载」的底层逻辑,再手把手教你df、du磁盘查看命令,最后带你走完「新增磁盘→分区→格式化→挂载→永久生效」的完整实操流程,新手跟着敲一遍就能掌握。

一、核心认知:Linux磁盘管理和Windows的本质区别

新手学磁盘管理的第一个卡点,就是用Windows的逻辑套Linux,先把这个核心区别搞懂,后面的内容一学就会。

系统
磁盘管理逻辑
访问方式
Windows
以「盘符」为核心,每个磁盘/分区对应一个独立的盘符(C:、D:、E:),各盘符互相独立
打开「此电脑」,双击对应盘符访问
Linux
以「目录树」为核心,遵循「一切皆文件」的设计,所有磁盘/分区都必须挂载到系统的目录上
访问挂载的目录,就等于访问对应的磁盘/分区

举个通俗的例子:

  • Windows的盘符就像一个个独立的抽屉,每个抽屉有自己的编号,打开哪个抽屉就用里面的东西;
  • Linux的挂载就像把U盘插到文件夹上,你打开这个文件夹,就能直接用U盘里的内容,所有的磁盘都要“插”到根目录/下的某个文件夹里才能用。

这个「把磁盘分区和系统目录绑定的操作」,就是挂载,绑定的目录叫做挂载点,这是Linux磁盘管理最核心的概念。

二、核心概念扫盲:磁盘、分区、挂载到底是什么?

1. 磁盘的命名规则(Linux怎么识别磁盘)

Linux会给系统里的每一块磁盘分配一个唯一的设备文件,存放在/dev目录下,命名规则和磁盘类型强相关,新手记住这3种最常见的即可:

磁盘类型
命名规则
示例
分区命名示例
SATA/SAS机械硬盘/固态硬盘
/dev/sd[a-z]
,系统按识别顺序分配a、b、c...
第一块盘/dev/sda,第二块/dev/sdb
第一块盘的第一个分区/dev/sda1
NVMe固态硬盘
/dev/nvme[数字]n[数字]
,nvme后是控制器编号,n后是磁盘编号
第一块NVMe盘/dev/nvme0n1
第一个分区/dev/nvme0n1p1
虚拟机虚拟磁盘(KVM/虚拟化)
/dev/vd[a-z]
第一块虚拟盘/dev/vda
第一个分区/dev/vda1

✅ 新手技巧:用lsblk命令可以直观看到系统里所有的磁盘和分区结构,比记命名规则更简单,后面会详细讲。

2. 分区:给磁盘划地盘

分区就是把一块物理磁盘,逻辑上划分成多个独立的区域,每个区域就是一个分区,不同分区可以做不同的用途(比如系统分区、数据分区、交换分区)。

为什么要分区?

  • 数据隔离:系统和数据分开存,系统坏了重装不会影响数据;
  • 性能优化:不同分区可以用不同的文件系统参数,适配不同的读写场景;
  • 安全限制:比如给日志目录单独分区,日志写满了不会影响系统核心运行。

两种分区表格式(新手必知)

分区表是磁盘上记录分区信息的结构,主流有两种,重点记区别:

分区表类型
最大支持磁盘容量
主分区数量限制
适用场景
MBR
最大2TB
最多4个主分区(扩展分区不算)
老系统、小容量磁盘,现在基本淘汰
GPT
支持几十EB的超大磁盘
几乎无分区数量限制(默认128个)
现在的主流,新系统、大容量磁盘首选

3. 挂载:让磁盘分区真正能用

前面我们说过,Linux里所有的磁盘分区,都必须挂载到一个目录(挂载点)上才能使用。

核心规则

  1. 一个分区只能挂载到一个挂载点,不能同时挂载到多个目录;
  2. 一个挂载点可以挂载多个分区,但只有最后挂载的分区生效,之前的会被隐藏;
  3. 挂载点必须是提前创建好的目录,建议用空目录(非空目录挂载后,原有内容会被隐藏,卸载后恢复);
  4. 系统安装时创建的分区,会自动挂载到/(根目录)、/boot、/home等目录;
  5. 手动执行mount命令的挂载是临时挂载,重启系统后就会失效,要永久生效必须修改/etc/fstab配置文件。

4. 文件系统:分区的“格式”

就像Windows格式化U盘会选NTFS、FAT32一样,Linux的分区也需要格式化,写入文件系统才能使用。主流的文件系统有2种:

  • xfs
    :RHEL/CentOS/Anolis OS 默认文件系统,擅长处理大文件,高性能,适合服务器场景;
  • ext4
    :Ubuntu/Debian 默认文件系统,兼容性好,适合日常使用,日志型文件系统,数据安全性高。

三、磁盘查看核心命令:先学会“看”,再学会“改”

新手学磁盘管理,先从查看命令学起,不用修改磁盘,零风险,还能快速建立认知。

1. lsblk:直观查看磁盘与分区结构(首选)

lsblk(list block devices)可以以树形结构,直观展示系统里所有的磁盘、分区、挂载点,是新手查看磁盘信息的首选命令。

# 基础用法(直接执行,零参数,最常用)lsblk

示例输出(新手一眼看懂):

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSsda           8:0    0   20G  0 disk ├─sda1        8:1    0    1G  0 part /boot└─sda2        8:2    0   19G  0 part   ├─cs-root 253:0    0   17G  0 lvm  /  └─cs-swap 253:1    0    2G  0 lvm  [SWAP]sdb           8:16   0   10G  0 disk sr0          11:0    1 1024M  0 rom

输出解读:

  • NAME
    :磁盘/分区名称,disk代表整块磁盘,part代表分区;
  • SIZE
    :磁盘/分区的容量;
  • MOUNTPOINTS
    :挂载点,空的就是还没挂载的分区/磁盘。

2. df:查看磁盘分区整体使用率

df(disk free)核心作用是查看系统里所有已挂载分区的整体使用情况:总容量、已用容量、剩余容量、使用率、挂载点。

这是日常排查“磁盘满了”的第一个命令,必学。

常用实操案例

# 1. 最常用:以人类可读的单位(GB/MB)显示容量(必背)df -h# 示例输出:# Filesystem            Size  Used Avail Use% Mounted on# devtmpfs              867M     0  867M   0% /dev# tmpfs                 896M     0  896M   0% /dev/shm# /dev/mapper/cs-root   17G  2.3G   15G  14% /# /dev/sda1            1014M  200M  815M  20% /boot# tmpfs                 180M     0  180M   0% /run/user/0
# 2. 查看inode使用情况(排查inode满的问题)df -i# 说明:inode是文件的唯一标识,每个文件占用一个inode# 如果inode使用率100%,哪怕磁盘还有剩余空间,也无法创建新文件
# 3. 只查看指定文件系统类型的分区df -h -t xfs# 只看xfs格式的分区

3. du:查看文件/目录的磁盘占用大小

du(disk usage)核心作用是查看具体某个文件、某个目录占用了多少磁盘空间,用来定位“哪个文件/目录占空间最大”,和df是互补的。

常用实操案例

# 1. 最常用:查看当前目录下,每个子目录/文件的总大小,人类可读格式du -sh *# 示例输出:# 1.2G    logs# 20M     project# 4.0K    test.txt
# 2. 只查看指定目录的总占用大小(汇总)du -sh /var/log# 输出:1.2G /var/log
# 3. 查看目录下一级子目录的大小(不深入子目录)du -h --max-depth=1 /home# 适合排查根目录下哪个一级目录占空间最大
# 4. 排序:找出当前目录下最大的10个文件/目录du -sh * | sort -hr | head -10# 运维高频命令,排查大文件神器

4. df 和 du 的核心区别(新手必懂,避免混淆)

命令
核心用途
统计逻辑
适用场景
df
查看磁盘分区整体的使用情况
从文件系统层面统计,统计分区的总容量、已用、剩余
快速看哪个磁盘分区满了
du
查看文件/目录的占用大小
累加计算指定文件/目录的实际占用空间
定位哪个文件/目录占空间最多

高频问题:为什么df和du的结果不一致?

最常见的原因:文件已经被删除,但占用该文件的进程还在运行,空间没有被系统释放。

  • 场景:日志文件被rm删除,但服务没重启,进程还在往里面写日志,du看不到这个文件,但df依然统计已用空间;
  • 解决方法:用lsof | grep deleted查看被删除但仍被占用的文件,重启对应进程,或者清空文件(> 文件名)即可释放空间。

5. 其他辅助查看命令

# 查看磁盘分区的详细信息(包括分区表、扇区等)sudo fdisk -l# 查看分区的UUID、文件系统类型(永久挂载必用)blkid# 示例输出:/dev/sda1: UUID="xxxx-xxxx" TYPE="xfs" PARTUUID="xxxx-xxxx"

四、完整实操:新增磁盘→分区→格式化→挂载→永久生效

这是本篇的核心实操,我们以“给虚拟机新增一块10G的磁盘,完成全流程配置,实现重启后依然生效”为例,新手跟着步骤一步步来,就能完整掌握Linux磁盘管理的全流程。

⚠️ 重要提醒:以下操作会修改磁盘分区表和格式化,请在测试虚拟机操作,确认磁盘设备名正确,切勿操作系统盘,避免数据丢失!

步骤1:确认新增的磁盘

给虚拟机新增磁盘后,先执行lsblk命令,确认新磁盘的设备名:

lsblk

示例输出中,sdb就是我们新增的10G磁盘,没有分区、没有挂载点:

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSsda           8:0    0   20G  0 disk ├─sda1        8:1    0    1G  0 part /boot└─sda2        8:2    0   19G  0 part   ├─cs-root 253:0    0   17G  0 lvm  /  └─cs-swap 253:1    0    2G  0 lvm  [SWAP]sdb           8:16   0   10G  0 disk  # 这是我们新增的磁盘sr0          11:0    1 1024M  0 rom

步骤2:给磁盘分区(gdisk,GPT分区表,推荐)

现在主流系统都用GPT分区表,我们用gdisk工具给新增的/dev/sdb磁盘分区,新手直接用整个磁盘创建一个分区即可。

# 1. 执行gdisk命令,操作目标磁盘(注意替换成你的磁盘名,别写错!)sudo gdisk /dev/sdb

进入gdisk交互界面后,按以下步骤操作,括号里是解释:

Command (? for help): n  # 输入n,新建一个分区Partition number (1-128, default 1):  # 直接回车,默认分区号1First sector (34-20971486, default = 2048):  # 直接回车,默认起始扇区Last sector (2048-20971486, default = 20971486):  # 直接回车,用整个磁盘的所有空间Hex code or GUID (L to show codes, Enter = 8300):  # 直接回车,默认Linux文件系统类型Command (? for help): w  # 输入w,保存分区表并退出Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!Do you want to proceed? (Y/N): Y  # 输入Y确认,分区完成

操作完成后,再用lsblk查看,就能看到新创建的分区/dev/sdb1:

sdb           8:16   0   10G  0 disk └─sdb1        8:17   0   10G  0 part  # 新创建的分区

补充说明:如果是小于2T的磁盘,想用MBR分区表,可以用sudo fdisk /dev/sdb,操作逻辑类似,输入n新建分区,w保存退出。

步骤3:给分区格式化(写入文件系统)

分区创建好后,必须格式化写入文件系统才能使用,我们以主流的xfs为例,ext4格式只需要替换命令里的xfs为ext4即可。

# 格式化分区,注意替换成你的分区名!sudo mkfs.xfs /dev/sdb1# 若用ext4格式,执行这个# sudo mkfs.ext4 /dev/sdb1

执行后会输出格式化的详细信息,没有报错就是格式化成功。

步骤4:创建挂载点目录

挂载点就是一个普通的目录,我们需要提前创建好,比如我们把这个分区挂载到/data目录(常用的数据目录):

# 创建挂载点目录sudo mkdir -p /data

步骤5:临时挂载(重启失效)

用mount命令把分区挂载到创建好的目录上:

# 挂载分区到/data目录sudo mount /dev/sdb1 /data

挂载完成后,用df -h验证是否成功:

df -h /data# 示例输出:# Filesystem      Size  Used Avail Use% Mounted on# /dev/sdb1        10G   25M  9.9G   1% /data

能看到分区容量、挂载点,就说明挂载成功了,现在你往/data目录里写文件,就是写到新增的这块磁盘里了。

步骤6:永久挂载(重启不失效,重点)

手动执行mount的挂载是临时的,服务器重启后就会消失,要实现永久挂载,必须把挂载配置写入/etc/fstab文件,这是Linux系统开机自动挂载分区的配置文件。

关键提醒(新手避坑,重中之重)

⚠️ /etc/fstab 配置错误会导致系统开机无法启动!修改完成后,必须执行sudo mount -a测试,无报错再重启系统!

✅ 推荐用UUID挂载,不要用/dev/sdb1,因为磁盘的设备名可能会变(比如新增磁盘后,sdb变成sdc),但UUID是分区的唯一标识,永远不变。

操作步骤

  1. 先获取分区的UUID,执行blkid命令:

    sudo blkid /dev/sdb1# 示例输出:/dev/sdb1: UUID="6f8b9c7d-1234-5678-90ab-cdef01234567" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="xxxx-xxxx"# 复制引号里的UUID,比如上面的 6f8b9c7d-1234-5678-90ab-cdef01234567
  2. 编辑/etc/fstab配置文件,用vim打开:

    sudo vim /etc/fstab
  3. 在文件末尾添加一行挂载配置,格式如下:

    UUID=你复制的UUID  挂载点  文件系统类型  挂载参数  dump备份  fsck检查顺序

    对应我们的示例,添加的内容是:

    UUID=6f8b9c7d-1234-5678-90ab-cdef01234567 /data xfs defaults 0 0
    6个字段详细解释(新手必懂)

    | 字段 | 示例值 | 说明 |

    | :--- | :--- | :--- |

    | 第1字段 | UUID=xxx | 分区标识,推荐用UUID,也可以写/dev/sdb1 |

    | 第2字段 | /data | 挂载点目录,必须提前创建好 |

    | 第3字段 | xfs | 文件系统类型,要和格式化时一致(xfs/ext4) |

    | 第4字段 | defaults | 挂载参数,defaults包含了rw(读写)、exec(可执行)等默认参数,新手直接用defaults即可 |

    | 第5字段 | 0 | 是否开启dump备份,0=不备份,1=备份,新手填0 |

    | 第6字段 | 0 | 开机磁盘检查顺序,0=不检查,根目录/填1,其他分区填2,非系统分区填0即可 |

  4. 保存退出vim后,必须执行测试命令,验证配置是否正确:

    sudo mount -a

    这个命令会加载/etc/fstab里的所有配置,执行后没有任何输出,就说明配置正确,没有报错;如果有报错,立刻回去修改配置,不要重启!

  5. 验证:可以先卸载分区,再用mount -a重新挂载,看是否能自动挂载成功:

    # 先卸载sudo umount /data# 重新加载fstab配置挂载sudo mount -a# 查看是否挂载成功df -h /data

    能正常挂载,就说明永久挂载配置完成了,重启系统也不会失效。

步骤7:卸载分区(可选)

如果不需要这个分区了,可以用umount命令卸载:

# 卸载分区,两种写法都可以sudo umount /data  # 按挂载点卸载sudo umount /dev/sdb1  # 按分区名卸载

避坑提示:卸载时,不要在挂载目录里执行umount命令,会提示device is busy,先退出挂载目录再执行卸载。

五、新手高频避坑指南(重中之重)

  1. 分区操作致命坑
    :操作分区前,一定要用lsblk确认磁盘设备名,绝对不能写错系统盘(比如/dev/sda),否则会导致系统崩溃、数据丢失,新手只在测试环境操作分区。
  2. fstab配置致命坑
    :修改/etc/fstab后,必须执行sudo mount -a测试,无报错再重启,配置错误会导致系统无法开机。
  3. 永久挂载推荐用UUID
    :不要用/dev/sda1这种设备名,服务器重启、新增磁盘后,设备名可能会变化,导致挂载失败,UUID是唯一不变的。
  4. 挂载点注意事项
    :挂载点必须提前创建,尽量用空目录;非空目录挂载后,原有内容会被隐藏,卸载后才会恢复,不要用系统关键目录做挂载点。
  5. 磁盘满了的两种情况
    :不仅要看df -h的磁盘空间使用率,还要看df -i的inode使用率,inode满了也会导致无法创建新文件。
  6. rm删除文件空间不释放
    :不要直接rm正在被进程写入的日志文件,会导致空间不释放,正确做法是用> 文件名清空文件,或者先停进程再删文件。
  7. 格式化不可逆
    :格式化会清空分区里的所有数据,执行前一定要确认分区名正确,不要格式化系统分区。

六、常用命令速查表(建议收藏,日常直接查)

# 磁盘信息查看lsblk                    # 直观查看磁盘、分区、挂载点结构sudo fdisk -l            # 查看磁盘分区详细信息blkid                    # 查看分区UUID、文件系统类型# 磁盘使用率查看df -h                    # 查看所有分区的磁盘使用情况(人类可读)df -i                    # 查看分区inode使用情况du -sh *                 # 查看当前目录下所有文件/目录的大小du -sh 目录名            # 查看指定目录的总大小du -h --max-depth=1 /    # 查看根目录下一级目录的大小du -sh * | sort -hr | head -10  # 找出当前目录最大的10个文件/目录# 分区与格式化sudo gdisk /dev/sdb      # GPT分区表分区工具sudo fdisk /dev/sdb      # MBR分区表分区工具sudo mkfs.xfs /dev/sdb1  # 格式化为xfs文件系统sudo mkfs.ext4 /dev/sdb1 # 格式化为ext4文件系统# 挂载与卸载sudo mount /dev/sdb1 /data  # 临时挂载分区到指定目录sudo umount /data           # 卸载分区sudo mount -a               # 加载/etc/fstab配置,测试永久挂载是否正确sudo vim /etc/fstab         # 编辑永久挂载配置文件

七、本篇总结

  1. Linux磁盘管理和Windows的核心区别是:Linux以目录树为核心,所有磁盘分区必须挂载到目录上才能使用,核心操作是挂载。
  2. 磁盘查看核心命令:lsblk看磁盘分区结构,df看分区整体使用率,du看文件/目录大小,三者互补。
  3. 新增磁盘的完整流程:确认磁盘→分区→格式化→创建挂载点→挂载→配置永久生效。
  4. 永久挂载必须修改/etc/fstab,推荐用UUID,修改后必须用mount -a测试,避免系统无法启动。
  5. 磁盘操作有风险,分区、格式化命令一定要确认设备名,切勿在生产环境随意操作,先测试再执行。

文 / 零距技术仓记录每一次真实的折腾 (#^.^#)🚀 想看到更多实用折腾技巧?👉 先关注💬 评论区说说你的经历或想看的内容👍 点赞表示支持🔁 顺手分享给也在折腾的人,让大家都少踩坑 😎

最新文章

随机文章