【云计算学习之路】学习Centos7系统:Linux磁盘管理

【云计算学习之路】学习Centos7系统:Linux磁盘管理

    • 一、Linux下磁盘简介
      • [1.1 磁盘物理结构与逻辑抽象](#1.1 磁盘物理结构与逻辑抽象)
      • [1.2 磁盘容量计算](#1.2 磁盘容量计算)
      • [1.3 磁盘分区类型](#1.3 磁盘分区类型)
    • 二、硬盘Inode与Block详解
      • [2.1 Block(数据块)详解](#2.1 Block(数据块)详解)
      • [2.2 Inode(索引节点)详解](#2.2 Inode(索引节点)详解)
      • [2.3 Inode与Block的核心关系](#2.3 Inode与Block的核心关系)
    • 三、硬链接与软链接介绍
    • 四、Linux下磁盘实战操作命令
      • [4.1 查看磁盘信息命令](#4.1 查看磁盘信息命令)
        • [1. lsblk:查看磁盘及分区信息(最常用)](#1. lsblk:查看磁盘及分区信息(最常用))
        • [2. fdisk \-l:查看磁盘分区表详细信息](#2. fdisk -l:查看磁盘分区表详细信息)
        • [3. df \-h:查看磁盘挂载及空间使用情况](#3. df -h:查看磁盘挂载及空间使用情况)
      • [4.2 磁盘分区命令(fdisk/parted)](#4.2 磁盘分区命令(fdisk/parted))
        • [1. fdisk分区(MBR,适用于≤2TB磁盘)](#1. fdisk分区(MBR,适用于≤2TB磁盘))
        • [2. parted分区(GPT,适用于\>2TB磁盘)](#2. parted分区(GPT,适用于>2TB磁盘))
      • [4.3 磁盘格式化命令(mkfs)](#4.3 磁盘格式化命令(mkfs))
    • 五、Linux下磁盘MOUNT命令详解
      • [5.1 mount命令基础语法](#5.1 mount命令基础语法)
      • [5.2 临时挂载(重启失效)](#5.2 临时挂载(重启失效))
      • [5.3 永久挂载(重启生效)](#5.3 永久挂载(重启生效))
        • [1. /etc/fstab文件格式](#1. /etc/fstab文件格式)
        • [2. 永久挂载实操步骤](#2. 永久挂载实操步骤)
      • [5.4 常见挂载问题排查](#5.4 常见挂载问题排查)
    • 六、Linux下磁盘故障常见修复方法
    • 七、总结与学习建议

作为云计算学习的基础,Linux系统的磁盘管理是运维工作的核心技能之一。在CentOS7系统中,磁盘管理涉及磁盘识别、分区、格式化、挂载、故障排查等多个环节,而Inode、Block、软硬链接等概念则是理解磁盘存储逻辑的关键。本文将从基础概念入手,结合实操命令,详细讲解CentOS7下的磁盘管理全流程,适合云计算新手入门学习,助力快速上手。

一、Linux下磁盘简介

在Linux系统中,所有硬件设备都被抽象为文件,磁盘也不例外------无论是本地硬盘(机械硬盘HDD、固态硬盘SSD)、U盘,还是虚拟磁盘,都会被识别为一个"块设备文件",存储在/dev目录下,例如/dev/sda/dev/sdb(SATA接口磁盘)、/dev/vda(KVM虚拟磁盘)。

1.1 磁盘物理结构与逻辑抽象

磁盘的物理结构由盘片、磁头、磁道、扇区、柱面组成,其中扇区是磁盘最小的物理存储单位(默认512字节),而多个扇区会组成一个逻辑块(Block),用于操作系统高效管理数据。从逻辑层面,Linux会将磁盘抽象为一维的扇区数组,通过LBA(逻辑块地址)寻址,屏蔽底层硬件差异,简化存储管理逻辑,无需关注磁头、柱面等硬件细节即可实现数据访问。

1.2 磁盘容量计算

磁盘的实际容量可通过物理参数计算得出,公式如下:
磁盘容量 = 磁头数 × 柱面数(磁道数) × 每磁道扇区数 × 每扇区字节数(默认512字节)

示例:一个磁盘有2个盘片(4个盘面)、1024个柱面、每磁道63个扇区,其容量计算为:4 × 1024 × 63 × 512 = 64MB。需要注意的是,厂商通常按1000进制计算容量(1GB=1000MB),而系统按1024进制计算(1GB=1024MB),因此实际显示的磁盘容量会略小于厂商标注值。

1.3 磁盘分区类型

CentOS7支持两种分区表格式,对应不同的磁盘容量和功能需求:

  • MBR(Master Boot Record):传统分区表,支持最大磁盘容量2TB,最多4个主分区,或3个主分区+1个扩展分区(扩展分区内可分多个逻辑分区),兼容性强,适合小容量磁盘。

  • GPT(GUID Partition Table):新型分区表,支持最大磁盘容量18EB,无主分区数量限制(最多128个分区),支持UEFI启动,适合大容量磁盘和虚拟化场景,是CentOS7推荐的分区表格式。

二、硬盘Inode与Block详解

Inode(索引节点)和Block(数据块)是Linux文件系统的核心组成部分,二者分工明确、协同工作,决定了文件的存储和访问逻辑------Inode负责记录文件的"元数据",Block负责存储文件的"实际内容",理解二者的关系是掌握Linux磁盘管理的关键。

2.1 Block(数据块)详解

Block是Linux文件系统中实际存储文件内容的最小逻辑单位,相当于"文件存储的容器",其大小由文件系统格式化时指定(常见大小为4KB,也可设置为1KB、2KB、8KB),不同大小的Block适用于不同场景:

  • 小Block(1KB):适合存储大量小文件(如日志文件),节省磁盘空间,但会增加磁盘IO(需读取多个Block);

  • 大Block(8KB):适合存储大文件(如视频、压缩包),减少IO次数,提升读写效率,但会浪费空间(即使文件小于1个Block,也会占用1个Block)。

【实操示例】:查看CentOS7系统中某个分区的Block大小,使用tune2fs \-l /dev/sda1 \| grep \&\#34;Block size\&\#34;命令,输出结果如下(以4KB为例):

bash 复制代码
[root@localhost ~]# tune2fs -l /dev/sda1 | grep "Block size"
Block size:               4096

2.2 Inode(索引节点)详解

Inode是文件的"身份标识",每个文件(包括目录)都对应一个唯一的Inode,其核心作用是存储文件的元数据,不存储文件名称和实际内容。Inode包含的元数据信息如下:

  • 文件的类型(普通文件、目录、链接、设备文件等);

  • 文件的权限(r、w、x,分所有者、所属组、其他用户);

  • 文件的所有者和所属组(UID、GID);

  • 文件的创建时间、修改时间、访问时间(ctime、mtime、atime);

  • 文件的大小;

  • 指向文件内容的指针(记录存储该文件的Block位置)。

关键特性:Linux系统识别文件时,先通过文件名找到对应的Inode,再通过Inode中的指针找到存储文件内容的Block,最终读取文件------也就是说,文件名只是Inode的"别名",核心识别依据是Inode编号。

【实操示例】:查看文件的Inode编号,使用ls \-i命令,输出结果如下:

bash 复制代码
[root@localhost ~]# ls -i test.txt
131072 test.txt  # 131072即为test.txt的Inode编号

2.3 Inode与Block的核心关系

Inode与Block是"指引与存储"的关系,用户访问文件的完整流程如下:

  1. 用户输入文件名(如cat test.txt),系统先查找当前目录的Inode;

  2. 从目录Inode中,根据文件名找到目标文件的Inode编号;

  3. 通过Inode编号找到目标文件的Inode,读取其中记录的Block指针;

  4. 根据Block指针,定位到存储文件内容的所有Block,拼接后返回给用户。

补充:磁盘格式化时,会预先划分出Inode区和Block区------Inode区的大小固定,若Inode耗尽(即使磁盘有剩余空间),也无法创建新文件(常见于大量小文件场景)。

三、硬链接与软链接介绍

链接(Link)是Linux系统中实现"文件共享"的重要方式,分为硬链接(Hard Link)和软链接(Symbolic Link,又称符号链接),二者的底层实现基于Inode,核心差异在于是否共享Inode,适用场景也不同。

3.1 硬链接(Hard Link)

硬链接是"文件的别名",本质是为同一个Inode创建多个文件名------多个硬链接共享同一个Inode和Block,修改任意一个硬链接的内容,其他硬链接会同步变化(因为指向的是同一个Block)。

核心特性:
  • 硬链接与原文件的Inode编号相同,共享所有元数据和Block;

  • 删除原文件后,硬链接依然有效(只要还有一个硬链接存在,文件内容就不会被删除);

  • 不支持跨文件系统(因为Inode是文件系统内的唯一标识,不同文件系统的Inode编号可重复);

  • 不支持链接目录(避免出现目录循环引用,普通用户无法创建,超级用户也不推荐);

  • 创建硬链接会增加Inode的"链接数"(通过ls \-l命令的第二列查看)。

【实操示例】:创建硬链接
bash 复制代码
# 1. 创建原文件
[root@localhost ~]# echo "test hard link" > test.txt
# 2. 创建硬链接(命令格式:ln 原文件 硬链接名)
[root@localhost ~]# ln test.txt test_hard.link
# 3. 查看Inode编号和链接数(第二列2表示链接数为2)
[root@localhost ~]# ls -li
total 8
131072 -rw-r--r--. 2 root root 16 May 21 10:30 test.txt
131072 -rw-r--r--. 2 root root 16 May 21 10:30 test_hard.link
# 4. 修改硬链接内容,原文件同步变化
[root@localhost ~]# echo "modify hard link" >> test_hard.link
[root@localhost ~]# cat test.txt
test hard link
modify hard link

3.2 软链接(Symbolic Link)

软链接又称"符号链接",相当于Windows系统的"快捷方式"------软链接是一个独立的文件,有自己的Inode和Block,其Block中存储的不是文件内容,而是原文件的路径(绝对路径或相对路径)。

核心特性:
  • 软链接有自己独立的Inode编号,与原文件的Inode无关;

  • 依赖原文件:若删除原文件,软链接会失效(变为"悬空链接",ls命令显示为红色);

  • 支持跨文件系统(只需指定原文件的正确路径即可);

  • 支持链接目录(常用场景:简化目录访问路径,如ln \-s /usr/local/java /java);

  • 创建软链接不会改变原文件的链接数。

【实操示例】:创建软链接
bash 复制代码
# 1. 基于上述原文件,创建软链接(命令格式:ln -s 原文件 软链接名)
[root@localhost ~]# ln -s test.txt test_soft.link
# 2. 查看Inode编号和文件类型(l表示软链接,Inode编号与原文件不同)
[root@localhost ~]# ls -li
total 8
131072 -rw-r--r--. 2 root root 32 May 21 10:35 test.txt
131072 -rw-r--r--. 2 root root 32 May 21 10:35 test_hard.link
131073 lrwxrwxrwx. 1 root root 8 May 21 10:36 test_soft.link -> test.txt
# 3. 删除原文件,软链接失效
[root@localhost ~]# rm -f test.txt
[root@localhost ~]# ls -l test_soft.link
lrwxrwxrwx. 1 root root 8 May 21 10:36 test_soft.link -> test.txt  # 红色显示,悬空链接

3.3 硬链接与软链接核心对比

对比维度 硬链接 软链接
Inode编号 与原文件相同 独立的新Inode
跨文件系统 不支持 支持
链接目录 普通用户不支持 支持
原文件删除后 仍可访问(需有其他硬链接) 失效(悬空链接)
存储内容 直接指向数据Block 存储原文件路径
链接计数 增加原文件的链接数 不影响原文件链接数
创建命令 ln 原文件 硬链接名 ln -s 原文件 软链接名

四、Linux下磁盘实战操作命令

CentOS7下的磁盘操作主要围绕"查看磁盘信息、分区、格式化"三个核心环节,以下是高频实战命令,每个命令均搭配示例和说明,便于直接上手实操。

4.1 查看磁盘信息命令

1. lsblk:查看磁盘及分区信息(最常用)

作用:列出系统中所有块设备(磁盘、分区、光驱等),显示设备名称、大小、类型、挂载点等信息,直观清晰。

bash 复制代码
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part 
  ├─centos-root 253:0    0   45G  0 lvm  /
  └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk  # 未分区、未挂载的磁盘
sr0              11:0    1  4.2G  0 rom   # 光驱设备
2. fdisk -l:查看磁盘分区表详细信息

作用:列出磁盘的分区表信息,包括磁盘容量、扇区大小、分区类型、起始扇区、结束扇区等,适合查看分区细节和确认分区表格式(MBR/GPT)。

bash 复制代码
[root@localhost ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 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
Disk label type: dos  # MBR分区表(dos对应MBR,gpt对应GPT)
Disk identifier: 0x00099725

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   104857566     51379183+  8e  Linux LVM
3. df -h:查看磁盘挂载及空间使用情况

作用:显示所有已挂载文件系统的磁盘空间使用情况,\-h选项以"人类可读"的格式(KB、MB、GB)显示,便于查看。

bash 复制代码
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   45G  2.3G   43G   6% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G  8.6M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  130M  885M  13% /boot
tmpfs                    378M     0  378M   0% /run/user/0

4.2 磁盘分区命令(fdisk/parted)

磁盘分区需先确定磁盘设备名(如/dev/sdb),再使用分区命令进行操作,其中fdisk适用于MBR分区表,parted适用于GPT分区表(推荐)。

1. fdisk分区(MBR,适用于≤2TB磁盘)
bash 复制代码
# 1. 进入fdisk交互界面(操作/dev/sdb磁盘)
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): m  # 查看帮助(m=help)
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

# 2. 创建新分区(n=new)
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-41943039, default 2048):  # 默认起始扇区
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +10G  # 分区大小10G
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

# 3. 查看分区表(p=print)
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 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
Disk label type: dos
Disk identifier: 0x999c4d89

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux

# 4. 保存分区表并退出(w=write)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
2. parted分区(GPT,适用于>2TB磁盘)
bash 复制代码
# 1. 进入parted交互界面(操作/dev/sdc磁盘)
[root@localhost ~]# parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.

# 2. 创建GPT分区表(mklabel gpt)
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes  # 确认(注意:会清除磁盘所有数据)

# 3. 创建分区(mkpart,格式:mkpart 分区名 文件系统类型 起始位置 结束位置)
(parted) mkpart primary ext4 0GB 100GB  # 主分区,ext4格式,0GB开始,100GB结束
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? ignore  # 忽略对齐提示(非生产环境可忽略)

# 4. 查看分区表(print)
(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  100GB   100GB   ext4         primary

# 5. 退出parted(quit)
(parted) quit
Information: You may need to update /etc/fstab.

4.3 磁盘格式化命令(mkfs)

分区创建完成后,需格式化分区(指定文件系统),才能用于存储数据。CentOS7常用的文件系统有ext4(传统稳定,适用于大部分场景)和xfs(CentOS7默认文件系统,性能更优,适用于大文件场景)。

bash 复制代码
# 1. 格式化分区为ext4格式(命令格式:mkfs.ext4 分区设备名)
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

# 2. 格式化分区为xfs格式(命令格式:mkfs.xfs 分区设备名)
[root@localhost ~]# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=6249472 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=24997888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12206, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

五、Linux下磁盘MOUNT命令详解

格式化后的分区,需要通过mount命令挂载到系统的某个目录(挂载点),才能被系统识别和使用。挂载分为"临时挂载"(重启后失效)和"永久挂载"(重启后仍有效),核心是"将分区与挂载点关联"。

5.1 mount命令基础语法

bash 复制代码
mount [选项] 分区设备名 挂载点目录
# 常用选项:
# -t:指定文件系统类型(如ext4、xfs,可省略,系统会自动识别)
# -o:指定挂载参数(如rw可读可写、ro只读、noexec禁止执行程序)
# -a:挂载/etc/fstab文件中所有未挂载的分区(用于永久挂载生效)

5.2 临时挂载(重启失效)

临时挂载适合测试场景,操作简单,重启后挂载关系会自动消失。

bash 复制代码
# 1. 创建挂载点目录(必须先创建,目录不存在会报错)
[root@localhost ~]# mkdir /data

# 2. 挂载/dev/sdb1(ext4格式)到/data目录
[root@localhost ~]# mount /dev/sdb1 /data

# 3. 验证挂载是否成功(df -h查看)
[root@localhost ~]# df -h | grep /data
/dev/sdb1        9.8G   37M  9.2G   1% /data

# 4. 卸载分区(umount命令,格式:umount 挂载点/分区设备名)
[root@localhost ~]# umount /data  # 或 umount /dev/sdb1

5.3 永久挂载(重启生效)

永久挂载需要修改/etc/fstab文件(系统启动时会自动读取该文件,挂载指定分区),这是生产环境的标准操作,需注意配置格式正确,否则会导致系统启动失败。

1. /etc/fstab文件格式
bash 复制代码
# 格式:分区设备名  挂载点  文件系统类型  挂载参数  dump  pass
# 示例(已有的挂载配置):
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=5e4b3d2a-7f89-4a3b-8c7d-1e2f3a4b5c6d /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

# 字段说明:
# 1. 分区设备名:可写设备路径(/dev/sdb1)或UUID(推荐,避免设备名变化导致挂载失败)
# 2. 挂载点:分区要挂载的目录(如/data)
# 3. 文件系统类型:如ext4、xfs
# 4. 挂载参数:defaults(默认参数,包含rw、suid、dev、exec等)
# 5. dump:0表示不备份,1表示备份(通常设为0)
# 6. pass:0表示不检查,1表示优先检查(根分区设为1,其他分区设为2或0)
2. 永久挂载实操步骤
bash 复制代码
# 1. 查看分区的UUID(推荐使用UUID挂载,避免设备名变化)
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a1b2c3d4-5678-90ef-ghij-klmnopqrstuv" TYPE="ext4"

# 2. 编辑/etc/fstab文件,添加挂载配置
[root@localhost ~]# vi /etc/fstab
# 在文件末尾添加以下内容(根据实际UUID和文件系统修改)
UUID=a1b2c3d4-5678-90ef-ghij-klmnopqrstuv /data ext4 defaults 0 0

# 3. 验证配置是否正确(执行mount -a,无报错即正确)
[root@localhost ~]# mount -a

# 4. 验证挂载是否生效(df -h查看)
[root@localhost ~]# df -h | grep /data
/dev/sdb1        9.8G   37M  9.2G   1% /data

【注意】:修改/etc/fstab文件时,务必确保格式正确(字段之间用空格或制表符分隔),若配置错误,系统启动时会进入紧急模式,需修改文件纠正后重启。

5.4 常见挂载问题排查

  • 问题1:挂载时提示"mount: /data: can't find in /etc/fstab."------ 挂载点目录不存在,需先创建mkdir /data

  • 问题2:挂载时提示"mount: /dev/sdb1 is already mounted or /data busy"------ 分区已挂载,或挂载点目录被占用(使用umount卸载后重新挂载,或更换挂载点);

  • 问题3:系统启动时无法挂载分区------/etc/fstab配置错误,进入紧急模式后,执行vi /etc/fstab修改错误配置,保存后执行mount \-a,再重启系统。

六、Linux下磁盘故障常见修复方法

CentOS7系统中,磁盘常见故障包括"磁盘满、分区挂载失败、磁盘坏道"等,以下是每种故障的排查思路和修复方法,结合实操命令,帮助快速解决问题。

6.1 故障1:磁盘空间满(No space left on device)

故障现象:

创建文件、写入数据时提示"No space left on device",无法进行写入操作,可能是Block耗尽,也可能是Inode耗尽。

排查与修复步骤:
bash 复制代码
# 1. 查看磁盘空间使用情况,确定哪个分区满了
[root@localhost ~]# df -h

# 2. 若Block耗尽(Use%=100%),查找大文件并删除无用文件
# 查找当前目录下大于100MB的文件
[root@localhost ~]# find . -type f -size +100M
# 查看目录大小,按大小排序(从大到小)
[root@localhost ~]# du -sh /* | sort -rh
# 删除无用大文件(谨慎操作,避免删除系统文件)
[root@localhost ~]# rm -f /var/log/xxx.log

# 3. 若Block未耗尽,但提示空间满,可能是Inode耗尽,查看Inode使用情况
[root@localhost ~]# df -i
# 若Inode的Use%=100%,查找大量小文件并删除(如日志、临时文件)
[root@localhost ~]# find /tmp -type f -name "*.tmp" -delete

6.2 故障2:分区挂载失败(mount: wrong fs type, bad superblock)

故障现象:

执行mount命令或系统启动时,提示"wrong fs type, bad superblock",原因通常是分区文件系统损坏、超级块(superblock)损坏,或挂载参数错误。

排查与修复步骤:
bash 复制代码
# 1. 先卸载故障分区(若已挂载)
[root@localhost ~]# umount /dev/sdb1

# 2. 检查分区文件系统,修复损坏(ext4格式用e2fsck,xfs格式用xfs_repair)
# ext4格式修复(-f强制修复,-y自动确认)
[root@localhost ~]# e2fsck -fy /dev/sdb1
# xfs格式修复(需先卸载分区,-f强制修复)
[root@localhost ~]# xfs_repair -f /dev/sdb1

# 3. 修复后重新挂载
[root@localhost ~]# mount /dev/sdb1 /data

# 4. 若超级块损坏,使用备份超级块修复(ext4格式)
# 查看备份超级块位置
[root@localhost ~]# dumpe2fs /dev/sdb1 | grep -i superblock
# 使用备份超级块修复(替换下面的备份超级块位置)
[root@localhost ~]# e2fsck -b 32768 /dev/sdb1

6.3 故障3:磁盘坏道(物理坏道/逻辑坏道)

故障现象:

磁盘读写速度变慢、频繁出现IO错误,或系统日志中出现"read error on sector xxx",可能是磁盘存在坏道(物理坏道无法修复,逻辑坏道可通过工具修复)。

排查与修复步骤:
bash 复制代码
# 1. 扫描磁盘坏道(使用badblocks命令,-v显示详细过程)
[root@localhost ~]# badblocks -v /dev/sdb  # 扫描整个磁盘
# 扫描结果会显示坏道的扇区位置

# 2. 修复逻辑坏道(结合e2fsck命令,标记坏道,避免系统使用)
[root@localhost ~]# e2fsck -c /dev/sdb1  # -c选项会扫描坏道并标记

# 3. 若存在大量物理坏道,建议备份数据后更换磁盘
# 临时规避物理坏道:将坏道区域单独分区,不挂载使用
# 长期解决方案:更换新磁盘,避免数据丢失

【注意】:扫描和修复坏道时,需确保分区未挂载,且提前备份重要数据,避免修复过程中数据丢失。

6.4 故障4:系统启动时无法进入,提示"mount: can't mount /dev/mapper/centos-root"

故障现象:

系统启动时,卡在挂载根分区的步骤,提示无法挂载根分区,原因通常是/etc/fstab配置错误,或根分区文件系统损坏。

排查与修复步骤:
bash 复制代码
# 1. 系统会进入紧急模式,输入root密码登录
Give root password for maintenance
(or type Control-D to continue):  # 输入root密码

# 2. 查看/etc/fstab文件,检查配置是否错误(如UUID错误、文件系统类型错误)
[root@localhost ~]# vi /etc/fstab
# 修正错误配置(如删除错误的挂载项,或修改UUID、文件系统类型)

# 3. 若配置正确,检查根分区文件系统是否损坏,修复根分区
[root@localhost ~]# e2fsck -fy /dev/mapper/centos-root  # 若为xfs格式,用xfs_repair -f

# 4. 修复后,执行mount -a验证,再重启系统
[root@localhost ~]# mount -a
[root@localhost ~]# reboot

七、总结与学习建议

本文围绕CentOS7系统的磁盘管理,从基础概念(磁盘简介、Inode、Block、软硬链接)到实操命令(查看、分区、格式化、挂载),再到故障修复,完整覆盖了Linux磁盘管理的核心知识点。对于云计算新手来说,重点掌握以下几点:

  • 理解Inode与Block的关系:Inode管"元数据",Block管"内容",这是Linux文件存储的核心逻辑;

  • 区分软硬链接的差异:硬链接是"别名",软链接是"快捷方式",根据场景选择使用;

  • 熟练掌握实操命令:lsblk、fdisk/parted、mkfs、mount、umount是日常运维的高频命令,多动手练习;

  • 重视永久挂载配置:修改/etc/fstab时务必谨慎,避免配置错误导致系统启动失败;

  • 故障排查思路:先定位故障原因(如磁盘满、文件系统损坏),再针对性修复,优先备份数据。

磁盘管理是Linux运维和云计算学习的基础,建议结合虚拟机实际操作,反复练习分区、挂载、故障修复等流程,加深对知识点的理解。后续将继续更新云计算相关学习内容,敬请关注!

相关推荐
chushiyunen1 小时前
python使用笔记(linux环境)
linux·笔记·python
三品吉他手会点灯1 小时前
C语言学习笔记 - 41.数据类型 - scanf函数核心知识点复习
c语言·开发语言·笔记·学习
艾莉丝努力练剑1 小时前
【Linux网络】Linux 网络编程:HTTP(三)HTTP 协议原理
linux·运维·服务器·网络·c++·http
小皮蛋儿子1 小时前
mac 微信双开
linux·服务器·apache
minji...1 小时前
Linux 网络基础之网络IP层(十一)私有IP地址和公网IP地址,运营商和全球网络,理解公网
linux·服务器·网络·nat·内网·公网·运营商
古怪今人1 小时前
WSL和Hyper-V Ubuntu安装docker Docker安装Reids、MySQL、PostgreSQL和RabbitMQ
运维·docker·容器
Rabbit_QL1 小时前
【find的用法】macOS/Linux 下高效查找文件
linux·macos
存在的五月雨1 小时前
JVM 入门学习笔记(内存模型 / GC / 类加载机制)
jvm·笔记·学习
什么半岛铁盒1 小时前
LangChain常用组件学习
学习·microsoft·langchain