前阵子给单位一台联想ThinkSystem SR550(7X04)装openEuler-24.03,存储方案定的是“RAID1 引导 + RAID5 底层 + LVM”。听起来是个常规组合,真正动手才发现里面有挺多门道:阵列卡初始化、UEFI引导、LVM逻辑卷布局、RAID重建流程,任何一环没处理好都可能让服务器开不了机。折腾了一个多星期,中途踩了好几个坑,比如安装器识别不到RAID卷、grub引导直接进rescue模式、LVM扩容时报IO错误,最后算是把整条链路都理顺了。这篇把从硬件配置到系统安装再到LVM管理的完整过程整理出来,给准备在同型号或类似ThinkSystem服务器上装openEuler的朋友一份可以直接参照的操作记录。
1. 方案设计与硬件盘点
1.1 为什么是“RAID1引导 + RAID5数据盘 + LVM”这个组合
先说说这套方案的适用场景。SR550这种2U机架服务器,在中小型机房最常见的用法就是跑虚拟化、数据库、文件共享这类混合负载。系统盘负责启动和运行操作系统,数据盘负责存业务数据,两者对存储的要求其实是不同的。
系统盘最关键的是可靠性,启动过程中任何一点读错误都可能导致系统起不来,所以磁盘冗余比容量重要。两块容量不用太大的SSD组RAID1,镜像冗余、读取并发高,系统启动和日常操作响应都很快,空间利用率虽然只有50%,但引导盘本来就不需要多大,两块480GB的盘足够系统加常用软件了。
数据盘则更看重容量和读写性能的平衡。RAID5至少三块盘,允许坏一块,空间利用率是(n-1)/n,比如四块8TB的盘能得到24TB可用空间,比RAID10的50%利用率高不少,比RAID6的容量利用率也更好。虽然RAID5在重建大容量盘时有风险,但对于常规业务数据,定期备份加热备盘已经能达到可接受的可靠性水平。
LVM则把底层RAID卷进一步抽象成可弹性调整的逻辑卷。RAID5创建之后阵列级别和容量基本固定,扩容要么增加新盘扩展阵列,要么新建一个RAID卷挂到同一个卷组里,LVM可以把这个过程全部在线完成,业务不中断,还能随时创建快照,这对日常运维来说非常实用。
1.2 SR550(7X04)硬件情况与阵列卡识别
先说这台机器的基本情况。SR550标配两颗Intel Xeon Scalable处理器,内存槽位充足,盘位支持3.5英寸和2.5英寸混合布局,拿到的7X04机型配了8个盘位,前面板还支持热插拔。装系统之前最重要的就是确认阵列卡的型号和状态,因为后续所有RAID配置都依赖这块卡。
开机自检时机器会显示阵列卡信息,联想ThinkSystem系列在POST阶段按F1可以进UEFI设置,进入后选择Storage或RAID配置入口,能看到控制器型号、固件版本、电池(BBU)状态和盘位健康状态。我这台机器上是一张ServeRAID系列的SAS/SATA阵列卡,固件版本较老,我建议先更新到官网提供的最新固件,尤其是准备装新系统之前,老固件对UEFI引导的支持可能存在兼容性问题,导致后面安装器识别不到RAID卷。
提示:拿到服务器第一件事,先把阵列卡固件、服务器BMC固件都升级到稳定版本,再开始配置RAID。省得后面排查问题时分不清是硬件兼容性还是配置错误。
1.3 盘位布局与容量规划
盘位布局在配置RAID之前就要规划清楚,避免后续物理插拔的麻烦。我拿到的这台机器盘位情况是:0号到3号槽位是2.5英寸小盘槽,4号到7号槽位是3.5英寸大盘槽。
引导盘我选用两块480GB的SSD插在0号、1号小盘槽里,组RAID1。数据盘选用四块8TB的3.5英寸机械盘插在4号到7号槽位,组RAID5。剩下的2号、3号小盘槽位先空着,后续如果数据盘需要扩容,可以再加SSD组RAID1或者RAID10加入LVM卷组。
容量规划上,RAID1实际可用约480GB,RAID5四块8TB可用约24TB。根据业务量估算,系统盘空间留了120GB给/分区,120GB给数据盘的LVM卷组预留,其他空间后续按需调整,数据盘24TB全部交给LVM做逻辑卷划分。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RAID阵列配置实操
2.1 进入阵列卡配置界面与初始化检查
RAID配置的入口和阵列卡的具体型号有关,但操作思路是相通的。我这台SR550开机按F1进UEFI设置界面,在Storage选项卡里找到阵列卡配置入口,选择Configuration Utility进入。如果你的机器在POST阶段显示“Press Ctrl+H to enter configuration utility”,那就是进入了经典的MegaRAID BIOS配置界面,能做的事情是一样的。
进入配置界面后,第一步先检查物理磁盘状态。确认所有盘都能被阵列卡正常识别,状态是Unconfigured Good,如果看到Foreign状态说明磁盘之前属于其他阵列,需要先执行Import或Clear Foreign Configuration。接着检查电池BBU状态,电池状态正常才可以开启Write Back写缓存策略,否则建议用Write Through,掉电丢数据的风险更小。
阵列卡默认密码通常是空或者admin,远程通过BMC管理页面操作时需要注意修改初始密码,避免安全风险。
2.2 创建RAID1引导卷:参数与细节
创建RAID1的过程不难,但有几个参数值得注意。配置界面里选Create Virtual Drive,RAID Level选RAID1,把0号、1号两块SSD都选上,容量默认就是最大可用空间。同型号SSD固件版本可能不一致,建议插上之前在备件库或者管理界面里确认固件版本一致,否则后续阵列重建时可能出现兼容性异常。
创建完成后,阵列卡会进入后台初始化状态。重点是初始化的执行方式,有的阵列卡默认是后台初始化,不阻塞创建下一个卷,但刚建完的卷在初始化完成前读性能略差、校验不一致风险略高。我习惯手动选择初始化,并在之后的页面里确认初始化进度,等初始化跑完再继续其他操作,避免在初始化过程中直接安装系统导致数据一致性隐患。
写缓存策略上,RAID1引导卷我设置成Write Back with BBU,因为有电池保护,掉电时缓存数据能刷下去。如果没有BBU,强烈建议设置Write Through,性能略降一点点,但比掉电丢数据强得多。
2.3 创建RAID5数据卷与热备盘设置
RAID5数据卷的创建逻辑和RAID1类似,但有几个细节需要额外关注。选Create Virtual Drive,RAID Level选RAID5,把四块8TB机械盘都选上,默认容量会显示可用空间约24TB。阵列卡通常会自动预留一部分空间用于替换坏道,不建议把容量全部用完,可以稍留一些余量。
热备盘建议直接设置。如果没有独立热备盘槽位,可以从四块数据盘里抽出一块做Dedicated Hot Spare,这样数据卷实际可用空间就是(n-2)块盘的容量,从24TB降到16TB。是否牺牲容量换取自动重建,取决于业务对可用性的要求。我这里单独留了两块2.5寸小盘位放热备,所以没有抽数据盘出来,而是规划在2号槽位放一块SSD作为全局热备。
RAID5创建后同样建议初始化。四块8TB机械盘的初始化时间比较长,阵列卡的初始化速度通常可以达到几百GB每小时,8TB盘全量初始化可能需要一晚上。期间机器重启或面板操作没问题,但不要新建其他卷或者对RAID卷做读写操作,以免影响初始化进度。
提示:RAID5阵列在后台初始化期间如果发生磁盘故障,热备盘可能无法及时顶替,数据一致性风险更高。建议初始化完成后再接入生产环境。
3. openEuler 24.03安装与引导细节
3.1 制作安装介质与XCC远程挂载ISO
安装openEuler 24.03,建议直接下载everything版本的ISO镜像,里面带的驱动和软件包比较全,尤其是阵列卡驱动这类固件,everything镜像通常已经包含。制作U盘启动盘时,Windows下用Rufus写盘,Linux下用dd写盘,都是常规操作。如果服务器在机房,本人不在现场,可以通过联想XClarity Controller(XCC)远程管理口挂载ISO镜像,等于把U盘插到机房机器上,然后在浏览器里远程安装,非常方便。
XCC默认接口地址开机时有显示,进BMC后挂载ISO需要先打开远程控制台,再在“虚拟媒体”里挂载下载好的ISO文件。挂载完成后重新开机,从虚拟光驱启动即可进入安装界面。BMC的远程KVM画面虽然不如本地显示器流畅,但安装系统这种操作足够用了。
3.2 安装器分区与LVM布局设置
openEuler 24.03的安装器是Anaconda,图形界面和文本界面都支持。因为配置了硬件RAID,安装器会把RAID1引导卷识别为一块独立硬盘,通常命名为/dev/sda,RAID5数据卷识别为/dev/sdb,不需要额外加载RAID驱动。安装到“安装目的地”界面时,选择自定分区,能看到这两块盘。
分区方案上,引导卷用LVM会让后续扩容灵活很多,但/boot分区建议独立出来,不用LVM,因为grub引导程序对LVM的处理比普通分区要复杂,单独划分/boot可以避免很多引导问题。我最终的分区方案是:
| 磁盘/卷 | 挂载点 | 文件系统 | 大小 |
|---|---|---|---|
| /dev/sda1 | /boot/efi | EFI System Partition | 512MB |
| /dev/sda2 | /boot | ext4 | 2GB |
| /dev/sda3 | / | LVM | 剩余空间全部给根 |
/data数据卷不放在系统盘,而是让安装器直接识别/dev/sdb后挂载到/data,准备后续单独用LVM管理。如果安装器里没有直接挂载数据卷的选项,也可以在系统装完后手动创建LVM再挂载。
3.3 UEFI引导顺序与引导程序安装
openEuler 24.03默认使用UEFI引导,安装时引导程序会写入第一块硬盘的EFI分区。这里有一个关键细节:如果RAID1引导卷是两块盘组成的镜像,UEFI引导一般只会安装在当前系统识别的启动盘上,通常是/dev/sda。单独一块盘故障时,另一块盘的EFI分区可能没有引导程序,就无法从另一块盘启动。
避免这个问题的方法是系统安装完成后,手动将引导程序同步到RAID1的另一块物理盘。grub2-install直接对/dev/sda执行后,还需要用类似grub2-install /dev/sdb的方式或者使用efibootmgr添加启动项的方式,确保两块盘都能独立引导。具体操作在后面引导修复部分会说明。
安装结束后重启,进BIOS引导菜单确认能从RAID1引导卷启动,且引导项名称里有openEuler相关字样。如果引导顺序直接跳过了,需要进UEFI设置手动把启动项优先级调整过来。
4. LVM的创建、挂载与在线扩容
4.1 初始化物理卷与创建卷组
系统装好后,剩下的工作是把RAID5数据卷交给LVM管理。先看一下系统识别到的磁盘:
bash复制lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 447.1G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 444.6G 0 part
└─openeuler-root 253:0 0 444.6G 0 lvm /
sdb 8:16 0 21.8T 0 disk
/dev/sdb就是RAID5卷,系统识别为一块大容量裸盘。接下来初始化物理卷、创建卷组、创建逻辑卷:
bash复制# 初始化物理卷
pvcreate /dev/sdb
# 创建卷组
vgcreate data_vg /dev/sdb
# 创建逻辑卷,先分配 20T 给数据用
lvcreate -L 20T -n data_lv data_vg
# 创建文件系统,RAID5底层建议用XFS
mkfs.xfs /dev/data_vg/data_lv
# 挂载到 /data
mkdir -p /data
mount /dev/data_vg/data_lv /data
# 设置开机自动挂载
echo "/dev/data_vg/data_lv /data xfs defaults 0 0" >> /etc/fstab
这里为什么建议XFS而不是ext4?XFS在超大容量、并发读写场景下表现更稳定,也支持在线扩容时直接xfs_growfs增长文件系统,不需要卸载分区,非常适合生产环境。ext4在单文件系统超过16TB时虽然也能用,但xfs_growfs的不用停机特性更适合数据盘场景。
4.2 用UUID写fstab避免挂载错乱
配置/etc/fstab时,不要直接用设备名/dev/data_vg/data_lv,因为设备名在系统重启后可能因内核识别顺序变化而改变。更稳妥的方式是用UUID:
bash复制blkid /dev/data_vg/data_lv
把输出的UUID复制到fstab中,比如:
code复制UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0
用UUID挂载的好处是即使盘序发生变化,系统也能准确找到对应的逻辑卷;如果LVM设备名因卷组导入顺序变化而改变,也影响不大。配置完fstab后,建议执行mount -a验证一遍,确认没有写入错误的挂载项,避免重启时报错。
4.3 在线扩容:新增卷、扩展VG与LV
LVM最大的优势就是在线扩容。比如RAID5卷可用空间不够了,可以把2号、3号槽位的SSD或新增机械盘组一个RAID卷,然后加入现有的data_vg卷组,最后扩展data_lv到新的容量。
新增阵列卷的过程在阵列卡WebBIOS里完成,创建后系统里会多出一块/dev/sdc。扩展现有卷组和逻辑卷:
bash复制# 初始化新物理卷
pvcreate /dev/sdc
# 扩展到卷组
vgextend data_vg /dev/sdc
# 查看卷组剩余空间
vgdisplay data_vg
# 扩展逻辑卷,增加 5T
lvextend -L +5T /dev/data_vg/data_lv
# XFS文件系统在线增长
xfs_growfs /data
因为文件系统是XFS,lvextend后直接xfs_growfs就能生效,扩展到多大都可以在线完成,业务不需要停止。如果底层是ext4,需要先resize2fs /dev/data_vg/data_lv扩展文件系统,同样也可以在线操作,但要注意先扩LV再扩文件系统的顺序不要搞反。
提示:在线扩容前建议先
pvscan、vgscan确认所有物理卷状态正常,避免扩容过程中出现故障导致逻辑卷损坏。
5. 常见故障排查与修复实录
5.1 openEuler安装时识别不到RAID5卷
装系统最怕的就是安装器里看不到RAID卷。如果确认阵列卡已经创建好RAID逻辑卷,但安装器磁盘列表里只有一块系统盘,说明阵列卡驱动可能没有加载成功,或者内核模块没有识别到控制器。
排查思路是先确认阵列卡型号和使用的驱动。ServeRAID系列阵列卡一般用megaraid_sas驱动,安装器里通常会包含这个模块。如果仍然识别不到,需要手动确认是否加载了驱动:
bash复制# 在安装界面按 Ctrl+Alt+F2 进入shell
lspci | grep -i raid
modprobe megaraid_sas
把驱动加载后再回到图形安装界面,磁盘列表里应该能出现RAID卷。如果驱动缺失严重,就需要在安装ISO里加入驱动,或者换一个带齐全驱动的everything版本镜像,多数情况下everything镜像比mini镜像省心。
5.2 引导失败进入grub rescue的处理
安装完成后重启,最崩溃的提示就是grub rescue>。这通常意味着grub引导程序损坏或者找不到/ boot分区。
修复思路是先用安装U盘进入rescue模式。openEuler安装ISO启动后,在安装界面选择“Rescue a system”,进入救援模式后挂载根分区,然后重装grub:
bash复制# 进入救援模式后,chroot到系统环境
chroot /mnt/sysroot
# 重新生成grub配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重新安装grub到引导盘
grub2-install /dev/sda
grub2-install /dev/sdb
这里把引导程序同时安装到RAID1的两块盘上,确保任何一块盘故障后系统都能独立引导。修复完成后reboot,应该能正常进系统。
5.3 LVM报IO错误与逻辑卷无法挂载
LVM在日常使用中遇到IO错误,常见原因包括底层RAID卷异常、物理盘故障、卷组元数据损坏等。有一次我在扩容后执行lvs就遇到提示“Input/output error”,排查过程是这样:
先看内核日志:
bash复制dmesg | tail -50
发现报错集中在一块物理卷的读取上,仔细检查后发现是新增的物理卷/dev/sdc和阵列卡的队列深度冲突导致IO超时。思路是检查物理卷状态:
bash复制pvscan
vgscan
lvs
如果卷组里有物理卷离线,先尝试重新扫描,再不行就在/ etc/lvm/backup里查看历史配置恢复元数据。这些情况如果是硬件层面磁盘故障,则需要先更换故障盘,让RAID重建完成,再重新激活LVM逻辑卷。
用lvchange -an停用逻辑卷、vgchange -ay重新激活卷组的操作经常能解决元数据缓存导致的IO报错。
5.4 RAID1/RAID5单盘故障与自动重建
物理盘出现故障时,系统会报警,阵列卡管理界面里磁盘状态会变成Failed或者Rebuilding。如果配置了热备盘,重建会自动开始。如果没有热备盘,就需要手动更换新盘,插入之后阵列卡会自动识别并开始重建。
重建期间需要注意两点:一是性能会明显下降,因为阵列卡在同时做IO和数据重建,业务高峰时建议推迟重建或者限流重建速度;二是RAID5在重建期间如果第二块盘也闪红灯,数据会彻底丢失,所以热备盘和定期备份不是可有可无的。
单盘故障后,确保及时通过阵列卡管理界面查看全局事件日志,确认故障盘槽位,更换同型号、同规格的盘,别随手拿一个容量不同的盘顶上,那样重建过程会变得很慢甚至失败。
6. 日常运维与性能优化建议
6.1 监控阵列卡状态、LVM与磁盘健康
服务器稳定运行后的日常检查特别重要。阵列卡状态可以通过命令行工具查看,联想ServeRAID卡可以使用对应的CLI工具:
bash复制# 查看所有逻辑卷状态
storcli /c0 /vall show
# 查看物理盘健康
storcli /c0 /eall /sall show
如果没有装storcli,也可以看/proc/mdstat,但硬件RAID下这个文件通常为空,不能作为磁盘状态依据。重点看的是阵列卡日志有没有报磁盘错误、电池状态是不是“Optimal”、重建是否在进行中。
LVM方面定期观察pvs、vgs、lvs输出,确认没有PV离线、VG状态是active、LV空间没有打满。磁盘健康用smartctl检查:
bash复制smartctl -a /dev/sdb
RAID5卷如果出现大量坏道或CRC错误,建议提前更换盘,别等到Failed才行动。
6.2 优化挂载参数与写策略
挂载XFS文件系统时,可以按业务场景调整参数。对数据库这类需要高一致性的负载,建议保持defaults挂载,不开启noatime;对普通文件共享,可以在/etc/fstab里加noatime减少元数据写入,提升性能。
阵列卡的写缓存策略影响非常明显。有BBU的情况下,RAID5数据卷建议保持Write Back,读写性能会比Write Through提升不少。没有BBU或超级电容时,宁可牺牲性能选择Write Through,也不要冒掉电丢缓存的风险。另外,建议定期检查BBU的健康状态和充放电周期,电池老化后自动切换成Write Through,性能会突然下滑。
6.3 后续扩展与系统盘空间规划小技巧
系统盘用LVM的好处是根分区可以随时扩张,前提是卷组里有空闲物理卷或可以vgextend。所以安装时系统盘也不需要给得特别大,RAID1两块盘给根分区留出足够空间即可,后续如果不够,往卷组里加新盘重新扩展。
再分享一个我自己用的规划习惯:RAID5数据卷里,不要把逻辑卷容量分到接近100%才扩容。XFS文件系统空间使用率超过85%时,性能会开始明显下滑,碎片也随之增加。我的做法是LV使用率达到70%左右就开始规划扩容,给后续增长留出缓冲。
这套“RAID1引导 + RAID5数据 + LVM”的方案,在联想SR550上跑了几个月,稳定性不错,扩容了两次业务都没有中断。最大的体会是:服务器存储方案没有银弹,关键是把每一层的用途搞清楚。引导盘用RAID1求稳,数据盘用RAID5平衡容量与冗余,LVM负责灵活调度,三层各司其职,日常运维才能省心。
