Linux磁盘管理与文件系统详解:从分区到挂载一步到位
目录
前言
作为一名 Linux 系统管理员,磁盘管理是日常工作中绕不开的一环。无论是安装新硬盘、扩容系统,还是排查磁盘问题,都需要对磁盘分区、文件系统、挂载等操作了如指掌。本文将以 CentOS 7 为例,从零开始带你一步步掌握 Linux 磁盘管理的核心技能。
一、磁盘基础知识
1.1 磁盘容量计算
传统机械硬盘的存储容量计算公式如下:
硬盘存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
-
磁头数:最多为 8 个二进制位,即 256 个磁头。
-
每道扇区数:最多为 6 个二进制位,即 64 个扇区。
-
每扇区字节数:通常为 512 字节。
举例:
1 柱面 = 512 字节/扇区 × 63 扇区/磁道 × 255 磁道 = 7.84 MB
1.2磁盘分区
Linux中将硬盘、分区等设备均表示为文件
/dev/ sdb5
sd表示SCSI设备
hd表示IDE设备
硬盘的顺序号,以字母a、b、....表示
分区的顺序号,以数字1、2、...示。
1.3主启动记录(MBR) 磁盘分区
MBR是主引导记录,位于硬盘第- -个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节, 前446字节是主引
导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节
主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩"展分区里面分多
个逻辑分区)。
1.4 磁盘定位方式
磁盘通过 柱面(Cylinder)/磁头(Head)/扇区(Sector) 三个参数即可唯一定位磁盘上的任意区域,简称 CHS 定位法。
1.5 Linux 文件系统类型
| 文件系统 | 特点与用途 |
|---|---|
| XFS | 高性能日志文件系统,擅长处理大文件,支持海量存储(PB级),宕机后可快速恢复。CentOS 7 默认文件系统。 |
| EXT4 | 第四代扩展文件系统,Linux 传统文件系统,稳定可靠,支持日志功能,CentOS 6 默认文件系统。 |
| SWAP | 交换文件系统,用于虚拟内存,缓解物理内存不足。建议大小为物理内存的 1.5~2 倍。 |
| NTFS | Windows 专有文件系统,Linux 默认只读,可通过 ntfs-3g 实现读写支持。 |
| FAT32 | 兼容性好,U 盘常用,但不支持单文件大于 4GB。 |
二、命令
2.1 fdisk -l 查看硬盘的整体情况和分区情况
| 字段名 | 含义说明 | 常见取值示例 |
|---|---|---|
| Device | 分区的设备文件名称 | /dev/sda1、/dev/sdb5 |
| Boot | 是否为引导分区。带 * 标识即表示该分区为引导分区 |
*(引导分区) |
| Start | 分区在硬盘中的起始位置(柱面数或扇区号) | 2048、256 |
| End | 分区在硬盘中的结束位置(柱面数或扇区号) | 209715199、102400 |
| Blocks | 分区大小,以 1024 字节 Block 为单位 | 104857600(约 100 GB) |
| Id | 分区对应的系统 ID 号(十六进制) | 83(Linux XFS/EXT4) |
| System | 分区类型的文字描述 | Linux |
2.2 .交互模式中的常用指令
| 指令 | 全称/作用 | 功能说明 |
|---|---|---|
| a | active | 切换分区的 可引导标记(bootable flag) |
| b | bsd | 编辑 BSD 磁盘标签(BSD disklabel) |
| c | compatible | 打开/关闭 DOS 兼容标志(dos compatibility flag) |
| d | delete | 删除一个分区 |
| l | list | 列出所有 已知分区类型(如 82=Linux swap,83=Linux) |
| m | menu | 显示 帮助菜单(当前表格) |
| n | new | 新建一个分区 |
| o | overwrite | 创建新的 空 DOS 分区表(清空现有分区) |
| p | 显示当前分区表 | |
| q | quit | 不保存修改,直接退出 fdisk |
| s | sun | 创建新的 空 Sun 磁盘标签(Sun disklabel) |
| t | type | 更改分区系统 ID(即分区类型) |
| u | units | 切换 显示单位(柱面/扇区) |
| v | verify | 验证分区表的正确性 |
| w | write | 保存修改并退出 fdisk |
| x | extra | 进入 专家级额外功能(初学者慎用) |
三、建立磁盘分区
3.1 先在虚拟机中添加一个磁盘

