学习主题:Linux 文件系统基本管理 + 硬盘分区管理

📅 2026/7/31 6:06:43 👁️ 阅读次数 📝 编程学习
学习主题:Linux 文件系统基本管理 + 硬盘分区管理

Linux速成记 - 文件系统与硬盘分区

学习主题:Linux 文件系统基本管理 + 硬盘分区管理


一、复习和预习

昨天课堂内容回顾

  • 源码安装应用
  • 自建仓库
  • 计划任务
  • 进程调度

今天课前练习

课前测试:回顾上节课学习的源码安装、YUM仓库配置等内容。


二、Linux 文件系统基本管理

2.1 识别文件系统和设备

Linux 中的设备

在 Linux 中,对存储设备的访问由特殊类型文件——**块设备(block)**提供。挂载块设备前,必须先使用文件系统对其进行格式化。

块设备文件存储在/dev目录中,由操作系统自动创建。

常见块设备类型:

接口类型设备名称示例
SATA/SAS/USB/SCSI/dev/sda/dev/sdb
virtio-blk(虚拟磁盘)/dev/vda/dev/vdb
NVMe SSD/dev/nvme0n1/dev/nvme1n1
SD/MMC/eMMC/dev/mmcblk0/dev/mmcblk1
设备分区命名规则

通常不会将整个存储设备格式化为一个文件系统,而是将硬盘划分为多个逻辑单元(分区)。

[gg@centos7 ~ 16:08:47]$ ls /dev/sda* /dev/sda /dev/sda1 /dev/sda2 [gg@centos7 ~ 16:09:12]$ ls /dev/vda* /dev/vda /dev/vda1 /dev/vda2 [gg@centos7 ~ 16:10:35]$ ls /dev/nvme0n1* /dev/nvme0n1 /dev/nvme0n1p1 /dev/nvme0n1p2

分区命名规律:

  • /dev/sda第一个分区为/dev/sda1,第二个为/dev/sda2
  • /dev/vda/dev/vda1/dev/vda2
  • /dev/nvme0n1/dev/nvme0n1p1/dev/nvme0n1p2
Linux 文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。

[gg@centos7 ~ 16:12:08]$ df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 xfs 104857600 30720000 74137600 29% / /dev/sda2 xfs 52428800 1024000 51404800 2% /data /dev/sdb1 ext4 20971520 32 19820000 1% /mnt/backup

