NVMe SSD 分区、格式化与挂载操作文档

本文介绍如何在 Linux 系统中对 NVMe 固态硬盘(以 /dev/nvme0n1 为例)进行分区、格式化、挂载及性能测试的完整流程,适用于 QuecPi Alpha 。

分区操作(使用 fdisk)

通过 fdisk 工具对 NVMe 设备进行分区,步骤如下:

进入分区交互界面

执行以下命令,启动 fdisk 并指定目标 NVMe 设备:

fdisk /dev/nvme0n1

交互界面操作步骤

进入 fdisk 交互模式后,按以下顺序执行命令:

创建 GPT 分区表

输入 g 并回车,创建 GUID 分区表(GPT),适用于大容量设备(推荐):

Command (m for help): g
Created a new GPT disklabel (GUID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)

新建分区

输入 n 并回车,创建一个新分区。后续参数(分区号、起始扇区、结束扇区)保持默认即可(默认会使用全部可用空间):

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-xxxxxxxxx, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-xxxxxxxxx, default xxxxxx): 
Created a new partition 1 of type 'Linux filesystem' and of size XX GiB.

写入分区表并退出

输入 w 并回车,将分区配置写入设备并退出 fdisk:

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

操作完成后,系统会生成新分区 /dev/nvme0n1p1(p1 表示第一个分区)。

格式化分区(EXT4 格式)

使用 mkfs.ext4 工具将新分区格式化为 EXT4 文件系统(适用于大多数 Linux 环境):

mkfs.ext4 /dev/nvme0n1p1

执行后会显示格式化进度,完成后输出类似信息:

mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 12345678 4k blocks and 3456789 inodes
Filesystem UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Superblock backups stored on blocks: 
  32768, 98304, 163840, ...
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

手动挂载分区

创建挂载目录

使用 mkdir 命令创建一个用于挂载 SSD 的目录(示例路径为 /mnt/myssd):

mkdir -p /mnt/myssd

挂载分区

将 /dev/nvme0n1p1 分区挂载到 /mnt/myssd 目录:

mount /dev/nvme0n1p1 /mnt/myssd

可通过 df -h 命令验证挂载是否成功,若输出中包含 /dev/nvme0n1p1 和 /mnt/myssd 则表示挂载正常:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p1  100G   5G   95G   5% /mnt/myssd

配置自动挂载(重启后生效)

通过修改 /etc/fstab 文件实现系统启动时自动挂载分区:

编辑 fstab 文件

编辑器打开 /etc/fstab:

添加挂载配置

在文件末尾添加以下行,指定分区、挂载点、文件系统类型及挂载参数:

/dev/nvme0n1p1  /mnt/myssd  ext4  defaults  0  2

性能测试(读写速度验证)

使用 dd 命令测试 SSD 的读写性能(测试时确保分区已挂载):

读取速度测试

创建一个临时测试文件(若已存在),并通过读取该文件到空设备(/dev/null)测试读取速度:

dd if=/mnt/myssd/testfile of=/dev/null bs=1G iflag=direct
iflag=direct:绕过系统缓存,测试真实读取速度
plaintext
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.852345 s, 1.3 GB/s

写入速度测试

生成一个 1GB 的空文件(/dev/zero 为零数据来源),测试写入速度:

dd if=/dev/zero of=/mnt/myssd/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 1.245678 s, 862 MB/s

测试完成后可删除临时文件:

rm /mnt/myssd/testfile