首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAID6 mdraid -> LVM -> EXT4 root with GRUB2?

RAID6 mdraid -> LVM -> EXT4 root with GRUB2?
EN

Server Fault用户
提问于 2012-03-31 19:55:52
回答 3查看 3.3K关注 0票数 3

2012-03-31 Debian每日构建在VirtualBox 4.1.2,6个磁盘设备。

到目前为止,我的脚步声:

  1. 在每个磁盘上设置一个分区,使用整个磁盘作为RAID的物理卷
  2. 从所有这些中设置一个RAID6 mdraid数组
  3. 使用生成的md0作为卷组的唯一物理卷
  4. 根据您的意愿设置逻辑卷、文件系统和挂载点。
  5. 安装您的系统

/和/boot都在这个堆栈中。我选择了EXT4作为这个设置的文件系统。

我可以深入到GRUB2救援控制台,它可以看到mdraid、卷组和LVM逻辑卷(在所有级别上都适当命名),但是我不能保存其中任何一个文件系统的内容,也不能从它们启动。

据我所见,从文档中可以看出,在那里提供的GRUB2版本应该很好地处理这一切。

http://packages.debian.org/wheezy/grub-pc (撰写本报告时为1.99-17)

它根据生成的ext2文件加载ext2、raid、raid6rec、dosmbr (这一个在每个磁盘一次模块列表中)和lvm模块。此外,它还定义了要在生成的grub.cfg文件中加载两次的模块列表,根据快速搜索,这似乎是GRUB2的常态和OK。

如何通过让GRUB2能够实际读取文件系统的内容并引导系统来更进一步呢?

在这里,我对功能的假设有什么错误?

编辑(2012-04-01)我生成的grub.cfg:

http://pastie.org/3708436

它似乎首先使我的/usr逻辑卷成为根,这可能是失败的根源?一个错误?或者,它应该在/和/boot之前访问/usr的内容吗?对我来说,/boot是开着的--没有单独的启动逻辑卷。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2012-06-26 12:38:07

毕竟,它是一个Grub2 2缺陷/降级软件raid数组的问题

Grub2 1.9x在从降级数组启动时存在问题。在救援模式下引导到系统并让raid恢复本身已经解决了最初设置的问题。

顺便提一句,安装工作(目前: 2012-06-26)直接在Fedora 17,Arch (稳定)和Gentoo (稳定+最新的grub2 bzr通过波特):Grub2 2.0+已经解决了问题。随着Wheezy冻结即将到来,我完全希望通过跳转到2.0或支持修复程序来解决这个问题。

对我来说,这仍然影响Debian 6,7;Ubuntu8.04,10.04,12.04。

让raid在单个用户模式恢复设置中同步对于家庭系统来说是一个可以接受的解决办法,但是在重新启动生产服务器(甚至是一个小型office文件服务器)时可能会出现额外的问题,这让人三思而后行。

票数 4
EN

Server Fault用户

发布于 2013-06-14 13:27:25

非常好的帖子,非常感谢这帮助我在Debian上安装了一个LVM - over - RAID。以下是我为克服这个问题所采取的步骤。

将Grub2更新为V2+

将这些行添加到/etc/apt/sources.list .列表中

代码语言:javascript
复制
deb http://http.debian.net/debian unstable main
deb-src http://http.debian.net/debian unstable main

apt-获取更新

apt-获取安装grub2

票数 1
EN

Server Fault用户

发布于 2012-03-31 22:15:41

也许您使单个分区太大,没有为GRUB2安装留出足够的空间,而且它覆盖了LVM空间的部分。有点遥不可及。尝试您的步骤重新创建您的问题,除非这一次使用单个磁盘(跳过RAID),完全按照您以前的做法创建单个分区,然后再创建其余的分区。如果我是对的,那么你应该有同样的行为。

更新:所以,这个答案是错误的。我浏览了一下GRUB2手册,发现了这个部分,它声明:

如果您只得到一个救援外壳,这通常意味着GRUB由于某种原因未能加载“正常”模块。可以暂时解决这个问题:例如,如果失败的原因是‘前缀’是错误的(可能它指的是错误的设备,或者/boot/grub的路径相对于设备没有正确设置),那么您可以纠正这一点,手动进入正常模式:#检查当前前缀(和其他预置变量):set #找出哪些设备可用: ls #设置为正确的值,这可能是这样的:设置prefix=(hd0,1)/grub Set root=(hd0,1)不正常,任何将您留在救援程序中的问题都可能意味着GRUB没有正确安装。尝试使用grub安装设备正确地重新安装它可能会更有用(请参阅调用grub)。在这样做的时候,有几件事需要记住:

  1. 您的操作系统中的驱动器排序可能与您的固件使用的引导驱动器顺序不同。不要假设您的第一个硬盘驱动器(例如‘/dev/sda’)是您的固件将从其中启动。device.map (参见设备映射)可以用来覆盖这一点,但通常最好使用UUID或文件系统标签,并避免完全依赖驱动器排序。
  2. 至少在BIOS系统上,如果您告诉GRUB将GRUB安装到一个分区,但是GRUB已经安装在主引导记录中,那么分区中的GRUB安装将被忽略。
  3. 如果可能,通常最好避免将GRUB安装到分区(除非它是单独使用GRUB的特殊分区,例如GPT上使用的BIOS引导分区)。这样做意味着GRUB可能由于文件系统移动块而无法读取其核心映像,例如在碎片整理、运行检查时,甚至在正常操作期间。安装到整个磁盘设备通常更健壮。
  4. 检查GRUB实际上知道如何从包含/boot/grub的设备和文件系统中读取。它将无法从加密设备中读取,也无法从尚未添加到GRUB支持的文件系统中读取。
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/375569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档