管理文件系统需要关注:

  1. 确定存储设备的空间使用情况
  2. 存储设备发生故障时,知道哪些文件系统存在风险
  3. 将文件系统挂载到空目录(挂载点

2.2 查看设备和文件系统

lsblk 命令 - 查看块设备

作用:查看块设备使用情况

[gg@centos7 ~ 16:13:45]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 100G 0 part / ├─sda2 8:2 0 50G 0 part /data └─sda3 8:3 0 50G 0 part [SWAP] sdb 8:16 0 500G 0 disk └─sdb1 8:17 0 500G 0 part sr0 11:0 1 1024M 0 rom

字段说明:

字段说明
NAME块设备名
MAJ:MIN主/次设备号
RM是否为可移动设备(1=是)
SIZE设备容量
RO是否为只读(0=否)
TYPE磁盘/分区/ROM
MOUNTPOINT挂载点
df 命令 - 查看文件系统使用情况

作用:查看文件系统使用情况

[gg@centos7 ~ 16:15:22]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 30G 71G 29% / /dev/sda2 50G 2.0G 49G 4% /data tmpfs 3.9G 0 3.9G 0% /dev/shm
du 命令 - 查看目录占用空间

作用:查看目录和文件占用磁盘空间大小

[gg@centos7 ~ 16:17:08]$ du -sh /var/log/* 12M /var/log/audit 8.0K /var/log/boot.log 4.0M /var/log/lastlog 0 /var/log/maillog 4.0K /var/log/messages

案例:查找哪个文件占用大量空间

[gg@centos7 ~ 16:18:35]$ du -h --max-depth=1 / | sort -rh | head -20 48G / 18G /var 12G /usr 8.5G /home 5.2G /opt 2.1G /data ...

💡Linux 思想:尽可能使用各种小工具完成复杂任务,每个小工具专注于特定功能(KISS 原则)。

2.3 挂载和卸载文件系统

环境准备
[gg@centos7 ~ 16:20:12]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 100G 0 part / └─sda2 8:2 0 50G 0 part /data sdb 8:16 0 500G 0 disk └─sdb1 8:17 0 500G 0 part
挂载文件系统 - mount 命令

当需要使用文件系统时,通过mount命令挂载。

语法:mount [选项] 设备 挂载点

常用选项:

  • -t vfstype:指明文件系统类型
  • -o options:指明挂载选项
  • device:设备路径,可通过 UUID、LABEL 等方式指定
[gg@centos7 ~ 16:22:45]$ mkdir -p /mnt/data [gg@centos7 ~ 16:23:18]$ mount -t xfs /dev/sdb1 /mnt/data [gg@centos7 ~ 16:23:52]$ df -h | grep sdb1 /dev/sdb1 500G 32M 500G 1% /mnt/data

查看系统当前所有挂载:

[gg@centos7 ~ 16:25:30]$ mount | grep /dev/sdb1 /dev/sdb1 on /mnt/data type xfs (rw,relatime,seclabel)
卸载文件系统 - umount 命令

当文件系统不再使用时,通过umount命令卸载。

语法:umount 设备或挂载点

[gg@centos7 ~ 16:27:05]$ umount /mnt/data [gg@centos7 ~ 16:27:38]$ df -h | grep sdb1 # 无输出,说明已卸载
卸载失败处理
lsof 命令 - 查看打开的文件

作用:查看系统打开的文件

[gg@centos7 ~ 16:29:12]$ lsof /mnt/data COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 12345 gg cwd DIR 8,17 4096 64 /mnt/data vim 12346 gg cwd DIR 8,17 4096 64 /mnt/data/test.txt

常用选项:

  • -i:查看打开的 Internet 文件(如-i :80
  • -p pid:根据进程 PID 查找
  • -u uid:根据用户 UID 查找
fuser 命令 - 识别进程打开的文件

作用:识别哪些进程正在使用文件

[gg@centos7 ~ 16:31:48]$ fuser -v /mnt/data USER PID ACCESS COMMAND /mnt/data: root 12345 ..c.. bash gg 12346 ..c.. vim

常用选项:

  • -k:杀死访问文件的进程
  • -i:交互模式杀进程
  • -m:列出文件系统被哪些程序使用

终止进程后再次卸载:

[gg@centos7 ~ 16:33:25]$ fuser -km /mnt/data /mnt/data: 12345c 12346c [gg@centos7 ~ 16:34:02]$ umount /mnt/data [gg@centos7 ~ 16:34:15]$ df -h | grep sdb1 # 卸载成功

2.4 挂载特殊文件系统

案例1:Linux 挂载 NTFS 格式 U 盘

思路:默认情况下 Linux 不识别 NTFS 格式,需要安装相应模块。

[gg@centos7 ~ 16:35:48]$ yum install -y ntfs-3g Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com ... Complete!
[gg@centos7 ~ 16:37:15]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk sdb 8:16 1 16G 0 disk # U盘 └─sdb1 8:17 1 16G 0 part [gg@centos7 ~ 16:38:42]$ mkdir -p /mnt/usb [gg@centos7 ~ 16:39:18]$ mount -t ntfs-3g /dev/sdb1 /mnt/usb [gg@centos7 ~ 16:39:55]$ ls /mnt/usb 学习资料 工作文档 图片.zip
案例2:Linux 挂载 exfat 格式 U 盘
[gg@centos7 ~ 16:41:30]$ yum install -y exfat-utils fuse-exfat ... Complete! [gg@centos7 ~ 16:43:08]$ mount -t exfat /dev/sdb1 /mnt/usb [gg@centos7 ~ 16:43:45]$ ls /mnt/usb 视频 音频 文档
案例3:构建基于 ISO 文件的 YUM 仓库

需求:client 想安装图形化,但仓库来源于 Internet,希望使用本地仓库以提高速度。

操作思路:

  1. server 上部署并配置 Nginx 服务
  2. server 上挂载 ISO 文件到 Nginx 服务网站目录
  3. client 创建指向 server 上 web 站点的仓库
  4. 测试
[gg@centos7 ~ 16:45:20]$ # 客户端测试 [gg@centos7 ~ 16:45:55]$ cat /etc/yum.repos.d/local.repo [local] name=Local Repo baseurl=http://server.example.com/repo gpgcheck=0 enabled=1 [gg@centos7 ~ 16:46:32]$ yum repolist repo id repo name status local Local Repo enabled: 5,145

2.5 查找系统中文件

locate 命令

作用:根据文件名在 mlocate 数据库中查找文件

[gg@centos7 ~ 16:48:10]$ # 先更新数据库 [gg@centos7 ~ 16:48:25]$ updatedb [gg@centos7 ~ 16:49:02]$ locate nginx.conf /etc/nginx/nginx.conf /etc/nginx/conf.d/default.conf /usr/lib/nginx/nginx.conf

常用选项:

  • -b, --basename:只匹配文件名部分
  • -i, --ignore-case:忽略大小写
  • -c, --count:只显示匹配数量
  • -r, --regexp:使用正则表达式
find 命令

作用:在本地文件系统中实时查找文件

语法find [路径] [条件] [动作]

根据文件名查找
[gg@centos7 ~ 16:50:38]$ find /etc -name "*.conf" -type f /etc/nginx/nginx.conf /etc/yum.conf /etc/ssh/sshd_config ...
根据文件类型查找
[gg@centos7 ~ 16:52:15]$ find /var/log -type f -name "*.log" /var/log/messages /var/log/secure /var/log/audit/audit.log ...

文件类型:

  • f:普通文件
  • d:目录
  • l:符号链接
  • b:块设备
  • c:字符设备
根据文件所有者查找
[gg@centos7 ~ 16:53:52]$ find /home -user gg -type f /home/gg/.bashrc /home/gg/.bash_history /home/gg/notes.txt [gg@centos7 ~ 16:55:28]$ find /home -nouser -type f # 查找不属于任何用户的文件
根据文件权限查找
[gg@centos7 ~ 16:57:05]$ find /usr/bin -perm /o+w -type f # 查找其他用户可写的文件 [gg@centos7 ~ 16:58:42]$ find / -perm -4000 -type f /usr/bin/sudo /usr/bin/passwd /usr/bin/newgrp /usr/bin/chage /usr/bin/gpasswd
根据文件大小查找
[gg@centos7 ~ 17:00:18]$ find /var -size +100M -type f /var/log/audit/audit.log /var/lib/mysql/ibdata1

单位:c(字节)、k(KiB)、M(MiB)、G(GiB)

根据修改时间查找
[gg@centos7 ~ 17:01:55]$ find /etc -mtime -7 -type f # 查找7天内修改过的文件 [gg@centos7 ~ 17:02:30]$ find /tmp -mmin -60 -type f # 查找60分钟内修改过的文件
根据硬链接数查找
[gg@centos7 ~ 17:03:08]$ find / -links +2 -type f # 查找硬链接数超过2的文件
多条件组合
[gg@centos7 ~ 17:04:45]$ find /home -name "*.txt" -user gg -size +10k # 查找gg用户的大于10KB的txt文件

逻辑运算符:

  • -a或空格:逻辑与
  • -o:逻辑或
  • !:逻辑非
对找到的文件执行动作
[gg@centos7 ~ 17:06:22]$ find /tmp -name "*.log" -delete # 删除tmp目录下所有log文件 [gg@centos7 ~ 17:07:00]$ find /home -name "*.bak" -ls # 显示找到的备份文件详情 [gg@centos7 ~ 17:07:38]$ find /var/log -name "*.log" -exec gzip {} \; # 压缩所有log文件

三、Linux 硬盘分区管理

3.1 硬盘为什么要分区?

  1. 将操作系统文件与用户文件分隔开,避免应用数据太多撑满系统盘
  2. 限制应用或用户的可用空间
  3. 一个分区出现逻辑损坏,不影响其他分区
  4. 用于创建交换分区
  5. 限制磁盘空间使用,提高诊断和备份性能
  6. 便于定制文件系统(如小文件用 xfs,大文件用 ext4)

3.2 MBR 分区方案

自 1982 年以来,主启动记录(MBR-Master Boot Record)分区方案指定了在运行 BIOS 固件的系统上如何对磁盘进行分区。

MBR 特点:

  • 支持最多4 个主分区
  • 使用扩展分区和逻辑分区可创建最多15 个分区
  • 逻辑分区可以格式化,扩展分区不能格式化
  • 单分区最大2 TiB
主引导扇区结构
┌─────────────────────────────────────┐ │ 主引导扇区 (512字节) │ ├─────────────────────────────────────┤ │ 引导程序 (446字节) │ ← 硬盘启动时将控制权转给操作系统 ├─────────────────────────────────────┤ │ 磁盘分区表 (DPT, 64字节) │ ← 4个分区表项,每个16字节 ├─────────────────────────────────────┤ │ 结束标志 (2字节): AA55 │ ← 标识有效引导记录 └─────────────────────────────────────┘

3.3 fdisk 工具

作用:管理采用 MBR 分区方案的磁盘

查看分区表
[gg@centos7 ~ 17:09:15]$ fdisk -l /dev/sdb Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8a4b2c1d Device Boot Start End Sectors Size Id Type /dev/sdb1 * 2048 526335 524288 256M 83 Linux /dev/sdb2 526336 4194307038 4193780703 2T 83 Linux
创建分区(交互式)
[gg@centos7 ~ 17:11:42]$ fdisk /dev/sdb Welcome to fdisk (util-linux 2.30.2). Changes will remain in memory only, until you decide to write them. Command (m for help): m Help: DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle dos compatibility flag Generic d delete a partition F list free unpartitioned space l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table Misc m print this menu u change display/entry units x extra functionality (experts only) Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-1048575999, default 2048): 2048 Last sector, +sectors or +size{K,M,G,T,P} (2048-1048575999, default 1048575999): +100G Created partition 1 of type 'Linux' and of size 100 GiB. Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
通知内核重新读取分区表
[gg@centos7 ~ 17:13:08]$ partprobe /dev/sdb [gg@centos7 ~ 17:13:42]$ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 500G 0 disk └─sdb1 8:17 0 100G 0 part
创建扩展分区和逻辑分区
[gg@centos7 ~ 17:15:20]$ fdisk /dev/sdb ... Command (m for help): n Partition type: p primary (3 primary, 0 extended, 1 free) e extended (for extended partitions) Select (default e): e Selected partition 4 First sector (2097154050-1048575999, default 2097154050): Last sector, +sectors or +size{K,M,G,T,P}: +200G Command (m for help): n All logical partitions are used? ... Command (m for help): n First sector (2097154050-629145600, default 2097154050): Last sector, +sectors or +size{K,M,G,T,P}: +50G Command (m for help): w
非交互方式管理
[gg@centos7 ~ 17:17:58]$ echo -e "n\np\n\n\n+50G\nw" | fdisk /dev/sdb # 创建一个50G的主分区 [gg@centos7 ~ 17:19:35]$ echo -e "d\n2\nw" | fdisk /dev/sdb # 删除第2个分区

3.4 GPT 分区方案

GPT(GUID Partition Table)是运行统一可扩展固件接口(UEFI)固件系统上硬盘分区表的标准。

GPT 特点:

  • 支持最大18 ZiB(约 18 亿太字节)的分区
  • 支持最多128 个分区
  • 提供分区表信息的冗余备份
GPT 分区表结构
LBA0: 保护性MBR ├── 第一部分:启动引导程序(446字节) └── 第二部分:特殊标识符 0xEE LBA1: GPT表头记录 ├── 记录分区表位置和大小 ├── 备份GPT分区位置(最后34个LBA) └── CRC32校验码 LBA2-33: 分区记录区 ├── 每个LBA提供4组分区记录 ├── 默认4×32=128组分区记录 └── 每组128字节,含64位扇区总数

3.5 gdisk 工具

作用:管理采用 GPT 分区方案的磁盘,用于管理超过 2T 的磁盘

转换分区表方案
[gg@centos7 ~ 17:21:12]$ gdisk /dev/sdb GPT fdisk (gdisk) version 0.8.10 Partition table scan: MBR: MBR only BSD: not present APM: not present GPT: not present Found valid MBR and corrupt GPT. Which do you want to use? (Your choice): 1. GPT 2. MBR 3. Create new GPT partition table Command (? for help): n
创建分区
Command (? for help): n Partition number (1-128, default 1): 1 First sector (2048-1048575999, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-1048575999, default 1048575999): +100G
查看分区详细信息
Command (? for help): i Partition number (1-128): 1 Item Value Partition number: 1 Unique GUID: 550e8400-e29b-41d4-a716-446655440000 Label: Linux Size: 100.0 GiB (209715200 sectors) Type: Linux filesystem Type GUID: 0FC6DA94-5DDA-4D38-95E7-2A5A3C2C5A2E First sector: 2048 Last sector: 209717247 ...

3.6 wipefs 工具

作用:查看和清除磁盘管理信息

[gg@centos7 ~ 17:22:50]$ wipefs -a /dev/sdb /dev/sdb: 2 bytes were erased at offset 0x000001fe (dos): 0000: 55 aa [gg@centos7 ~ 17:23:25]$ wipefs -n /dev/sdb # 查看将要擦除的内容,不实际执行

⚠️注意:数据无价,操作需谨慎,最好提前备份!

3.7 parted 工具

作用:同时支持 MBR 和 GPT 分区方案,支持交互式和非交互式操作

交互式操作
[gg@centos7 ~ 17:24:02]$ parted /dev/sdb GNU Parted 3.1 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) p Model: ATA VIRTUAL DISK (scsi) Disk /dev/sdb: 500GiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 525MB 524MB ext4 2 525MB 1050MB 524MB ext4 (parted) unit MiB (parted) mklabel gpt Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost! Do you want to continue? Fix/Ignore/Cancel? Fix (parted) mkpart primary xfs 1MiB 100% (parted) set 1 name data (parted) quit
管理 MBR 磁盘
[gg@centos7 ~ 17:26:40]$ parted -s /dev/sdb mklabel msdos [gg@centos7 ~ 17:27:18]$ parted -s /dev/sdb mkpart primary xfs 1MiB 100%
非交互式操作
[gg@centos7 ~ 17:28:55]$ parted -s /dev/sdb mkpart primary xfs 1MiB 100% [gg@centos7 ~ 17:29:32]$ parted -s /dev/sdb unit GiB print

3.8 文件系统持久化挂载

环境准备
[gg@centos7 ~ 17:30:10]$ parted /dev/sdb mklabel gpt [gg@centos7 ~ 17:30:45]$ parted -s /dev/sdb mkpart primary xfs 1MiB 100% [gg@centos7 ~ 17:31:22]$ mkfs.xfs /dev/sdb1 ... meta-data=/dev/sdb1 isize=256 agcount=4, agsize=3276800 blks ...
持久化挂载 - /etc/fstab

当服务器重启时,系统不会自动挂载文件系统。为了确保系统启动时自动挂载,需要在/etc/fstab文件中添加条目。

[gg@centos7 ~ 17:32:58]$ cat /etc/fstab # /etc/fstab # Created by anaconda on Tue Jul 25 14:32:18 2023 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) for additional info # UUID=8e8e8e8e-8e8e-8e8e-8e8e-8e8e8e8e8e8e / xfs defaults 0 0 UUID=6e6e6e6e-6e6e-6e6e-6e6e-6e6e6e6e6e6e /boot xfs defaults 0 0 UUID=4e4e4e4e-4e4e-4e4e-4e4e-4e4e4e4e4e4e swap swap defaults 0 0 # 新增挂载点 UUID=abc12345-def67890-abc12345-def67890-abc12345-def67890 /data xfs defaults 0 0

/etc/fstab 六个字段:

字段说明
第1字段设备(UUID 或设备路径)
第2字段挂载点目录
第3字段文件系统类型(xfs、ext4 等)
第4字段挂载选项(defaults 为常用选项)
第5字段dump 备份标志(0=不备份)
第6字段fsck 检查顺序(0=不检查,1=根文件系统,2=其他)
添加持久化挂载
[gg@centos7 ~ 17:34:35]$ blkid /dev/sdb1 /dev/sdb1: UUID="abc12345-def67890-abc12345-def67890-abc12345-def67890" TYPE="xfs" [gg@centos7 ~ 17:35:12]$ mkdir -p /data [gg@centos7 ~ 17:35:48]$ echo 'UUID=abc12345-def67890-abc12345-def67890-abc12345-def67890 /data xfs defaults 0 0' >> /etc/fstab [gg@centos7 ~ 17:36:25]$ mount -a [gg@centos7 ~ 17:37:02]$ df -h | grep data /dev/sdb1 500G 32M 500G 1% /data
取消持久化挂载
[gg@centos7 ~ 17:38:38]$ # 删除 /etc/fstab 中对应条目 [gg@centos7 ~ 17:39:15]$ vim /etc/fstab [gg@centos7 ~ 17:39:52]$ umount /data

四、综合案例:文件系统空间不足

情况1:大量大文件占用空间

原因:大文件占用大量空间

解决方法:找到文件后删除

[gg@centos7 ~ 17:41:28]$ du -h --max-depth=1 /var/log | sort -rh | head -5 48G /var/log 25G /var/log/audit 15G /var/log/messages 5G /var/log/secure 3G /var/log/nginx [gg@centos7 ~ 17:43:05]$ find /var/log -name "*.log" -size +1G /var/log/audit/audit.log /var/log/messages [gg@centos7 ~ 17:44:42]$ > /var/log/audit/audit.log [gg@centos7 ~ 17:45:20]$ > /var/log/messages [gg@centos7 ~ 17:45:55]$ rm -f /var/log/audit/audit.log /var/log/messages

情况2:删除文件后空间未释放

原因:被删除的文件仍然有程序在使用

解决方法:找到占用程序并终止

[gg@centos7 ~ 17:47:30]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 95G 5G 95% / [gg@centos7 ~ 17:48:08]$ lsof | grep deleted rsyslogd 12345 root 12w REG 8,1 26843545600 123 /var/log/messages (deleted) [gg@centos7 ~ 17:49:45]$ kill 12345 [gg@centos7 ~ 17:50:22]$ df -h /dev/sda1 100G 70G 30G 70% /

💡建议:清理大文件时,先使用重定向清空文件内容,再删除文件:

[gg@centos7 ~ 17:51:00]$ > /path/to/bigfile.log [gg@centos7 ~ 17:51:35]$ rm -f /path/to/bigfile.log

情况3:大量小文件占用空间

原因:文件系统 inode 使用完了

解决方法:删除大量小文件或将它们备份到其他地方

[gg@centos7 ~ 17:53:10]$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 2621440 2621440 0 100% / [gg@centos7 ~ 17:54:48]$ find /tmp -type f -mtime +30 | xargs rm -f [gg@centos7 ~ 17:55:25]$ find /var/spool -type f | wc -l 15000 [gg@centos7 ~ 17:56:02]$ tar czf /backup/tmp_files.tar.gz /tmp [gg@centos7 ~ 17:56:40]$ find /tmp -type f -mtime +7 -delete

五、思考:如何彻底擦除硬盘数据?

逻辑破坏

用 0 填充所有数据:

[gg@centos7 ~ 17:58:18]$ dd if=/dev/zero of=/dev/sdb bs=1M count=1024

物理破坏

消磁、物理粉碎等方式


六、课后作业

  1. 完成课堂笔记中所有实验
  2. 梳理今天的课堂笔记,写到博客中
  3. 预习:Linux 文件权限管理(下一章内容)

知识总结

常用命令速查

命令用途
lsblk查看块设备使用情况
df -h查看文件系统使用情况
du -sh查看目录占用空间
mount挂载文件系统
umount卸载文件系统
lsof查看打开的文件
fuser识别进程打开的文件
locate根据文件名快速查找
find实时查找文件
fdiskMBR 分区管理
gdiskGPT 分区管理
parted通用分区管理
wipefs清除磁盘信息
partprobe通知内核重新读取分区表

文件系统管理流程

1. 识别设备 → lsblk、fdisk -l ↓ 2. 创建分区 → fdisk/gdisk/parted ↓ 3. 格式化文件系统 → mkfs.xfs / mkfs.ext4 ↓ 4. 创建挂载点 → mkdir /mnt/data ↓ 5. 挂载文件系统 → mount /dev/sdb1 /mnt/data ↓ 6. 持久化配置 → /etc/fstab ↓ 7. 验证挂载 → df -h

排错技巧

问题原因解决方法
umount 失败有进程在使用lsof/fuser 找到并终止
空间不足大文件占用找到大文件删除
inode 用完小文件太多删除或归档小文件
分区表不更新内核未重新读取partprobe 或重启
新分区不显示分区表未生成partprobe /dev/sdb