在服务器管理或日常使用中,随着数据量的增长,为CentOS系统添加一块新的硬盘是一项非常常见且重要的操作,这不仅能扩展存储容量,还能通过将不同类型的数据(如系统文件、用户数据、数据库文件)分离到不同磁盘,来提升系统性能和数据管理的灵活性,本文将详细介绍从物理安装到系统配置的完整流程,帮助您干净、高效地为CentOS添加新硬盘。

第一步:识别新硬盘
在将新硬盘物理安装到服务器或计算机上后,首先需要让CentOS系统识别到它,登录系统后,可以使用以下几种命令来查看当前连接的存储设备。
lsblk(List Block Devices)是一个现代化且直观的命令,它能以树状结构清晰地展示所有块设备。
lsblk
执行该命令后,您可能会看到类似以下的输出,假设在添加新硬盘前,系统只有一块sda磁盘:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
安装新硬盘后(它被识别为sdb),再次运行lsblk,输出会多出一个设备:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 100G 0 disk
sdb就是我们新添加的100G硬盘,它还没有任何分区(没有part子项),记下这个设备名(/dev/sdb),后续操作都将基于它。
第二步:磁盘分区
新硬盘在使用前必须进行分区,分区是将一个物理磁盘划分为一个或多个逻辑存储区域的过程。fdisk是Linux下最经典和常用的分区工具。
使用以下命令启动对/dev/sdb的分区操作:
sudo fdisk /dev/sdb
进入fdisk交互式界面后,按照以下步骤输入命令(通常使用n表示新建,p表示主分区,w表示保存并退出):
- 输入
n创建一个新分区。 - 输入
p选择创建主分区(Primary)。 - 输入分区号,直接回车选择默认的
1。 - 输入起始扇区,直接回车选择默认值。
- 输入结束扇区,直接回车选择默认值,这将使用整个磁盘的所有空间。
- 输入
p可以打印当前的分区表,确认分区信息无误。 - 输入
w将分区表写入磁盘并退出。
操作完成后,系统会提示分区表已更新,再次运行lsblk,您会看到sdb下出现了一个名为sdb1的分区。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
第三步:格式化分区
分区创建后,它还只是一个原始的区块,需要被格式化成特定的文件系统(如ext4, XFS等)后才能存储数据,ext4是CentOS中最常用和稳定的文件系统。
使用mkfs.ext4命令来格式化刚刚创建的/dev/sdb1分区:
sudo mkfs.ext4 /dev/sdb1
这个过程会花费一些时间,具体取决于磁盘大小和速度,完成后,系统会输出类似“Writing superblocks and filesystem accounting information: done”的提示,表示格式化已完成。

第四步:挂载文件系统
格式化后的分区需要“挂载”到系统目录树中的一个目录(称为“挂载点”)上,才能通过该目录访问磁盘空间。
创建一个挂载点,我们计划将这块新硬盘用于存放数据,可以创建一个名为/data的目录:
sudo mkdir /data
使用mount命令将分区临时挂载到这个目录:
sudo mount /dev/sdb1 /data
挂载成功后,可以使用df -hT命令查看,您会看到/dev/sdb1已经挂载在/data目录下,并显示了其文件系统类型、总大小、已用空间等信息。
df -hT | grep /data
输出示例:
/dev/sdb1 ext4 98G 61M 93G 1% /data
您已经可以向/data目录写入文件了,但请注意,这种挂载方式是临时的,系统重启后会失效,为了实现开机自动挂载,需要进行下一步配置。
第五步:配置开机自动挂载
要让系统在每次启动时自动挂载新硬盘,需要编辑/etc/fstab文件,这个文件记录了系统启动时需要挂载的文件系统信息。
为了确保挂载的稳定性,推荐使用分区的UUID(Universally Unique Identifier)而不是设备名(如/dev/sdb1),因为设备名可能在某些情况下发生变化。
获取/dev/sdb1分区的UUID:
sudo blkid /dev/sdb1
输出会类似这样:
/dev/sdb1: UUID="a1b2c3d4-e5f6-7890-1234-567890abcdef" TYPE="ext4" PARTUUID="..."
复制长串的UUID值,使用vi或nano等编辑器打开/etc/fstab文件:
sudo vi /etc/fstab
在文件末尾添加一行,格式如下,各字段之间用Tab键或空格分隔。

| 设备标识 | 挂载点 | 文件系统类型 | 挂载选项 | dump | pass |
|---|---|---|---|---|---|
UUID=你的UUID |
/data |
ext4 |
defaults |
0 |
0 |
将你的UUID替换为刚才复制的UUID,完整的行看起来像这样:
UUID=a1b2c3d4-e5f6-7890-1234-567890abcdef /data ext4 defaults 0 0
字段解释:
- 设备标识: 这里使用UUID,确保唯一性。
- 挂载点: 目标目录。
- 文件系统类型: 我们格式化成的
ext4。 - 挂载选项:
defaults是默认选项集,包含rw,suid,dev,exec,auto,nouser,async,适用于大多数场景。 - dump:
0表示不使用dump备份。 - pass:
0表示开机时不进行磁盘检查,根分区通常设为1。
保存并关闭/etc/fstab文件,为了避免因配置错误导致下次启动失败,可以先执行以下命令测试fstab文件是否正确,它会尝试挂载所有未挂载的条目:
sudo mount -a
如果没有任何错误输出,说明配置无误,您可以重启系统,或者直接使用df -hT确认/data目录已经挂载了新分区,它将在未来每次开机后自动生效。
相关问答FAQs
如果我希望将整块硬盘都用作一个分区,但不想使用fdisk,有更简单的方法吗?
解答: 有的,对于整块硬盘用作一个分区的情况,可以使用parted工具或直接格式化整个磁盘设备,您可以跳过分区步骤,直接将/dev/sdb(而不是/dev/sdb1)进行格式化:sudo mkfs.ext4 /dev/sdb,在/etc/fstab中,使用/dev/sdb的UUID进行挂载即可,这种方法省去了分区步骤,但缺点是灵活性较差,未来无法在同一块磁盘上创建其他分区,对于大多数应用场景,标准的分区流程依然是推荐做法。
ext4和XFS文件系统有什么区别?在为新硬盘格式化时应该如何选择?
解答: ext4和XFS都是CentOS上优秀且成熟的企业级日志文件系统,但各有侧重。
- ext4:是ext文件系统的第四代,非常稳定可靠,是长期以来Linux的默认文件系统,它在处理大量小文件时性能良好,兼容性极佳,适合绝大多数通用场景。
- XFS:是一个高性能的64位日志文件系统,特别擅长处理大文件和高并发I/O操作,它在需要处理超大文件(如视频、图像处理)或高吞吐量场景(如数据库、虚拟机镜像存储)下表现更出色。
选择建议:对于常规的服务器存储、文件共享或Web应用,ext4是一个安全、稳定且无需过多考虑的选择,如果您明确知道您的应用场景涉及大量大文件读写或需要极高的I/O性能,那么XFS会是更好的选择,对于个人用户或通用服务器,坚持使用ext4通常是最佳实践。