Linux 磁盘分区及格式化挂载完整笔记

Linux 磁盘分区及格式化挂载完整笔记

一、前置知识
1.1 磁盘表示方式

设备类型    表示方式    示例
IDE 硬盘  /dev/hd[a-d]    /dev/hda
SCSI/SATA/USB 硬盘    /dev/sd[a-z]    /dev/sda, /dev/sdb
NVMe 固态硬盘   /dev/nvme0n1    /dev/nvme0n1p1
虚拟磁盘(虚拟机)   /dev/vd[a-z]    /dev/vda

1.2 分区表类型对比

特性  MBR/DOS GPT
最大磁盘容量  2TB 18EB(理论上)
最大分区数   4个主分区 + 扩展/逻辑分区 128个主分区
启动方式    BIOS/Legacy UEFI
适用工具    fdisk   gdisk, parted

二、实验环境说明
测试磁盘:/dev/sdb(新添加的一块 10GB 虚拟磁盘)
系统:RHEL/CentOS 7+ / Ubuntu 18.04+
注意事项:⚠️ 所有操作前确认磁盘无重要数据
查看当前磁盘状态

# 查看所有块设备
lsblk

# 查看详细分区信息
sudo fdisk -l

# 查看磁盘使用情况
df -h

三、fdisk 命令详解(MBR 分区表)
适用场景:磁盘 ≤ 2TB,传统 BIOS 启动
3.1 进入交互模式

sudo fdisk /dev/sdb

3.2 常用交互命令

命令  作用
m   显示帮助菜单
p   打印当前分区表
n   新建分区
d   删除分区
t   修改分区类型
w   保存并退出
q   不保存退出

3.3 创建分区步骤

# 1. 进入 fdisk
sudo fdisk /dev/sdb

# 2. 输入 p 查看分区表(初始为空)

# 3. 输入 n 新建分区
Command (m for help): n
# 选择分区类型
Select (default p): p     # p=主分区, e=扩展分区
# 分区号(1-4)
Partition number (1-4, default 1): 1
# 起始扇区(按回车默认)
First sector (2048-20971519, default 2048): 
# 结束扇区(指定大小)
Last sector, +/-sectors or +/-size{K,M,G,T,P}: +2G

# 4. 输入 p 查看新建的分区
Device     Boot Start     End Sectors Size Id Type
/dev/sdb1        2048 4196351 4194304   2G 83 Linux

# 5. 输入 w 保存并退出
Command (m for help): w

3.4 常见问题及解决

问题  解决方案
忘记保存就退出 使用 q 不保存,重新操作
分区表未更新  执行 sudo partprobe /dev/sdb
删除分区    进入 fdisk → d → 选择分区号 → w

四、gdisk 命令详解(GPT 分区表)
适用场景:磁盘 > 2TB,UEFI 启动,或需要更多分区
4.1 进入交互模式

sudo gdisk /dev/sdb

4.2 常用交互命令

命令  作用
p   打印分区表
n   新建分区
d   删除分区
l   列出所有分区类型代码
w   保存并退出
q   不保存退出

4.3 创建分区步骤

# 1. 进入 gdisk
sudo gdisk /dev/sdb

# 2. 输入 p 查看(可能提示创建新GPT表,输入 y 确认)

# 3. 输入 n 新建分区
Command (? for help): n
# 分区号(按回车默认)
Partition number (1-128, default 1): 
# 起始扇区(按回车默认)
First sector (34-20971486, default = 2048) or {+-}size{KMGTP}: 
# 结束扇区(指定大小)
Last sector (2048-20971486, default = 20971486) or {+-}size{KMGTP}: +3G
# 分区类型代码(8300 = Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): 
# 确认
Current type is 8300 (Linux filesystem)
Command (? for help): p

# 4. 输入 w 保存
Command (? for help): w
# 确认提示输入 y
Do you want to proceed? (Y/N): y

4.4 分区类型代码参考

代码  用途
8300    Linux 文件系统
8200    Linux swap
8301    Linux /home
8302    Linux /srv
EF00    EFI 系统分区

五、parted 命令详解(支持 MBR 和 GPT)
适用场景:脚本化操作,支持大磁盘,可在线调整分区大小
5.1 交互式操作

# 进入 parted 交互模式
sudo parted /dev/sdb

# 查看帮助
(parted) help

# 查看当前分区表
(parted) print

# 设置分区表类型(以 GPT 为例)
(parted) mklabel gpt
# 或使用 MBR: (parted) mklabel msdos

