当前位置: 代码网 > 服务器>服务器>Linux > Linux磁盘管理之分区、格式化与挂载磁盘的方法

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

2025年11月28日 Linux 我要评论
1. 引言:为什么要学习linux磁盘管理?在linux系统中,磁盘是存储数据的核心硬件,无论是服务器部署、日常使用还是开发环境配置,都离不开磁盘管理。常见场景包括:新服务器添加硬盘后,需要分区格式化

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

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

  • 新服务器添加硬盘后,需要分区格式化才能存储数据;
  • 系统磁盘空间不足时,需扩展分区或挂载新磁盘;
  • 为不同数据类型(如系统文件、数据库、日志)划分独立分区,提升安全性和性能。

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

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

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

2.1 磁盘与分区表

  • 磁盘标识:linux中磁盘以 /dev/sdx(sata/scsi接口)或 /dev/nvmexny(nvme接口)命名,如 /dev/sda(第一块sata硬盘)、/dev/nvme0n1(第一块nvme硬盘)。
  • 分区表类型:磁盘必须先创建分区表,才能划分分区,主流类型有两种:
分区表类型支持最大磁盘容量最大分区数适用场景
mbr(master boot record)2tb4个主分区(或3主+1扩展分区)旧设备、小容量磁盘
gpt(guid partition table)18eb理论无限制(默认128个)新设备、大容量磁盘(推荐)

2.2 分区与文件系统

  • 分区:将一块物理磁盘划分为多个逻辑区域(如 /dev/sda1 是第一块sata硬盘的第一个分区),每个分区独立使用。
  • 文件系统:分区后需格式化(创建文件系统),才能存储文件。linux主流文件系统:
文件系统特点适用场景
ext4稳定、兼容好、支持日志系统分区、数据分区(通用首选)
xfs高性能、支持大容量、适合并行i/o服务器数据分区、数据库存储
btrfs支持快照、 raid、动态扩容需要高级功能的场景(如docker存储)
vfat跨平台兼容(windows/linux)u盘、移动硬盘(小文件存储)

2.3 挂载的核心逻辑

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

  • 挂载点:用于关联分区的目录(如 /mnt/disk1),必须是空目录;
  • 临时挂载:重启系统后失效(mount 命令);
  • 永久挂载:通过 /etc/fstab 配置,重启后自动生效(推荐)。

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分区
  • type 列:disk 表示物理磁盘,part 表示分区;
  • mountpoint 列:显示已挂载的目录(空表示未挂载)。

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
  • disklabel type 显示 dos,则为mbr分区表;
  • 新磁盘未分区时,会提示“no partitions”。

4. 第二步:磁盘分区(mbr/gpt分区实操)

分区工具选择:

  • fdisk:支持mbr和gpt分区表,操作简单(推荐入门);
  • parted:支持大磁盘和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.
  • 分区类型默认是 linux filesystem(适用于ext4/xfs等);
  • 若需创建多个分区,重复 n 命令即可(如再创建一个50gb分区);

查看分区结果:输入 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 关键注意事项

  • 格式化会清除分区内所有数据,务必确认分区无重要数据;
  • 卷标(-l 参数)可通过 blkid 命令查看,方便识别分区;
  • 不要格式化系统分区(如 /dev/sda1/dev/sda2),否则会导致系统崩溃。

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

配置参数解读:

  • defaults:默认挂载参数(rw、suid、dev、exec、auto、nouser、async);
  • 第5列(0):是否dump备份(0=不备份,1=备份);
  • 第6列(2):是否开机自检(0=不自检,1=优先自检,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
  • 卸载前需退出挂载点目录(如当前在 /mnt/data1,需先执行 cd ~);
  • 若提示“device is busy”(设备忙),用 fuser -m /mnt/data1 查看占用进程,杀死进程后再卸载。

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.”

  • 原因:使用 mount 挂载点 时,未在 /etc/fstab 配置,需指定分区路径:sudo mount /dev/sdb1 /mnt/data1

8.2 重启后挂载失效

  • 原因:未配置 /etc/fstab,或配置错误;
  • 解决:按6.2节重新配置 /etc/fstab,执行 sudo mount -a 测试。

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

  • 原因:/etc/fstab 中uuid、挂载点或文件系统类型错误;
  • 解决:
    1. 启动时按 e 进入grub编辑模式;
    2. 在linux内核行末尾添加 init=/bin/bash,按ctrl+x启动;
    3. 执行 mount -o remount,rw / 挂载根分区为可写;
    4. 编辑fstab:vim /etc/fstab,修正错误配置;
    5. 重启:reboot

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

  • 原因:分区已挂载,无法格式化;
  • 解决:先卸载分区:sudo umount /dev/sdb1,再格式化。

9. 总结与实操建议

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

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

实操建议

  • 新手可先用虚拟机(如vmware、virtualbox)添加虚拟磁盘练习,避免损坏物理机数据;
  • 实际部署时,为系统分区、数据分区、日志分区划分独立磁盘/分区,提升安全性和可维护性;
  • 定期用 df -h 查看磁盘使用情况,避免磁盘满导致服务异常。

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com