服务器装完系统后扩展20t,核心答案就是:先确认新磁盘是否被系统识别,然后根据你的实际需求,选择用LVM在线扩容根分区,或者直接分区格式化后挂载成独立数据盘。 这个操作不复杂,但很容易栽在分区表类型和文件系统扩容命令上,下面把两条路都给你捋清楚。
服务器装完系统后扩展20t怎么弄?先分清这两种场景
你遇到的情况无非两种:一种是系统盘(比如根分区)空间不够,想把20t并进去;另一种是这20t打算做纯数据盘,单独挂载到某个目录下,这两种场景的处理方式完全不同,选错方案后面会很难受。
先做基础检查,登录服务器后执行:
lsblk fdisk -l
如果看到类似 /dev/sdb 且大小为20T,说明系统已经识别这块盘,接下来要判断磁盘是否已经初始化过。lsblk 里能看到 sdb1 这样的分区,但没挂载,那属于已有分区的盘;如果整块盘都是空闲状态,那就按下面的步骤走。
服务器扩展20t时LVM扩容和直接挂载哪个更合适
这是最核心的分岔路口,直接决定后续操作难度,我建议你这样选:
- 根分区空间不足,用LVM扩容,因为根分区一般被LVM管理,直接把新盘扩进卷组,然后扩大逻辑卷,不用动现有数据。
- 新加数据盘,直接分区挂载,比如放备份、放日志、放视频文件,走独立挂载点更清晰,不干扰系统盘。
- 如果系统没做LVM(比如装系统时用了默认分区),那只能直接挂载,没法在线扩展根分区,除非你用其他工具,但风险较高。
行业共识认为,绝大多数Linux服务器安装时默认采用LVM方案,这也是最方便后续扩容的设计,如果你不确定,执行 df -hT 看看根分区的类型,如果是 xfs 或 ext4,再用 vgs 查卷组,有输出就说明是LVM。
服务器装完系统后扩展20t的操作步骤:LVM在线扩容
这套流程适合把20t合并到现有根分区或某个逻辑卷,全程不需要重启,也不影响业务,但前提是你用的是LVM。
第一步:把20t新磁盘初始化为物理卷
pvcreate /dev/sdb
执行后可用 pvs 或 pvdisplay 查看,如果提示“Device /dev/sdb not found”,先执行 partprobe 刷新分区表,如果磁盘已经被某个老系统初始化过,会提示“already contains a filesystem”,这时需要慎重,确认无数据后可用 pvcreate -f /dev/sdb 强制初始化。
第二步:把新物理卷加入现有卷组
先用 vgs 看你的卷组名,常见的是 centos 或 ubuntu-vg,然后执行:
vgextend 你的卷组名 /dev/sdb
vgextend centos /dev/sdb
执行后 vgs 里面会看到 VFree 增加了20T,说明扩展成功。
第三步:扩展目标逻辑卷并同步文件系统
先看逻辑卷路径,用 lvdisplay 或 df -h,路径一般是 /dev/mapper/centos-root,然后扩展到100%剩余空间:
lvextend -l +100%FREE /dev/mapper/centos-root
接下来根据文件系统类型执行不同的扩容命令。这里最容易翻车:
- 如果是
xfs,使用:
xfs_growfs /dev/mapper/centos-root
- 如果是
ext4,使用:
resize2fs /dev/mapper/centos-root
xfs文件系统不能用resize2fs,否则会报错,ext4不能用xfs_growfs,这点务必记牢。
第四步:验证扩容结果
df -h lsblk
看到根分区的容量从原来的几百G变成20T出头,说明成功,整个过程中数据库、网站服务都不会中断,这就是LVM的价值。
服务器扩大磁盘容量20t时分区表选MBR还是GPT
如果你决定直接挂载20t作为数据盘,那就绕不开分区表的问题。MBR格式最大只支持2T磁盘,你的盘是20T,必须用GPT分区表,这个常识一定要刻在脑子里。
用parted工具创建GPT分区
先安装parted(通常已自带):
yum install -y parted # CentOS/Rocky apt install -y parted # Ubuntu/Debian
然后操作:
parted /dev/sdb mklabel gpt mkpart data 0% 100% quit
也可以用一行命令:
parted -s /dev/sdb mklabel gpt parted -s /dev/sdb mkpart primary 0% 100%
分区完成后,执行 lsblk 会看到 /dev/sdb1,如果看不到,运行 partprobe /dev/sdb 让内核重新读取分区表。
格式化并挂载到指定目录
推荐使用xfs,性能好且支持大文件,执行:
mkfs.xfs /dev/sdb1
然后创建挂载点并挂载:
mkdir -p /data mount /dev/sdb1 /data
注意:/data 目录已经存在并且里面有数据,先停掉相关服务再挂载,否则旧数据会被隐藏。
设置开机自动挂载
这一步别偷懒,直接写挂载命令到rc.local容易失效,正确做法是编辑 /etc/fstab:
blkid /dev/sdb1
复制UUID,然后写入:
UUID=你的UUID /data xfs defaults 0 0
保存后执行 mount -a 测试,没有报错就说明没问题,如果改错了fstab导致无法开机,进紧急模式改回来即可,但尽量仔细。
服务器扩容20t后重启挂载丢失怎么处理
这个问题相当常见,很多人扩完容量后没写fstab,重启后20t空间消失了,第一反应是磁盘坏了,其实只是没挂载。
出现这种情况时,先别慌,执行:
lsblk
看看 /dev/sdb1 是否还在,如果还在,直接重新挂载:
mount /dev/sdb1 /data
然后赶紧补写 /etc/fstab 中的开机挂载项。lsblk 里看不到分区,可能分区表没写入,用 partprobe 刷新,或者重新用parted创建分区。
还有一种情况是挂载时提示“mount: wrong fs type”,说明格式化文件系统与挂载选项不匹配,检查 /etc/fstab 里的文件系统类型是否写成了auto,最好明确写 xfs 或 ext4
。
服务器扩展20t后如何验证效果与性能
扩展完成后别急着收工,做一轮基础健康检查更安心。
- 用
df -h看容量和挂载点是否符合预期。 - 用
fsck -f /dev/sdb1检查文件系统(xfs用xfs_repair -n,但不要随意修复)。 - 用
dd测试写速度,dd if=/dev/zero of=/data/test bs=1M count=1024,rm -f /data/test。 - 查看磁盘健康状态:
smartctl -a /dev/sdb(需安装smartmontools)。
如果发现速度远低于预期,检查磁盘连接方式,比如sata盘和sas盘性能差距较大,还有可能被RAID卡限制,业内专家指出,大容量机械盘的顺序读写能力通常在150-250MB/s,如果只有几十MB/s,优先排查链路速率和缓存策略。
关于服务器扩展20t的几组常见疑问
服务器装完系统后扩展20t需要重启吗?
如果走LVM流程,完全不需要重启,直接分区挂载也不需要重启,只要执行 partprobe 刷新分区表就能识别新分区,真正需要重启的情况是修改了内核参数或者驱动不识别新磁盘,那种情况比较罕见。
服务器扩张20t时提示磁盘已经被分区怎么办?
说明这块盘之前用过,先确认盘上是否有重要数据,如果确认是全新盘或数据可丢,用 parted -s /dev/sdb mklabel gpt 强制重做分区表,然后继续操作,如果是旧盘且里面有数据,千万不要乱执行,先挂载只读检查数据。
为什么lvextend后df -h容量没变化?
这是因为你只扩了逻辑卷,没有调整文件系统,xfs要执行 xfs_growfs 挂载点,ext4要执行 resize2fs 设备路径,这两个命令漏掉一个,容量都不会更新,如果你使用的是 df -h,可能因为挂载点不对,检查一下是不是看错了分区。
扩展20t这件事,说难不难,说简单也有几个坑,只要思路清楚,先用 lsblk 摸清盘,再决定走LVM还是直接分区,最后记得同步文件系统并写进fstab,基本就稳了,最后再强调一遍:扩前备份重要数据,扩后验证容量和挂载状态,这两步永远不能省。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/610620.html




