Linux 磁盘管理
一、磁盘类型与命名规则
不同类型的磁盘在 Linux 中有特定的设备文件命名方式,通过fdisk -l或parted -l可查看设备类型
| 磁盘类型 | 命名规则 | 示例 |
|---|---|---|
| SATA/SCSI/SAS | 以sd为前缀,按顺序编号(a、b、c...),分区加数字(1、2、3...) |
第一块硬盘:sda,其第一分区:sda1 |
| NVMe | 以nvmeXnYpZ为格式 - X:通道号(0 开始) - Y:硬盘号(1 开始) - Z:分区号(1 开始) |
通道 0 的第 1 块硬盘第 1 分区:nvme0n1p1 |
| virtio-block | 以vd为前缀,按顺序编号,分区加数字 |
第一块硬盘:vda,其第一分区:vda1 |
二、分区工具与信息查看
- fdisk -l :查看磁盘及分区详细信息(支持 MBR 分区),输出字段含义:
Device:分区设备文件名(如/dev/sda1)Boot:是否为引导分区(*表示是)Start/End:分区在磁盘中的起始 / 结束柱面位置sectors:分区总扇区数Size:分区大小Id:分区 ID(83=Linux 分区,82=swap 分区)Type:分区类型
- parted -l :查看所有磁盘的分区布局(支持 MBR 和 GPT),可通过
parted /dev/sda print查看单块硬盘的分区表
三、分区方案(MBR vs GPT)
磁盘分区需先选择分区方案,核心区别如下:
| 特性 | MBR(Master Boot Record) | GPT(GUID Partition Table) |
|---|---|---|
| 最大支持磁盘 / 分区大小 | 2TB | 8ZB(远超 2TB) |
| 最大分区数量 | 最多 15 个 | 最多 128 个 |
| 分区表存储 | 磁盘第一个扇区(512 字节):446 字节引导记录 + 64 字节分区表(4 个主分区,每个 16 字节)+2 字节结束标志 | 磁盘首尾各存一份分区表(自带备份,损坏可恢复) |
| 适用场景 | 小容量磁盘(≤2TB)、传统 BIOS 引导 | 大容量磁盘(>2TB)、UEFI 引导 |
四、分区创建(parted 工具)
需先为磁盘写入 "磁盘标签"(即选择分区方案),再创建分区
1. 写入磁盘标签(选择分区方案)
- MBR 标签:
parted /dev/sdb mklabel msdos - GPT 标签:
parted /dev/vdb mklabel gpt
2. 创建 MBR 分区(示例)
bash
parted /dev/sdb # 操作/dev/sdb磁盘
mklabel msdos # 确认MBR方案(若未写入标签)
unit MB # 设置单位为MB(1MB=1000KB,1MiB=1024KiB)
mkpart # 新建分区
primary # 分区类型(主分区)
xfs # 标记文件系统类型(仅标记,未格式化)
1MB # 起始位置(从1MB开始,避开引导区)
501MB # 结束位置(分区大小500MB)
quit # 退出,自动保存
udevadm settle # 等待系统识别新分区(生成/dev/sdb1设备文件)
简化命令:parted /dev/sdc mkpart primary xfs 1MB 501MB(直接创建)
3. 创建 GPT 分区
步骤与 MBR 类似,仅需先写入 GPT 标签:parted /dev/sdd mklabel gpt,后续分区操作一致
4. fdisk 工具(交互式分区,适合 MBR)
bash
fdisk /dev/sdb # 进入交互式操作
n # 新建分区
p # 主分区(或e扩展分区)
1 # 分区号
(默认起始扇区) # 按回车
+500M # 分区大小(或指定结束扇区)
w # 保存退出
partprobe /dev/sdb # 刷新分区表(让系统识别)
常用操作:d(删除分区)、p(查看分区表)、t(修改分区 ID)、q(不保存退出)
五、格式化分区
分区创建后需格式化(写入文件系统),常用命令:
mkfs.xfs /dev/sdc1:格式化为 xfs 文件系统(适合大文件,默认日志型)mkfs.ext4 /dev/sdc2:格式化为 ext4 文件系统(兼容好,支持小文件)
六、挂载分区(临时 / 永久)
分区需挂载到目录才能使用,挂载点需提前创建(如mkdir /data)
1. 临时挂载
bash
mount /dev/sdc1 /data # 将/dev/sdc1挂载到/data
2. 永久挂载(写入 /etc/fstab)
/etc/fstab文件记录开机自动挂载信息,格式如下(5 个字段,空格分隔):
plaintext
UUID=xxxxxxx /data xfs defaults 0 0
字段含义:
- 设备标识 :建议用 UUID(唯一,避免设备名变动),通过
blkid /dev/sdc1查询 - 挂载点 :目录路径(如
/data;swap 分区此处写swap) - 文件系统类型 :如
xfs、ext4、swap - 挂载参数 :
defaults(默认,含 rw、suid、dev 等)、ro(只读)、noexec(禁止执行程序)等 - dump 备份:0 = 不备份,1 = 需要备份(dump 工具)
- fsck 检查:0 = 不检查,1 = 优先检查(根分区),2 = 次要检查(xfs 无需检查,设 0)
配置步骤:
bash
blkid /dev/sdc1 # 获取UUID(如UUID="abc123")
mkdir /cy # 创建挂载点
vim /etc/fstab # 写入上述格式内容
mount -a # 生效配置(检查是否有误,错误会导致开机失败)
七、交换分区管理(虚拟内存)
用于缓解物理内存不足,需单独分区并格式化为 swap 类型
1. 查看交换分区状态
bash
free -m # 查看总内存、使用量、交换分区大小
2. 创建交换分区(非交互式)
bash
# 1. 创建分区(类型设为linux-swap)
parted /dev/sdc mkpart primary linux-swap 1MB 501MB
# 2. 格式化swap分区
mkswap /dev/sdc1
# 3. 写入/etc/fstab(永久生效)
echo "UUID=$(blkid -s UUID -o value /dev/sdc1) swap swap defaults 0 0" >> /etc/fstab
# 4. 启用交换分区
swapoff -a # 关闭所有交换分区
swapon -a # 开启所有交换分区(读取/etc/fstab)
总结
磁盘管理核心流程:识别磁盘类型→选择分区方案(MBR/GPT)→创建分区→格式化→挂载(临时 / 永久) ,交换分区作为特殊分区需单独配置。操作时需注意/etc/fstab的正确性,避免开机故障