红旗Linux作为国产服务器操作系统的代表,在政企环境中部署量不小。存储管理是这类系统日常运维中最容易出问题的环节之一,尤其是新加硬盘后控制器识别不到、分区边界对不齐、LVM扩容后空间没有生效等情况,往往让不熟悉国产系统的人手忙脚乱。本文从存储控制器识别讲起,完整走一遍磁盘分区与LVM扩容的流程,并汇总常见的踩坑点。

一、确认存储控制器是否被正确识别
硬盘接到服务器上,第一步不是急着分区,而是确认内核有没有正确加载存储控制器驱动。红旗Linux默认内核包含了常见的RAID卡和SATA/SAS控制器驱动,但如果使用的是较新的RAID卡或者国产NVMe SSD,就可能遇到驱动缺失的情况。先看设备信息:
# 查看已识别的块设备 lsblk # 查看SCSI控制器和磁盘信息 cat /proc/scsi/scsi # 查看内核加载的存储相关驱动 lsmod | grep -E "mpt3sas|aacraid|megaraid|ahci|nvme" # 查看内核日志中磁盘识别记录 dmesg | grep -i "sd\|attached"
如果dmesg里能看到类似sd a: attached SCSI disk的输出,说明控制器工作正常,磁盘已经被内核接管。如果完全没有输出,就要检查PCI设备列表,用lspci -nn | grep -i "raid\|sata\|sas"确认控制器芯片型号,再对照红旗官方的硬件兼容性列表确认驱动情况。部分RAID卡需要先在卡本身的BIOS里完成虚拟磁盘创建,操作系统层面才能看到盘,这一点经常被忽略。
另一个常见边界问题是多路径。如果服务器通过光纤连接存储阵列,同一块LUN会以sdb和sdc两个设备名出现,直接对其中一个分区会导致数据不一致。此时应安装并启用multipath-tools,用multipath -ll查看聚合后的路径设备,后续所有操作都针对/dev/mapper下的多路径设备进行。
二、磁盘分区:fdisk与parted的选择
分区是划分磁盘使用边界的关键一步。红旗Linux自带的fdisk只支持MBR分区表,最大只能管理2TB的磁盘,且主分区数量限制为4个。现在服务器硬盘普遍超过2TB,必须用parted创建GPT分区表。两者最直观的差别如下:
| 对比项 | fdisk(MBR) | parted(GPT) |
|---|---|---|
| 最大磁盘容量 | 2TB | 远超18EB |
| 主分区数量 | 4个(需扩展分区绕过) | 128个 |
| 交互友好度 | 简单直观 | 命令稍多但支持脚本化 |
| 分区对齐 | 需手动计算起始扇区 | 默认1MiB对齐 |
用parted给一块新盘建分区的典型操作:
# 假设新盘为 /dev/sdb parted /dev/sdb mklabel gpt parted /dev/sdb mkpart primary 1MiB 100% # 设置分区类型为LVM(8e对应Linux LVM) parted /dev/sdb set 1 lvm on # 让内核重新读取分区表 partprobe /dev/sdb lsblk /dev/sdb
这里有个容易踩的坑:分区完成后如果/dev/sdb1没有立刻出现,不要重启,先执行partprobe /dev/sdb让内核重读分区表。另外,GPT分区默认从1MiB位置开始,这个设计天然保证了4K对齐,可以减少SSD的写放大。用fdisk -l /dev/sdb能看到分区起始扇区是2048,正好是1MiB除以512字节的扇区数,这就是对齐正确的标志。
三、LVM逻辑卷管理与在线扩容
生产环境强烈建议用LVM来管理存储,它把物理磁盘的边界抽象成可伸缩的逻辑卷,扩容缩容都不需要停机。LVM的三层结构是物理卷PV、卷组VG、逻辑卷LV。接上文的新分区,创建过程如下:
# 1. 创建物理卷 pvcreate /dev/sdb1 # 2. 加入已有卷组(假设卷组名为 vg_data) vgextend vg_data /dev/sdb1 # 3. 把空间扩给逻辑卷并扩展文件系统 lvextend -l +100%FREE /dev/vg_data/lv_app /dev/sdb1 # 4. ext4文件系统在线扩容 resize2fs /dev/vg_data/lv_app # 如果是xfs文件系统,改用 xfs_growfs /app
注意lvextend和扩容文件系统是两个独立步骤,很多人执行完lvextend就以为结束了,结果用df -h一看空间没变,原因就是文件系统还没有扩展。ext4用resize2fs,xfs用xfs_growfs,两者不能混用,xfs不支持缩小,规划容量时要留有余量。一条命令合并完成的写法是lvextend -r -l +100%FREE /dev/vg_data/lv_app,-r参数会自动调用对应的文件系统扩容工具。
日常维护中几个命令值得记熟:pvs、vgs、lvs分别查看三层结构的概况;pvdisplay -m能看到物理盘上物理区域的分布,排查性能问题时很有用;vgdisplay输出的Free PE / Size就是卷组还剩多少可用空间,扩容前先看这个数字心里有数。
四、常见故障排查思路
第一类问题是设备识别失败。表现为lsblk里看不到新盘,这时按硬件到软件的顺序排查:确认硬盘指示灯、检查RAID卡管理界面、看dmesg有无报错、最后检查驱动。红旗Linux部分版本对厂商私有RAID驱动支持不完整,必要时从硬件厂商获取对应内核版本的驱动包自行编译。
第二类是扩容后空间不生效。除了前面说的文件系统未扩展,还有一种情况是LVM快照占用了空间。快照会持续增长,一旦写满,原逻辑卷会被挂起,出现IO错误。用lvs看到Snap%>=100%就必须处理,要么扩容快照lvextend -L +5G /dev/vg_data/snap_name,要么合并或删除快照。定期检查快照状态应该写进巡检脚本。
第三类是磁盘空间明明没用完却报No space left on device。这往往是inode耗尽而不是容量耗尽,用df -i查看inode使用率。海量小文件场景下inode先于容量被耗尽很常见,解决办法是找到文件数最多的目录清理,或者后续建文件系统时用mkfs.ext4 -T news指定更多inode的配比方案。
存储管理看似命令繁多,套路其实是固定的:识别设备、划分边界、抽象管理、按需扩展。把LVM这套流程在测试机上完整跑两遍,生产环境遇到扩容需求时基本可以做到不慌不乱。