3.2 单磁盘分区
[root@benet21 ~]# fdisk /dev/sdb
Command (m for help): n //开始创建第 1 个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //选择创建的为主分区
Partition number (1-4, default 1): 1 //设置第 键接受默认一个主分区的编号为
1 First sector (2048-209715199, default 2048): //直接按Enter值
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +20G
Partition 1 of type Linux and of size 20 GiB is se //创建分区大小
Command (m for help):w //保存退出
3.3 多磁盘分区
[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xa0405c74 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+7G
分区 2 已设置为 Linux 类型,大小设为 7 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (35653632-41943039,默认为 35653632):
将使用默认值 35653632
Last 扇区, +扇区 or +size{K,M,G} (35653632-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 3 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
3.4 lsblk 以树形查看磁盘分区
[root@benet21 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 99.5G 0 part /
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part /mnt
sr0 11:0 1 1024M 0 rom
常用参数:
-a 显示所有设备
-b 以bytes方式显示设备大小
-d 不显示 slaves 或 holders
-D print discard capabilities
-e 排除设备
-f 显示文件系统信息
-h 显示帮助信息
-i use ascii characters only
-m 显示权限信息
-l 使用列表格式显示
-n 不显示标题
-o 输出列
-P 使用key=”value”格式显示
-r 使用原始格式显示
-t 显示拓扑结构信息
3.5 创建系统文件(格式化)
[root@localhost ~]# mkfs.xfs /dev/sdc1
mkfs.xfs: /dev/sdc1 appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.
[root@localhost ~]# mkdir yjs0805
3.6 挂载
[root@localhost ~]# mkdir /opt/yjs0805
[root@localhost ~]# mount /dev/sdc1 /opt/yjs0805/
[root@localhost ~]# blkid
/dev/sda1: UUID="4abf12f3-b567-477f-84b4-a7b15725cf51" TYPE="xfs"
/dev/sda2: UUID="3NNged-lJp8-EIxA-jZs2-BQh6-26WO-RGoK0x" TYPE="LVM2_member"
/dev/sr0: UUID="2020-11-04-11-36-43-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="b3359323-a9ce-4a44-9496-020ff66b9ef0" TYPE="xfs"
/dev/mapper/centos-swap: UUID="9c058e93-c291-4cd0-ab12-ab06df3c5f6c" TYPE="swap"
/dev/sdc1: UUID="33c8a871-ccc3-49cb-8404-69f932a006c2" TYPE="xfs"
3.7 mount命令
挂载文件系统、ISO镜像到指定文件夹
mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
3.8 mkswap命令
创建交换文件系统
mkswap /dev/sdb5 格式化分区
swapon /dev/sdb5 开启
swapoff /dev/sdb5 关闭
swapon -s 检测
四、LVM-磁盘配额整理
4.1 LVM的概念
PV(Physical Volume,物理卷)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷(例:/dev/sdb1 /dev/sdc1)。
PE的值可以是4、8、16、32、64。PE越小硬盘利于率高,但是每个VG块的最大数65534,所以PE大小决定了VG卷组大小
VG(Volume Group,卷组)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷
LV(Logical Volume,逻辑卷
逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就称为逻辑卷。使用mkfs等工具在逻辑卷上创建文件系统
4.2 LVM 的管理命令
| 功能说明 | 物理卷(PV)管理命令 | 卷组(VG)管理命令 | 逻辑卷(LV)管理命令 |
|---|---|---|---|
| 扫描(Scan) | pvscan |
vgscan |
lvscan |
| 创建(Create) | pvcreate |
vgcreate |
lvcreate |
| 显示(Display) | pvdisplay |
vgdisplay |
lvdisplay |
| 移除(Remove) | pvremove |
vgremove |
lvremove |
| 扩展(Extend) | — | vgextend |
lvextend |
| 缩减(Reduce) | — | vgreduce |
lvreduce |
需求:需要创建两个60G物理卷 并且设置逻辑卷20G挂载到 ky19
LVM操作主要命令步骤
1.关闭主机,添加两块新硬盘,重启主机
或echo "- - - " > /sys/class/scsi_host/host0/scan 扫描
2.先使用fdisk工具讲磁盘设备/dev/sdb、/dev/sdc划分主分区sdb1、sdc1,并且把分区类型的ID标记号改为“8e”
fdisk /dev/sdb
fdisk /dev/sdc
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux LVM”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
3.创建物理卷
pvcreate /dev/sdb1 /dev/sdc1
4.创建卷组,卷组名为vgname1
vgcreate vgname1 /dev/sdb1 /dev/sdc1
5.创建逻辑卷,逻辑卷名为lvname1,容量为20GB,生产的文件路劲为/dev/vgname1/lvname1
lvcreate -L 20G -n lvname1 vgname1
6.对逻辑卷进行格式化,创建XFS文件系统,并且挂载到/opt目录下
mkfs -t xfs /dev/vgname1/lvname1
mount /dev/vgname1/lvname1 /opt目录下
df -Th
7. 再扩容
vgextend vgname1 /dev/sdc2
lvextend -L +10G /dev/vgname1/lvname1
xfs_growfs /dev/vgname1/lvname1 //刷新xfs文件系统容量
resize2fs /dev/vgname1/lvname1 //刷新ext4类型文件系统容量
创建 LVM 流程:
pvcreate 创建 pv -> vgcreate 创建卷组 -> lvcreate 创建逻辑卷 -> mkfs.xfs lv 格式化-> mount 挂载
删除 LVM 流程:
umount 卸载 -> lvremove lv 移出卷组中所有逻辑卷-> vgremove vg 移出卷组-> pvremove 移出 pv
4.3 设置磁盘配额
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续。在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。
CentOS7中设置磁盘配额步骤
1、检查是否已安装xfsprogs和xfs_ quota软件包
rpm -q xfsprogs quota
yum install -y xfsprogs quota
2、以支持配额功能的方式挂载文件系统
umount / dev/ vgname1 / lvnamel
mount -o usrquota, grpquota /dev/vgname1/lvname1 /opt
#添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持
或者
vim /etc/ fstab
/dev/vgname1/lvname1 /opt xfs defaults, usrquota, grpquota 00
umount /dev/vgname1/ lvname1
mount -a #-a选项,将/etc/ fstab的所有内容重新加载
3、编辑用户和组账号的配额设置
useradd lisi
passwd lisi
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M isoft=40 ihard=50 lisi' /opt/
ext4
quota
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c: 表示直接调用管理命令。
-u: 指定用户账号对象
-g: 指定组账号对象
bsoft: 设置磁盘容量的软限制数值(默认单位为KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。
#仅限制磁盘容量
xfs_ quota -x -c 'limit -u bsoft=80M bhard=100M lisi' /opt/
#仅限制文件数
xfs quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/
#查看zhangsan磁盘:容量限制
xfs_ quota -C 'quota -uv lisi' /opt/
#查看zhangsan文件数限制
xfs quota -c 'quota -i -uv lisi' /opt/
五、RAID分级
什么是RAID
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)
就是把多块硬盘按特定方式组合起来,当成一块逻辑盘使用,从而提高速度、增加容量或提供容错能力。
| RAID级别 | 最少硬盘数量 | 磁盘利用率 | 校验机制 | 容错能力(允许同时损坏的盘数) | 写性能特点 |
|---|---|---|---|---|---|
| RAID 0 | N ≥ 2 | 100 % | 无 | 0 盘 | 线性提升,约为单盘的 N 倍 |
| RAID 1 | 2(偶数) | 50 % | 无 | 1 盘 | 需同时写入两份数据,写性能≈单盘 |
| RAID 5 | ≥ 3 | (N-1)/N | 有(单校验) | 1 盘 | 需计算并写入校验,写性能中等 |
| RAID 6 | ≥ 4 | (N-2)/N | 有(双校验) | 2 盘 | 需双重校验计算,写性能略低于 RAID 5 |
| RAID 10 | ≥ 4(偶数) | 50 % | 无 | 每个镜像组各损 1 盘,最多可损 N/2 盘 | 多盘并行写入,写性能≈ N/2 盘并发 |
RAID的特点
| RAID 级别 | 最少磁盘数 | 数据分布方式 | 冗余/容错 | 性能特点 | 典型场景 |
|---|---|---|---|---|---|
| RAID 0 | 2 块 | 条带分布 | 无 | 读写最快;无容错 | 临时缓存、非关键数据 |
| RAID 1 | 2 块 | 镜像复制 | 有(坏 1 盘仍可用) | 读快、写一般 | 操作系统盘、小容量关键数据 |
| RAID 5 | 3 块 | 条带 + 奇偶校验 | 有(坏 1 盘仍可用) | 读高、写中等;空间利用率较好 | 多读少写、通用服务器 |
| RAID 10 | 4 块(偶数) | 先 RAID 0 条带,再 RAID 1 镜像 | 有(每组坏 1 盘仍可用) | 读写皆优;成本高 | 数据库、高并发业务 |
| RAID 1+0 | 4 块(偶数) | 先做镜像(RAID 1),再做条带(RAID 0) | 有(同一镜像对中可各坏 1 盘) | 读写性能与 RAID 10 相近;容错与成本亦相近 | 与 RAID 10 场景相同,二者常混称 |
创建软RAID磁盘阵列步骤:
1、检查是否已安装mdadm软件包
rpm -q mdadm
yum install -y mdadm
2、使用fdisk.工具将新磁盘设备/dev/sdb、 /dev/sdc、 /dev/sdd、 /dev/sde划分出主分区sdb1、sdc1、 sdd1、 sde1, 并且
把分区类型的ID标记号改为"fd”
fdisk /dev/ sdb
fdisk /dev/ sdc
3、创建RAID设备
#创建RAID5
mdadm -C -V /dev/md0 [-a yes] -15 -n3 /dev/sd[bcd]1 -x1 /dev/sde1
-C:表示新建;
-v:显示创建过程中的详细信息。
/dev/md0: 创建RAID5的名称。
-ayes:--auto,表示如果有什么设备文件没有存在的话就自动创建,可省略。
-1: 指定RAID 的级别,15表示创建RAID5。.
-n:指定使用几块硬盘创建RAID, n3表示使用3块硬盘创建RAID。
/dev/sd [bcd]1: 指定使用这3块磁盘分区去创建RAID。
-x:指定使用几块硬盘做RAID的热备用盘,x1表示保留1块空闲的硬盘作备用
/dev/sde1: 指定用作于备用的磁盘
#创建RAID10 ( 先做镜象,再做条带)
#创建RAID10 (先做镜象,再做条带)
mdadm -Cv /dev/md0 -11 -n2 /dev/sd[bc]1
mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[de]1
mdadm -Cv /dev/md10 -l0 -n2 /dev/md0/dev/md1
#查看RAID磁盘详细信息
cat /proc/mdstat #还能查看创建RAID的进度 或者
mdadm -D /dev/md0
#用watch命令来每隔-一段时间刷新/proc/mdstat的输 出
watch -n 10 'cat /proc/mdstat'
#检查磁盘是否EL做RAID.
mdadm -E /dev/sd[b-e] 1
4、创建并挂载文件系统
mkfs -t xfs /dev/imd0
mkdir /myraid
mount /dev/md0 /myraid/
df -Th
cp /etc/fstab /etc/fstab.bak
vim /etc/fstab
/dev/md0 /myraid xfs defaults 0 0
5、实现故障恢复
mdadm /dev/md0 -f /dev/sdb1 #模拟/dev/sdb1故障
mdadm -D /dev/md0 #查看发现sde1已顶替sdb1
6、 创建/etc/mdadm.conf 配置文件,方便管理软RAID的配置,比如启动、停止
echo ' DEVICE /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1' > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf
mdadm命令其它常用选项
-r: 移除设备
-a: 添加设备
-S: 停止RAID
-A: 启动RAID
mdadm /dev/md0 -f /dev/ sdb1
mdadm /dev/md0 -r /dev/ sdb1
mdadm /dev/md0 -a /dev/ sde1
umount /dev/md0
mdadm -S /dev/md0
mdadm -As /dev/md0
六、小结
1. 磁盘基础
先算容量:柱面×磁头×扇区×512 B;MBR 只能认 2 TB 且 4 主分区,GPT 则大到 9 ZB、128 分区,并把分区表首尾双存,坏一份也能恢复。Linux 把磁盘当文件,sd 表 SCSI,hd 表 IDE,数字 1-4 主分区、5 起逻辑分区。
2. 文件系统性格
XFS 擅长大文件与高速恢复,EXT4 均衡稳健,SWAP 充当内存替身,NTFS 需 ntfs-3g 才能写。
3. 分区与格式化
fdisk 交互指令 n 新建、p 查看、t 改类型、w 保存;lsblk 树形展示;mkfs.xfs 格式化;mount 临时挂,/etc/fstab 开机自挂;mkswap/swapon 建立交换区。
4. LVM 弹性层
分区→PV→VG→LV:卷组随时加盘,逻辑卷在线伸缩;vgextend 拉宽池子,lvextend 加长卷,xfs_growfs 让文件系统立即感知新空间。
5. 磁盘配额
用 xfs_quota 给用户或组设软硬限制:容量 80 M 警告、100 M 封顶,文件数同理,防止一人占满整盘。
6. RAID 阵列
0 条带极速无冗余,1 镜像安全但容量减半,5 奇偶校验省盘,6 双校验容双盘,10 先镜后条兼顾速度与容错;mdadm 一条命令创建、模拟故障、热插拔替换,秒级恢复业务。
更多推荐

所有评论(0)