# 创建分区
(parted) mkpart primary ext4 0% 2G
# 参数说明:mkpart 分区类型 文件系统 起始位置 结束位置

# 再次查看分区表
(parted) print

# 退出
(parted) quit

5.2 非交互式命令(适合脚本)

# 设置 GPT 分区表
sudo parted /dev/sdb mklabel gpt

# 创建分区(从 0% 到 100% 全部空间)
sudo parted /dev/sdb mkpart primary ext4 0% 100%

# 创建指定大小分区
sudo parted /dev/sdb mkpart primary ext4 0% 5G

# 删除分区(分区号从 1 开始)
sudo parted /dev/sdb rm 1

# 查看分区信息
sudo parted /dev/sdb print

5.3 parted 与其他工具对比优势

无需交互,一条命令完成
支持 resizepart 在线调整分区大小
分区对齐自动处理(性能优化)

六、格式化分区(创建文件系统)
6.1 常用文件系统类型

文件系统    命令  适用场景
ext4    mkfs.ext4   Linux 通用,最常用
xfs mkfs.xfs    大文件、高性能场景
btrfs   mkfs.btrfs  支持快照、压缩
vfat/FAT32  mkfs.vfat   U盘、跨平台兼容
ntfs    mkfs.ntfs   Windows 兼容

6.2 格式化命令示例

# 格式化为 ext4(最常用)
sudo mkfs.ext4 /dev/sdb1

# 指定卷标
sudo mkfs.ext4 -L mydata /dev/sdb1

# 格式化为 xfs
sudo mkfs.xfs /dev/sdb1

# 格式化为 FAT32
sudo mkfs.vfat -F 32 /dev/sdb1

6.3 查看格式化结果

# 查看文件系统信息
sudo blkid /dev/sdb1

# 查看分区 UUID(用于自动挂载)
sudo blkid | grep sdb1

七、挂载分区
7.1 临时挂载

# 创建挂载点目录
sudo mkdir -p /mnt/data

# 挂载分区
sudo mount /dev/sdb1 /mnt/data

# 验证挂载结果
df -h /mnt/data
# 或
mount | grep sdb1

永久挂载(fstab)

步骤 1:获取分区 UUID

sudo blkid /dev/sdb1
# 输出示例: UUID="550e8400-e29b-41d4-a716-446655440000"

步骤 2:编辑 /etc/fstab
sudo vim /etc/fstab
# 或使用 nano: sudo nano /etc/fstab

步骤 3:添加挂载条目
# 格式: UUID 挂载点 文件系统 选项 dump pass
UUID=550e8400-e29b-41d4-a716-446655440000 /mnt/data ext4 defaults 0 2

fstab 字段说明

字段  说明  常见值
第1列 设备标识    UUID=xxx 或 /dev/sdb1
第2列 挂载点 目录路径
第3列 文件系统    ext4, xfs, vfat
第4列 挂载选项    defaults, noatime, ro
第5列 dump备份  0(不备份)
第6列 fsck检查顺序    0=跳过, 1=根分区, 2=其他

步骤 4:验证 fstab 配置

# 挂载所有未挂载的分区(检查语法)
sudo mount -a

# 若无报错,配置正确

7.4 卸载分区

# 卸载指定挂载点
sudo umount /mnt/data

# 卸载指定设备
sudo umount /dev/sdb1

# 强制卸载(当设备忙时)
sudo umount -l /mnt/data

八、完整操作流程(一键脚本版)

#!/bin/bash
# 磁盘初始化脚本 - 以 /dev/sdb 为例

DISK="/dev/sdb"
PART="${DISK}1"
MOUNT_POINT="/data"

# 1. 创建 GPT 分区表并创建分区(使用全部空间)
sudo parted $DISK mklabel gpt
sudo parted $DISK mkpart primary ext4 0% 100%

# 2. 通知内核分区表已变更
sudo partprobe $DISK

# 3. 格式化分区为 ext4
sudo mkfs.ext4 -L data $PART

# 4. 创建挂载点并临时挂载
sudo mkdir -p $MOUNT_POINT
sudo mount $PART $MOUNT_POINT

# 5. 获取 UUID 并写入 fstab
UUID=$(sudo blkid -s UUID -o value $PART)
echo "UUID=$UUID $MOUNT_POINT ext4 defaults 0 2" | sudo tee -a /etc/fstab

# 6. 验证
sudo mount -a
df -h | grep $MOUNT_POINT

echo "磁盘初始化完成!"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容