给服务器上的Linux加一块新硬盘,核心就四步:确认系统认盘、创建分区、格式化文件系统、挂载目录并写入fstab,整个过程用lsblk、fdisk、mkfs、mount几个命令就能完成,下面按实际运维顺序拆开讲。
服务器Linux添加硬盘分区前,你先想清楚这两件事
不少人拿到新硬盘就直接fdisk回车,结果把带数据的旧盘抹了,或者分完区挂在错误的目录上,动手之前,先确认两件事,能省掉后面一堆麻烦。
第一件事,判断这块盘是裸盘还是带数据的旧盘
裸盘是指刚从服务器上插上去、从未格式化过的硬盘,你看到它是个完整的块设备,dev/sdb,下面没有任何分区,带数据的旧盘,里头可能有之前的文件系统,另一个服务器拆下来的盘尤其常见,拿不准的时候,先执行lsblk和fdisk -l看看盘上有没有分区记录,如果是旧盘并且数据不再需要,你可以直接分区;假如盘上还有要紧数据,先把数据拷走再操作。
第二件事,数据盘打算分几个区,分区表用MBR还是GPT
一块新数据盘,多数情况下不需要像Windows那样分C盘D盘,直接整块盘格式化成一种文件系统再挂载到某个目录,就够用了,只有少数场景需要分区:你要做LVM逻辑卷管理,或者打算一块物理盘上同时装系统和数据,才需要明确分区。
分区表的选择有硬性规则超过2TB的硬盘只能选GPT,MBR最大识别到2TB,行业共识认为,2TB以内的盘用MBR兼容性最好,超过2TB直接上GPT,企业服务器现在普遍批量采购6TB、8TB的机械盘,不管新项目还是老机器,统一用GPT最省心,反正现代Linux发行版对GPT支持已经很成熟了。
| 分区表类型 | 最大硬盘容量 | 支持分区数量 | 适用场景 |
|---|---|---|---|
| MBR | 2TB | 主分区最多4个 | 老旧服务器、小容量系统盘、需兼容旧系统 |
| GPT | 远超常规硬盘容量 | 默认128个分区 | 数据盘、大容量存储、UEFI引导 |
linux怎么给新硬盘分区?按这四步走不会出错
这里的操作针对全新的数据盘,假设新盘是/dev/sdb,长度不限。
第一步:用lsblk确认新硬盘已被系统识别
新盘插上服务器后,Linux不一定马上能看到,先跑一下:
lsblk
输出里如果多出sdb盘,说明识别成功,sdb下面没有分区子项,就是裸盘状态,如果lsblk没有显示,再执行fdisk -l看内核是否认到了设备,两个命令都不显示就考虑重启服务器或者检查硬件连接。
第二步:创建分区,fdisk完全够用
fdisk适合2TB以下的盘,也支持创建GPT分区表,操作流程很直观:
fdisk /dev/sdb
进入交互界面后,依次输入:
- n:新建分区
- p:选择主分区,回车默认分区号
- 起始扇区直接回车取默认
- 结束扇区直接回车取整块盘
- w:保存分区表并退出
整个过程十几秒,如果新建的是GPT分区表,先用g命令初始化,再走n、p、w的流程。
分区完成后回头跑一遍lsblk,应该能看到sdb下多了个sdb1子分区。
第三步:格式化分区,ext4和xfs按场景选
大部分云服务器Linux默认文件系统是ext4或xfs,选哪个?
- ext4:老牌稳定,几乎所有Linux发行版都兼容,文件级备份工具支持度最好
- xfs:大文件和大目录表现更佳,RHEL和CentOS系默认就是你
# ext4或xfs二选一 mkfs.ext4 /dev/sdb1 # 或者 mkfs.xfs /dev/sdb1
格式化是破坏性操作,确认/dev/sdb1是你新创建的分区再执行。
第四步:挂载到目录,并写入fstab防止重启丢失
先建一个挂载点,比如数据统一放/data:
mkdir /data mount /dev/sdb1 /data
这样就能用了,但重启后这个挂载关系会消失,必须写进/etc/fstab,为了稳定,推荐用UUID而不是设备名,设备名可能在重启后变化。
blkid /dev/sdb1
把输出里的UUID复制下来,编辑/etc/fstab,加一行:
UUID=你的uuid值 /data ext4 defaults 0 0
最后验证一下配置是否有误:
umount /data mount -a lsblk
mount -a会按fstab重新挂载全部条目,不报错就说明配置成功。
Linux系统磁盘扩容时,分区和挂载怎么做才对
新加一块盘挂到新目录是常规操作,但很多时候你是为了扩容已有的分区,比如根目录空间满了,这个场景比加数据盘复杂,操作不当容易丢数据。
根分区扩容,首选Linux逻辑卷管理(LVM)
如果你的根分区用的是LVM,扩容路径很清晰:新硬盘创建PV(物理卷)、加入VG(卷组)、扩展LV(逻辑卷),命令如下:
pvcreate /dev/sdb1 vgextend centos /dev/sdb1 lvextend -L +100G /dev/mapper/centos-root
这里centos是卷组名,可以根据vgs命令查到,扩展之后文件系统也需要同步扩大:
resize2fs /dev/mapper/centos-root
xfs文件系统用:
xfs_growfs /
整个过程不影响线上业务,是最推荐的扩容方式,但很多服务器装了Linux系统后没有采用LVM,根分区就是一个普通分区,需要在操作系统的live环境里处理才安全。
云服务器扩容后硬盘空间没变是常见问题
很多人在云控制台把系统盘或数据盘的容量从50G扩到了100G,进入服务器后df -h一看,空间一点没变,这通常是因为控制台扩的是云盘容量,但操作系统里的分区表和文件系统还没有感知到新空间,处理方法:
- 确认新容量已可见:lsblk看sda盘大小是否为100G
- 扩展分区:fdisk先删掉原分区重建并保持起始扇区不变,或者直接用growpart命令
- 扩展文件系统:resize2fs(ext4)或xfs_growfs(xfs)
操作前务必备份分区表,扩展失败恢复的成本远高于事前准备的成本。
云服务器加硬盘分区,和物理服务器有什么不同
之前讨论的命令行操作在物理机和云服务器上完全通用,但云服务器多了一层控制台逻辑。
在物理服务器上,你插上硬盘,重启,然后进系统分区,在云服务器上,你通常要在云控制台完成
购买云盘、挂载到实例两个前置动作,硬盘才会出现在服务器内部,部分云厂商提供的控制台界面里还能直接一键执行分区、格式化、挂载的自动化脚本,省掉手工操作,但对理解底层原理没有帮助。
云盘类型也直接影响使用体验,高性能SSD云盘延迟低、IOPS高,适合数据库和缓存;普通云盘价格便宜,适合备份、日志等冷数据,服务器加硬盘的价格按云盘类型、容量和地域浮动,一块100GB的云盘每月的费用并不高,但对于长期运行的重业务,存储成本是笔实打实的预算。
还有一点经常被忽略:云盘挂载和云服务器必须在同一个可用区,买盘的时候选错可用区,挂在另外一台机器上,控制台会一直报错,没法挂载。
Linux硬盘分区怎么弄,三个常见疑问一次说清
分区后需要重启服务器吗?
不需要,fdisk创建的MBR分区和parted创建的GPT分区都会立即在内核中生效,执行partprobe或重启一次可以更新分区表,但对完全新添加的裸盘来说,直接lsblk就能看到新分区,通常没必要重启。
新加的数据盘不分区直接用行不行?
可以,整块盘直接格式化后挂载,命令为:
mkfs.ext4 /dev/sdb mount /dev/sdb /data
缺点是有些运维脚本和监控工具习惯按分区名(如/dev/sdb1)识别存储设备,不分区可能导致主机的故障转移和自动挂载逻辑判断不到这块盘。
把新盘挂载到已有内容的目录,旧数据会丢吗?
不会丢,但会被隐藏,data目录下原本有文件,挂载新盘后进入/data看到的是新盘内容,原有文件仍留在底层的旧目录中,卸载新盘后又会重新出现,正确做法是先备份原目录数据到新盘,再改fstab挂载路径。
Linux服务器添加硬盘分区不是一次性操作,而是伴随服务器整个生命周期反复出现的运维场景,记住裸盘分区四步法:确认识别、创建分区、格式化、挂载写fstab,再针对LVM扩容和云盘场景做动态调整,绝大多数情况下你都能在不中断业务的前提下完成存储扩展。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/727460.html





