十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu 22.04 硬件RAID1安装指南:手动分区与GRUB配置实战

Ubuntu 22.04 硬件RAID1安装指南:手动分区与GRUB配置实战 1. 项目缘起为什么要在RAID1上安装Ubuntu最近给一台老旧的Dell PowerEdge服务器做系统迁移原计划是直接装到一块新的NVMe SSD上。但在安装Ubuntu 22.04 LTS的引导过程中我遇到了一个不大不小的麻烦系统安装程序Ubiquity在识别和配置RAID1阵列时表现得相当“固执”。它要么是找不到阵列要么是找到了却无法正确创建引导加载器GRUB最终导致安装失败卡在“安装系统引导器”这一步。这让我意识到虽然Ubuntu的桌面安装程序对普通单盘安装已经非常友好但面对服务器上常见的硬件RAID配置尤其是像RAID1镜像这样的基础冗余阵列它依然存在一些“盲区”和预设逻辑上的冲突。这个经历促使我决定彻底梳理一遍在Ubuntu 22.04时代将系统干净利落地部署到硬件RAID1阵列上的完整流程。这不仅仅是点击“下一步”那么简单它涉及到对Linux引导机制、RAID控制器驱动以及Ubuntu安装程序底层逻辑的理解。无论是用于家庭NAS、小型企业服务器还是作为开发测试环境在RAID1上安装系统都能提供最基本的数据冗余保障避免因单块硬盘故障导致系统瘫痪和数据丢失。对于运维人员、开发者或者任何希望构建稳定基础系统的用户来说掌握这项技能都很有必要。接下来我将以一台配置了PERC H730硬件RAID控制器的Dell服务器为例但其中涉及的核心原理和排查思路同样适用于其他品牌如HPE、浪潮、华为的硬件RAID卡以及在某些场景下的软件RAID配置。我们会从最底层的RAID配置开始一直讲到系统安装完成后的收尾工作把每一个可能踩坑的环节都摊开来讲清楚。2. 战前准备理解硬件RAID与安装程序的“认知差”在动手之前我们必须先理清一个关键概念对于操作系统而言一个配置好的硬件RAID1阵列看起来就像一块普通的硬盘。RAID卡或主板集成的RAID功能负责管理底层的多块物理磁盘将它们组织、虚拟化成一块逻辑磁盘Logical Drive然后呈现给操作系统。这是所有后续操作的基础。然而Ubuntu 22.04的图形化安装程序Ubiquity在设计时优先考虑的是通用性和易用性。它内置的磁盘分区工具parted和引导安装逻辑在面对由硬件RAID卡虚拟出来的“单盘”时有时会做出错误的判断。一个最常见的问题是安装程序可能会试图将GRUB安装到某一块物理硬盘例如/dev/sda上而不是安装到由RAID卡虚拟出来的、代表整个阵列的逻辑设备例如/dev/sdb上。这是因为在安装程序的设备探测阶段它可能同时“看到”了物理磁盘和逻辑磁盘从而产生了混淆。因此我们的核心策略可以概括为引导安装程序正确地识别出RAID阵列这块“虚拟单盘”并强制将GRUB安装到这个正确的设备上。为了实现这个目标通常有两种主流路径使用“服务器版”镜像Ubuntu Server 22.04的安装程序Subiquity对硬件RAID的支持通常更好因为它更偏向于服务器环境。在桌面版安装中使用“手动分区”这是更通用、也更可控的方法。通过手动指定分区方案和引导设备我们可以完全掌控安装过程避免安装程序的自动决策出错。考虑到很多用户更熟悉桌面环境或者需要在桌面版上完成安装本文将重点详述第二种方法——在Ubuntu 22.04 Desktop安装中通过手动分区搞定RAID1。同时我也会穿插说明如果选择服务器版有哪些需要注意的差异点。准备工作清单硬件确保RAID1阵列已在RA卡配置界面如开机按CtrlR进入Dell PERC配置中创建完毕并处于“Optimal”状态。准备好Ubuntu 22.04 LTS的安装U盘。镜像从Ubuntu官网下载ubuntu-22.04.x-desktop-amd64.iso或ubuntu-22.04.x-live-server-amd64.iso并使用Rufus、BalenaEtcher等工具以“DD模式”或“ISO模式”写入U盘确保UEFI引导兼容性。心态准备好可能会经历一次失败的安装并进入“试用Ubuntu”环境进行调试。这是解决问题的最佳入口。3. 核心实战从U盘引导到手动分区的完整流程现在我们开始正式的安装过程。请将制作好的安装U盘插入服务器并从U盘引导。3.1 引导进入安装环境与关键模式选择服务器启动后你会看到Ubuntu的GRUB菜单。这里有一个至关重要的步骤不要直接按回车启动“Install Ubuntu”。在GRUB菜单中高亮选中“Install Ubuntu”。按下键盘上的E键进入引导参数编辑模式。你会看到一串以linux开头的行。在这行参数的末尾在---之前先添加一个空格然后输入以下参数nomodesetnomodeset参数的作用是禁止内核在安装初期加载显卡驱动这对于很多服务器集成的显卡或老旧独立显卡非常有用可以避免因显卡驱动问题导致的安装界面黑屏、卡死。这是服务器安装的常见技巧。按下CtrlX或F10来使用这些参数引导。这样我们就进入了图形化安装界面。注意对于某些非常新的硬件或特定RAID卡如果发现安装程序无法识别到任何磁盘你可能还需要尝试添加raidnoautodetect参数或者尝试使用“安全图形模式”启动。但大多数情况下nomodeset已足够。3.2 连接网络与抵达分区十字路口安装程序启动后按照提示选择语言、键盘布局。在“更新和其他软件”这一步我强烈建议先不要连接网络也不要选择“安装中下载更新”和“安装第三方软件”。为什么因为网络下载可能会引入不可预知的延迟或错误在解决核心的磁盘识别问题之前这些步骤都是次要的。我们首要目标是让系统先“站”起来。我们可以等系统安装完成后再在稳定的环境下进行更新。所以这两个选项都不要勾选直接点击“继续”。接下来我们就来到了整个安装过程中最关键的环节——“安装类型”。安装程序通常会检测到你的RAID阵列并可能显示为一块大容量的磁盘比如“/dev/sdb - 1.8 TB”。但它也可能显示多块磁盘。这里我们必须选择“其他选项”Something else也就是手动分区。点击“继续”进入手动分区编辑器。3.3 手动分区为RAID阵列规划Linux家园现在你看到了所有存储设备列表。你应该能看到你的RAID阵列设备例如/dev/sdb以及你的U盘例如/dev/sda。请务必仔细核对设备大小和型号确保你操作的是目标RAID阵列而不是安装U盘。选中代表RAID阵列的那行/dev/sdb然后点击下方的“新建分区表”。在弹出的对话框中选择分区表类型为GPTGUID Partition Table。对于现代UEFI系统和大于2TB的磁盘GPT是必须的。点击“确定”后磁盘状态变为“空闲”。接下来我们将在这块“空闲”空间上创建必要的分区。一个典型的、适用于UEFI启动的Ubuntu服务器/桌面系统至少需要以下三个分区EFI 系统分区大小至少512MB建议1GB。为未来可能的多系统引导或大型引导文件留足空间。新分区的类型主分区新分区的位置起始用于EFI系统分区挂载点/boot/efi说明这个分区用于存放UEFI引导加载器。至关重要在页面最下方“安装启动引导器的设备”下拉菜单中必须选择这个分区对应的设备例如/dev/sdb1。这是确保GRUB被安装到RAID阵列上的关键一步交换分区可选但建议大小根据你的物理内存大小决定。对于服务器如果内存足够大如64GB以上可以省略或设置一个较小的交换空间如4-8GB。对于内存较小的系统可以设置为物理内存的1-2倍。新分区的类型逻辑分区在扩展分区内创建或主分区用于交换空间挂载点无需指定说明用于内存交换。虽然现代系统有时使用交换文件swapfile但在独立分区上设置交换空间仍然是服务器上的常见做法性能和管理上更清晰。根分区大小占用所有剩余空间。新分区的类型逻辑分区在扩展分区内创建或主分区用于Ext4 日志文件系统或其他你喜欢的如XFS挂载点/说明这是系统的主分区所有文件和目录除了/boot/efi都将存放在这里。分区方案示例表格设备大小类型文件系统挂载点备注/dev/sdb11GBEFI系统分区FAT32/boot/efi引导器安装位置/dev/sdb216GB交换空间swap(无)根据内存调整/dev/sdb3剩余所有Linux文件系统Ext4/根目录创建完所有分区后请再次仔细检查页面最下方的“安装启动引导器的设备”是否已经正确设置为你的EFI分区如/dev/sdb1。确认无误后点击“现在安装”。3.4 完成安装与首次重启之后的过程就是常规设置选择时区、创建用户名和密码。设置完成后安装程序开始复制文件。这个过程在RAID1上可能会比单盘稍慢一点因为数据需要同步写入两块硬盘。安装完成后点击“现在重启”。系统会提示你拔掉安装介质U盘然后按回车重启。4. 疑难排坑当安装程序“找不到磁盘”或引导失败时事情并不总是一帆风顺。如果你在“安装类型”页面根本看不到你的RAID阵列磁盘或者安装完成后重启无法进入系统黑屏、卡在GRUB或直接进入BIOS那么我们需要进入“高级调试”模式。4.1 进入“试用Ubuntu”环境进行侦查在安装开始时GRUB菜单中有一个“Try Ubuntu”选项。当安装失败后我们可以通过这个选项引导进入一个完整的、运行在内存中的Ubuntu桌面环境。这是一个强大的故障排查工具。进入试用桌面后打开终端CtrlAltT。第一步确认系统是否识别到了RAID卡和阵列sudo lspci | grep -i raid这条命令会列出所有RAID控制器。你应该能看到你的RAID卡信息例如“Broadcom / LSI MegaRAID SAS-3 3108 [Invader]”。第二步查看磁盘设备sudo fdisk -l或者使用更清晰的lsblk命令lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL仔细查看输出。你的RAID阵列应该显示为一个容量正确的设备如/dev/sdb而两块成员硬盘可能显示为/dev/sda和/dev/sdc假设/dev/sdb是U盘。如果根本看不到/dev/sdb这样的大容量设备问题可能出在RAID卡驱动上。第三步检查RAID阵列状态如果使用megacli或storcli工具对于Dell PERC基于LSI的卡可以尝试安装storcli工具来查看。首先下载对应版本的storclideb包然后用dpkg安装并查看# 假设你已经下载了storcli_xxx_all.deb sudo dpkg -i storcli_xxx_all.deb sudo storcli /c0 show这个命令会显示控制器0/c0上所有虚拟驱动器和物理磁盘的状态。确保你的RAID1状态是“Optimal”。4.2 安装缺失的RAID卡驱动罕见但关键绝大多数主流硬件RAID卡如LSI/Broadcom/Avago系列、Intel VROC的驱动都已集成在Ubuntu 22.04的内核中。但如果你的卡非常新或非常旧有可能需要手动安装驱动。如果在试用环境中使用lspci看到了RAID卡但lsblk却看不到阵列磁盘这很可能就是驱动问题。你需要去服务器或RAID卡制造商的官网查找适用于Ubuntu 22.04 (内核5.15) 的驱动程序通常是一个.deb包或源码包。在试用环境中你可以联网下载并安装它。例如对于某些较新的PMC-SierraAdaptec卡可能需要安装aar驱动。安装驱动后再次执行lsblk应该就能看到阵列磁盘了。4.3 使用chroot修复引导最后的救命稻草如果你能确认磁盘和分区都存在/dev/sdb1,/dev/sdb3等但重启后就是无法引导很可能是GRUB安装位置不正确或配置损坏。这时我们可以在试用环境中“钻入”已安装的系统重新安装和配置GRUB。挂载已安装系统的根分区和EFI分区sudo mount /dev/sdb3 /mnt sudo mount /dev/sdb1 /mnt/boot/efi请根据你的实际分区设备号调整/dev/sdb3和/dev/sdb1挂载必要的虚拟文件系统并chroot进入目标系统for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt执行chroot后你的终端环境就“切换”到了已经安装在硬盘上的那个Ubuntu系统。在chroot环境中重新安装和配置GRUB# 更新initramfs确保包含必要的RAID模块 update-initramfs -u -k all # 重新安装GRUB到EFI分区 grub-install --targetx86_64-efi --efi-directory/boot/efi --bootloader-idUbuntu --recheck # 更新GRUB配置扫描所有可引导的系统 update-grub退出并重启exit sudo umount -R /mnt sudo reboot拔掉U盘让服务器从硬盘启动。这次GRUB菜单应该能正常出现了。5. 安装后优化与验证确保阵列健康运行系统成功启动后我们的工作还没完。我们需要验证RAID1阵列是否在操作系统中被正确识别并处于健康状态。5.1 安装RAID管理工具对于Dell PERC (LSI) 卡megacli或它的继任者storcli是必备的管理工具。它们通常不包含在默认仓库中。# 添加Dell/EMC的仓库并安装storcli (以Dell为例具体包名请查询官网) wget -qO - https://linux.dell.com/repo/hardware/dsu/bootstrap.cgi | sudo bash sudo apt-get update sudo apt-get install storcli安装后可以使用sudo storcli /c0/e252/s0 show具体路径请根据sudo storcli /c0 show的输出调整来查看指定物理磁盘的详细信息或者使用sudo storcli /c0/v0 show查看虚拟驱动器状态。5.2 监控阵列状态与配置告警一个健康的RAID1阵列其状态应该始终显示为“Optimal”。你可以将storcli的命令加入crontab定期运行或者配置smartd来监控硬盘的S.M.A.R.T.状态。更重要的是一块硬盘故障时的处理。当RAID1中的一块硬盘失效时阵列会进入“Degraded”状态但系统仍可正常运行。此时你需要通过storcli或服务器管理界面iDRAC、iLO确认故障硬盘位置。在关机状态下热插拔更换故障硬盘如果服务器支持。开机进入RA卡配置界面CtrlR将新硬盘加入到原有的RAID1阵列中阵列会自动开始“重建Rebuild”。在操作系统中你可以通过storcli /c0/v0 show rebuild来查看重建进度。一个非常重要的经验对于硬件RAID在更换硬盘前强烈建议在BIOS或管理界面中确认硬盘的“Foreign State”外来状态是否被清空。有时新硬盘会被识别为“外来配置”需要先清除此状态才能用于重建。5.3 性能与稳定性考量RAID1提供了冗余但写入性能理论上与单盘相同因为数据要写两份。对于Ubuntu系统盘来说这通常不是瓶颈。为了最大化稳定性和兼容性我有几点建议定期更新保持系统内核和storcli等管理工具更新以获得最新的驱动和Bug修复。备份EFI分区虽然RAID1保护了数据但EFI分区的内容相对独立。在重大系统变更前可以手动备份/boot/efi目录下的内容。测试灾难恢复在非生产环境模拟一块硬盘故障练习更换和重建流程。这比任何文档都管用。整个流程走下来在RAID1上安装Ubuntu 22.04更像是一次对Linux存储栈和引导过程的深入理解。它要求你跳出图形化安装程序的“舒适区”直接与磁盘、分区和引导加载器对话。一旦掌握了这套方法无论是面对更复杂的RAID5、RAID10还是不同的硬件品牌你都能做到心中有数从容应对。毕竟对于服务器而言稳定性和可控性远比点击几下鼠标完成安装要重要得多。
返回列表