Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux分区、格式化与挂载磁盘

Linux磁盘管理之分区、格式化与挂载磁盘的方法

作者:鸽芷咕

在Linux系统中,磁盘是存储数据的核心硬件,无论是服务器部署、日常使用还是开发环境配置,都离不开磁盘管理,本文将全程以实操为主,带你从零掌握每个环节的具体操作,需要的朋友可以参考下

1. 引言:为什么要学习Linux磁盘管理?

在Linux系统中,磁盘是存储数据的核心硬件,无论是服务器部署、日常使用还是开发环境配置,都离不开磁盘管理。常见场景包括:

磁盘管理的核心流程可概括为:识别磁盘 → 分区 → 格式化 → 挂载,这四个步骤环环相扣。本文将全程以实操为主,带你从零掌握每个环节的具体操作。

2. 磁盘管理基础概念(先搞懂这些再动手)

在动手操作前,先明确几个关键概念,避免踩坑:

2.1 磁盘与分区表

分区表类型支持最大磁盘容量最大分区数适用场景
MBR(Master Boot Record)2TB4个主分区(或3主+1扩展分区)旧设备、小容量磁盘
GPT(GUID Partition Table)18EB理论无限制(默认128个)新设备、大容量磁盘(推荐)

2.2 分区与文件系统

文件系统特点适用场景
ext4稳定、兼容好、支持日志系统分区、数据分区(通用首选)
XFS高性能、支持大容量、适合并行I/O服务器数据分区、数据库存储
Btrfs支持快照、 RAID、动态扩容需要高级功能的场景(如Docker存储)
vfat跨平台兼容(Windows/Linux)U盘、移动硬盘(小文件存储)

2.3 挂载的核心逻辑

Linux中,分区不会自动被系统识别,需通过“挂载”将分区关联到某个目录(如 /data),此后访问该目录即操作对应分区。关键概念:

3. 第一步:识别磁盘(查看系统中的磁盘与分区)

在进行任何操作前,先确认系统已识别新磁盘,常用命令如下:

3.1lsblk:直观查看磁盘与分区结构

lsblk(list block devices)是最常用的磁盘查看工具,输出清晰易懂:

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   200G  0 disk          # 新添加的未分区磁盘(目标操作磁盘)
nvme0n1     259:0    0  512G  0 disk 
└─nvme0n1p1 259:1    0  512G  0 part /home    # NVMe硬盘的/home分区

3.2fdisk -l:查看磁盘详细信息(含分区表)

fdisk 是传统磁盘工具,可查看磁盘容量、分区表类型等细节:

sudo fdisk -l  # 需要root权限

输出示例(重点关注新磁盘 /dev/sdb):

Disk /dev/sdb: 200 GiB, 214748364800 bytes, 419430400 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt  # 分区表类型为GPT
Disk identifier: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

4. 第二步:磁盘分区(MBR/GPT分区实操)

分区工具选择:

本文以 GPT分区表(推荐新磁盘使用)为例,演示分区流程,同时兼顾MBR分区方法。

4.1 用fdisk给新磁盘(/dev/sdb)创建GPT分区

4.1.1 进入fdisk工具(指定目标磁盘)

sudo fdisk /dev/sdb  # 注意:是/dev/sdb(磁盘),不是分区(如/dev/sdb1)

进入后终端提示 Command (m for help):,输入对应命令操作。

4.1.2 关键操作步骤(分步详解)

  1. 查看帮助:输入 m,查看所有支持的命令(无需记忆,按需查阅);
  2. 转换分区表类型(若为MBR需转换)
    若磁盘原是MBR分区表,输入 g 转换为GPT(新磁盘默认可能无分区表,输入 g 会创建GPT):
Command (m for help): g
Created a new GPT disklabel (GUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)

(若需创建MBR分区表,输入 o 即可);

创建分区:输入 n 新建分区,按提示配置:

Command (m for help): n
Partition number (1-128, default 1):  # 分区号(默认1,直接回车)
First sector (2048-419430399, default 2048):  # 起始扇区(默认2048,回车)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-419430399, default 419430399): +100G  # 分区大小(如+100G表示100GB,直接回车则占满剩余空间)

Created a new partition 1 of type 'Linux filesystem' and of size 100 GiB.

查看分区结果:输入 p 查看已创建的分区:

Command (m for help): p
Disk /dev/sdb: 200 GiB, 214748364800 bytes, 419430400 sectors
...
Device     Start       End   Sectors  Size Type
/dev/sdb1   2048 209717247 209715200  100G Linux filesystem
/dev/sdb2 209717248 314574847 104857600   50G Linux filesystem

保存分区并退出:输入 w 保存配置(若想放弃,输入 q 退出):

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

验证分区:退出后执行 lsblk,确认分区已创建:

lsblk /dev/sdb

输出应显示 /dev/sdb1/dev/sdb2 分区。

4.2 用parted工具创建分区(进阶)

parted 支持交互式和命令行模式,适合大容量磁盘分区,以创建100GB XFS分区为例:

sudo parted /dev/sdb  # 进入parted交互式模式
(parted) mklabel gpt  # 创建GPT分区表(若已存在可跳过)
(parted) mkpart primary xfs 0% 100GB  # 创建主分区,文件系统xfs,大小0%-100GB
(parted) print  # 查看分区
(parted) quit  # 退出

5. 第三步:格式化分区(创建文件系统)

分区后必须格式化,即创建文件系统,才能存储数据。使用 mkfs 命令(make filesystem),格式为 mkfs.文件系统类型 分区路径

5.1 常用格式化命令(代码示范)

5.1.1 格式化为ext4(通用首选)

# 格式化/dev/sdb1为ext4(-F强制格式化,-L添加卷标,方便识别)
sudo mkfs.ext4 -F -L data1 /dev/sdb1

