Linux 磁盘管理详解:分区、格式化与挂载全流程指南
一、磁盘类型及命名规则
不同接口的磁盘在Linux中设备名格式固定,需精准识别:
SATA/SCSI/SAS磁盘:以
sd
为前缀,按发现顺序命名。- 第一块硬盘:
sda
,第二块:sdb
,以此类推; - 分区命名:在硬盘名后加数字,如
sda1
(第一块盘第一个分区)、sda2
(第一块盘第二个分区)。
- 第一块硬盘:
NVMe磁盘:格式为
nvmeXnYpZ
,各参数含义严格区分:X
:通道号(起始为0,如0号通道);Y
:硬盘号(起始为1,如1号硬盘);Z
:分区号(起始为1,如1号分区);
示例:0号通道1号硬盘的1号分区 →nvme0n1p1
。
virtio-block磁盘:以
vd
为前缀,命名规则同SATA:- 第一块硬盘:
vda
,分区:vda1
、vda2
等。
- 第一块硬盘:
二、磁盘/分区查看工具
1. fdisk -l
:查看分区细节(MBR/GPT通用)
执行后显示所有磁盘及分区信息,核心字段含义:
Device
:分区设备文件路径(如/dev/sda1
);Boot
:是否为引导分区(*
表示是,用于启动系统);Start
:分区在磁盘中的起始柱面数;End
:分区在磁盘中的结束柱面数;Sectors
:分区包含的总扇区数(扇区是磁盘最小存储单位);Size
:分区总容量(如500M、1G);Id
:分区系统ID号(固定值:83=Linux数据分区,82=swap交换分区,7=NTFS等);Type
:分区类型(如Linux
、Linux swap
)。
2. parted -l
:查看分区布局(侧重分区表类型)
- 功能:显示所有磁盘的分区表类型(MBR/GPT)、分区大小、文件系统标记等;
- 查看单磁盘详情:
parted /dev/sda print
(指定查看sda
的分区表)。
三、分区方案(MBR与GPT的底层细节)
1. MBR(Master Boot Record,主引导记录)
- 核心限制:
- 最大支持磁盘/分区容量:2TB(超过2TB无法识别);
- 分区数量:最多4个主分区;或3个主分区+1个扩展分区(扩展分区内可建逻辑分区,逻辑分区编号从5开始),总分区数最多15个;
- 无分区表备份,损坏后难以恢复。
- 结构细节:
磁盘第一个扇区(512字节)即MBR,包含:- 446字节:主引导记录(启动代码,用于引导系统);
- 64字节:分区表(每分区占16字节,最多记录4个分区);
- 2字节:结束标志(
0x55AA
,验证MBR有效性)。
2. GPT(GUID Partition Table,全局唯一标识分区表)
- 核心优势:
- 支持超2TB大磁盘,单分区最大容量8ZB;
- 分区数量:最多128个(几乎无限制);
- 分区表备份:磁盘首尾各存一份相同分区表,一份损坏可通过另一份恢复;
- 引导记录与数据分离存储,更安全。
四、分区操作(parted
工具全流程,含交互式/非交互式)
前提:为新磁盘写入“磁盘标签”(确定分区方案)
新磁盘需先指定用MBR还是GPT,否则无法分区:
# 写入MBR标签(对应msdos格式)
parted /dev/sdb mklabel msdos
# 写入GPT标签
parted /dev/vdb mklabel gpt
1. 交互式分区(适合新手,步骤详尽)
以“给/dev/sdc
创建500MB gpt主分区”为例:
parted /dev/sdc # 进入sdc磁盘的交互模式(输入后回车)
(parted) mklabel
新的磁盘标签类型? gpt
(parted) unit MiB # 设置单位为MiB(避免计算错误,也可设GiB)
(parted) (parted) mkpart
分区名称? []?
文件系统类型? [ext2]? 后面格式化不用管现在的系统类型
起始点? 10MiB
结束点? 510MiB
(parted) quit # 退出,自动保存分区配置(无需手动保存)
2. 非交互式分区(快速操作,适合脚本)
直接在命令行完成,无需交互:
# 给/dev/sdc创建500MB MBR主分区(xfs标记)
parted /dev/sdc mkpart primary xfs 1MB 501MB
# 给/dev/vdc创建1GB GPT分区(ext4标记)
parted /dev/vdc mkpart primary ext4 1MB 1001MB
3. 刷新分区识别
分区创建后,系统需时间生成/dev/sdc1
等设备文件,执行以下命令等待完成:
udevadm settle # 系统分区表同步到到硬盘里
五、格式化分区(将分区转为可用文件系统)
分区仅标记文件系统类型,需格式化后才能存储数据,常用命令:
# 格式化为xfs(适合大文件,性能优,CentOS 7+默认)
mkfs.xfs /dev/sdc1
# 格式化为ext4(兼容性好,支持小文件,Ubuntu常用)
mkfs.ext4 /dev/sdc2
命令 | 对应文件系统 | 特点 | 适用场景 |
---|---|---|---|
mkfs.btrfs | btrfs | 支持快照、RAID、动态扩展,具备 Checksumming 数据校验功能,可在线调整大小 | 需要高级功能的服务器存储、大容量存储池 |
mkfs.ext2 | ext2 | 无日志功能,性能较好但数据恢复能力弱,不支持大文件 | 小型嵌入式设备、临时存储分区 |
mkfs.ext3 | ext3 | 在 ext2 基础上增加日志功能,数据一致性好,兼容性强 | 对稳定性要求高的传统 Linux 系统 |
mkfs.ext4 | ext4 | ext3 的升级版本,支持更大文件和分区,具备延迟分配、extents 等特性 | 大多数 Linux 系统的默认选择,平衡性能与稳定性 |
mkfs.cramfs | cramfs | 压缩的只读文件系统,占用空间小 | 嵌入式系统、启动盘等对空间有限制的场景 |
mkfs.fat | fat | 兼容 Windows 和 Linux 系统,支持多种设备 | 移动存储设备(如 U 盘)、跨系统交换数据 |
mkfs.minix | minix | 早期 Linux 使用的文件系统,功能简单,限制较多 | 仅用于测试或兼容老旧系统 |
mkfs.msdos | msdos | 即 FAT16,支持的分区和文件大小有限 | 老旧设备、小容量存储 |
mkfs.vfat | vfat | 即 FAT32,支持更大的分区和文件,兼容性广泛 | 移动硬盘、数码相机等设备 |
mkfs.xfs | xfs | 高性能日志文件系统,支持大文件和快速恢复,并行 I/O 能力强 | 大型服务器、数据仓库、需要处理大文件的场景 |
六、挂载管理(临时/永久,含/etc/fstab
详解)
1. 临时挂载(重启后失效,适合临时使用)
mkdir /mydata # 先创建挂载点目录(必须存在)
mount /dev/sdc1 /mydata # 将sdc1挂载到/mydata
2. 永久挂载(写入/etc/fstab
,需严格格式)
/etc/fstab
是系统启动时自动挂载的配置文件,格式错误会导致系统无法启动!每个字段含义:
字段序号 | 含义 | 示例 |
---|---|---|
1 | 设备标识(用UUID,用blkid查询) | UUID=123e4567-e89b-12d3-a456-426614174000 |
2 | 挂载点目录(swap分区此处必须写swap ) |
/mydata |
3 | 文件系统类型(如xfs、ext4、swap) | xfs |
4 | 挂载参数(defaults 含rw、suid、dev、exec、auto、nouser、async) |
defaults |
5 | dump备份标识(1=需要备份,0=不备份) | 0 |
6 | fsck检查顺序(0=不检查,1=优先检查,2=次要检查;xfs不支持fsck设0) | 0 |
永久挂载步骤:
查分区UUID(关键,避免设备名变动导致挂载失败):
blkid /dev/sdc1 # 输出类似:/dev/sdc1: UUID="123e4567..." TYPE="xfs"
写入
/etc/fstab
:vim /etc/fstab # 打开文件,添加一行: UUID=123e4567-e89b-12d3-a456-426614174000 /mydata xfs defaults 0 0
验证配置(无报错则正确):
mount -a # 加载fstab中所有未挂载的设备
七、交换分区管理(虚拟内存,含创建/启用全流程)
交换分区用于临时补充物理内存不足,步骤如下:
1. 创建swap分区(以MBR为例)
parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit
Unit? [compact]? mib
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 20480MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 10.0MiB 510MiB 500MiB ext4
(parted) mkpart
分区名称? []?
文件系统类型? [ext2]?
起始点? 520mib
结束点? 1020mib
(parted) quit
信息: You may need to update /etc/fstab.
udevadm settle
2. 格式化swap分区
mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=9017cbdc-f96f-48b1-82ca-c99d211e5aaa
# 将分区格式化为swap文件系统
3. 永久启用swap(写入/etc/fstab
)
swap分区的/etc/fstab
格式特殊(挂载点为swap
):
# 查swap分区UUID(用blkid)
vim /etc/fstab
---------------------------------------
UUID=87d659c5-1b81-4f10-bcf5-83063ae0c5cb swap swap defaults 0 0
---------------------------------------
#或
echo "UUID=xxx swap swap defaults 0 0" >> /etc/fstab
4. 激活/关闭swap
swapon -a # 启用fstab中所有swap分区(生效配置)
swapoff -a # 关闭所有swap分区(临时关闭)
5. 查看swap使用情况
free -m # 以MB为单位显示:total(总大小)、used(已用)、free(空闲)
total used free shared buff/cache available
Mem: 3932 807 2153 86 971 2745
Swap: 4595 0 4595
八、fdisk
工具使用(不推荐)
fdisk
仅支持MBR分区,且操作需手动同步,步骤如下:
fdisk /dev/sda # 进入sda磁盘的交互模式
# 常用命令:
n # 新建分区(输入后选主分区/扩展分区,指定起始扇区和大小)
d # 删除分区(输入分区编号)
p # 查看当前分区表
t # 修改分区ID(如将分区类型改为swap,输入82)
l # 列出所有分区ID对应的类型
q # 不保存退出(放弃所有操作)
w # 保存退出(写入分区表)
# 保存后需同步分区表(否则系统不识别)
partprobe /dev/sda # 刷新sda的分区表
九、单位说明
- 十进制:1MB=1000KB,1GB=1000MB(
parted
中unit MB
默认此单位); - 二进制:1MiB=1024KiB,1GiB=1024MiB(格式化时部分工具用此单位)。
分区时建议统一单位(如MB),避免容量计算偏差。
总结:完整操作链
- 查看磁盘:
fdisk -l
确认目标磁盘(如/dev/sdc
); - 写标签:
parted /dev/sdc mklabel msdos
(选MBR); - 分区:交互式/非交互式创建分区(如500MB主分区);
- 刷新:
udevadm settle
生成/dev/sdc1
; - 格式化:
mkfs.xfs /dev/sdc1
; - 查UUID:
blkid /dev/sdc1
; - 永久挂载:写
/etc/fstab
→mount -a
验证。
以上涵盖所有细节,确保操作无遗漏。