输出示例(显示格式化进度和信息):

mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 26214400 4k blocks and 6553600 inodes
Filesystem UUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Superblock backups stored on blocks: 
...
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done

5.1.2 格式化为XFS(高性能场景)

XFS适合大文件和高并发I/O,常用于服务器数据分区:

# 格式化/dev/sdb2为XFS(-f强制格式化,-L卷标)
sudo mkfs.xfs -f -L data2 /dev/sdb2

5.1.3 格式化为vfat(跨平台兼容)

适合U盘或移动硬盘(Windows和Linux均可访问):

sudo mkfs.vfat -F 32 /dev/sdb3  # -F 32表示FAT32格式

5.2 关键注意事项

6. 第四步:挂载磁盘(临时与永久挂载)

格式化后,需将分区挂载到目录才能访问,分为临时挂载(重启失效)和永久挂载(推荐)。

6.1 临时挂载(快速测试)

使用 mount 命令,格式:sudo mount 分区路径 挂载点目录

6.1.1 操作步骤

创建挂载点目录(必须是空目录):

sudo mkdir -p /mnt/data1  # /mnt/data1为挂载点,可自定义(如/home/ubuntu/data)
sudo mkdir -p /mnt/data2

挂载分区

# 挂载ext4分区/dev/sdb1到/mnt/data1
sudo mount /dev/sdb1 /mnt/data1
# 挂载XFS分区/dev/sdb2到/mnt/data2
sudo mount /dev/sdb2 /mnt/data2

验证挂载

# 方法1:df -h 查看挂载状态(-h人类可读格式)
df -h

输出示例(可见 /dev/sdb1/dev/sdb2 已挂载):

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       995G  100G  845G  11% /
/dev/sdb1       100G   20K  100G   1% /mnt/data1
/dev/sdb2        50G   53M   50G   1% /mnt/data2

或用 mount 命令直接查看:

mount | grep /dev/sdb

6.2 永久挂载(重启不失效,核心推荐)

临时挂载重启后会失效,需通过 /etc/fstab 文件配置永久挂载,步骤如下:

6.2.1 步骤1:获取分区UUID(推荐用UUID挂载,更稳定)

UUID是分区的唯一标识,比 /dev/sdb1 更稳定(磁盘顺序变化不会影响挂载):

blkid  # 查看所有分区的UUID和文件系统

输出示例(重点复制目标分区的UUID):

/dev/sdb1: LABEL="data1" UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext4" PARTUUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
/dev/sdb2: LABEL="data2" UUID="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY" TYPE="xfs" PARTUUID="YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY"

6.2.2 步骤2:编辑/etc/fstab文件

/etc/fstab 是系统启动时自动挂载的配置文件,格式为:UUID=xxx 挂载点 文件系统类型 挂载参数 0 0

备份fstab文件(重要!防止配置错误)

sudo cp /etc/fstab /etc/fstab.bak

编辑fstab

sudo vim /etc/fstab  # 用vim编辑,新手可改用nano:sudo nano /etc/fstab

添加挂载配置(在文件末尾添加以下内容):

# 挂载/dev/sdb1(ext4)到/mnt/data1
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/data1 ext4 defaults 0 2
# 挂载/dev/sdb2(xfs)到/mnt/data2
UUID=YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY /mnt/data2 xfs defaults 0 2

配置参数解读:

6.2.3 步骤3:验证配置并生效

测试挂载配置是否正确(关键!避免配置错误导致系统无法启动):

sudo mount -a  # 加载/etc/fstab中的所有配置,无报错则正确

若报错,检查UUID、挂载点、文件系统类型是否正确;

验证挂载:再次执行 df -h,确认分区已挂载;

重启测试(可选):重启系统后,执行 df -h 确认挂载依然生效:

sudo reboot

7. 常用磁盘管理辅助命令(必备工具)

7.1 查看磁盘使用情况

df -h  # 查看所有挂载分区的使用情况
du -sh /mnt/data1/*  # 查看挂载点下各文件/目录的大小(-s汇总,-h人类可读)

7.2 查看分区UUID和文件系统

blkid  # 快速查看所有分区的UUID、LABEL、TYPE

7.3 卸载分区(如需修改或移除磁盘)

# 卸载/mnt/data1(确保当前不在该目录下)
sudo umount /mnt/data1
# 或通过分区路径卸载
sudo umount /dev/sdb1

7.4 扩展分区(磁盘空间不足时)

若分区空间不够,可扩展分区(以ext4为例):

  1. 先通过分区工具(fdisk/parted)扩展分区大小(需先删除相邻空闲分区);
  2. 扩展文件系统:
# 扩展ext4分区(需先卸载或在线扩展)
sudo resize2fs /dev/sdb1
# 扩展XFS分区(无需卸载)
sudo xfs_growfs /mnt/data2

8. 常见问题排查(避坑指南)

8.1 挂载失败:“mount: /mnt/data1: can’t find in /etc/fstab.”

8.2 重启后挂载失效

8.3 系统无法启动(因fstab配置错误)

8.4 格式化时提示“Device or resource busy”

9. 总结与实操建议

Linux磁盘管理的核心流程是 “识别→分区→格式化→挂载”,关键要点总结:

  1. 新磁盘优先选择GPT分区表(支持大容量和多分区);
  2. 文件系统推荐ext4(通用)或XFS(高性能);
  3. 永久挂载必须配置 /etc/fstab,且务必先用 mount -a 测试;
  4. 操作前备份重要数据,避免误格式化系统分区。

实操建议

以上就是Linux磁盘管理之分区、格式化与挂载磁盘的方法的详细内容,更多关于Linux分区、格式化与挂载磁盘的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文