小编str*_*rix的帖子

MD (RAID1) + LVM 上的 root 引导失败:udev 事件计时

全新安装的 Ubuntu Server 13.10 (x64) 从位于 md+lvm 的根卷启动时遇到问题。我现在已经找到了一个解决方案,但我想更多地了解正在发生的事情以及可能有哪些更好的解决方案。

由于这台机器的目标是试验 Xen(为了更好地了解商业虚拟机托管),所以这台机器是由我手头的零件组装而成的,具体来说:Q6600 + Asus P5QL Pro、1 TB 和 500 GB SATA 磁盘(尽管 500 GB 光盘仍在其他地方使用,但稍后会添加。)

1TB 磁盘有三个分区:sda1 与 500 GB 磁盘上的 sdb1 大小相等,sda2 是交换区,其余在 sda3 中。md0 是由 sda1+sdb1 组成的 RAID1 卷[1],是 LVM 可用的一个 PV。

Ubuntu 安装在这个 VG (vg_mir) 中的两个 LV(dom0_root 和 dom0_homes)中,/boot 位于 dom0_root 中。

在光盘初始化后,特定问题立即显示为以下消息:

kernel: [    3.003506] md: bind<sda1>
kernel: [    3.007705] md/raid1:md0: active with 1 out of 1 mirrors
kernel: [    3.007768] md0: detected capacity change from 0 to …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu lvm udev md

5
推荐指数
1
解决办法
1998
查看次数

Linux 系统配置管理:版本控制和部署

我正在寻找最好的方法(就我的目的和情况而言)来版本系统配置文件并管理两台机器(实时和备份,两者都应被视为“生产”)之间的部署(所有权和模式)。我希望能够使用该系统自动(但有选择地)复制和管理备份机器(EC2 实例)上的相关和指定配置。

目前,这些机器主要是 web 和 SMTP 服务器(我们不存储用户邮箱),但我们的项目正在增长,谁知道未来的需求可能是什么。例如,我们有可能在未来某个时候实施广播和基于网络的聊天。

我更喜欢以传统方式管理服务器(即,根据需要进入并更改实时服务器),然后将这些更改(一旦确定)存储在管理系统中。(好吧,老实说,我应该有机地说:我不想失去根据需要和情况做事的灵活性。)我发现这种方法,而不是部署在其他地方经过调整和测试的配置,更可预测,并且有可能减少意外(除了在实时系统上搞砸配置的可能性之外,就是这样!)

我意识到,从哲学上讲,这是从后到前的,如果我有资源(测试基础设施,更重要的是人力),我可能会反过来做。事实上,我必须用我所拥有的来凑合。我很喜欢结构,但是过多的基础设施会失去它自己的生命,并且在某些时候它的价值会丢失。

我做了一些功课并审查了几个选项,但它们似乎都没有真正按照我的意愿行事,因此我目前很想推出自己的解决方案。这个问题的目的是看看我没有想到什么,并在我去吠错树之前进行理智检查。

选项

  1. 像木偶,声明metaconfiguration系统特别,可能是不错的选择,许多服务器都参与了他们之间几乎没有差异,特别是当它的时间提前明确应该看什么样的配置等。我认为在没有临时基础设施的情况下使用这样的工具是不明智的。

    它也有点重量级和过于复杂。我是唯一的管理员,我在业余时间做这件事,如果发生什么事,我留下的任何东西都需要对跟随我的幸运的男人/女孩保持合理的理智。

  2. etckeeper 可能会,但就我所见,它并不适合管理除 /etc 之外的任何内容。即,它不适合存储传统上位于 /usr/local/bin 中的自定义脚本。此外,etckeeper 大概管理所有/etc,我想我更喜欢只对特定内容进行版本控制(例如 postfix、apache、fail2ban、ssh 和可能的 munin)。

  3. 一个简单的 git 或 svn repo 肯定不会做,因为 git 跟踪权限,它不跟踪所有权,而 svn 也不跟踪。

    svn.svn在每个跟踪目录中保留一个子目录,而.git仅存在于工作副本的根目录中。这两种情况各有利弊。.svn在某些地方(例如 /etc/apache2/sites-enabled),某个位置的目录的存在可能没问题,但会在其他地方扰乱脑残脚本/工具。(我确定我之前读过一些东西:cron 是否可以与.svn/etc/cron.d 中的目录一起使用,但 depmod 与 /lib/modules 不同?)

    另一方面,使用.gitin /,git 将所有内容都视为跟踪的候选对象,甚至(可能)其他 git 存储库!

定制解决方案

这是我建议做的:一个存储在主机上的 subversion 存储库(比如 /usr/local/sc-repo)和一个用Pysvn编写的管理脚本,它实现了以下内容:

  • 添加(但默认情况下,不是递归的),它将文件的模式和所有权存储为自定义属性。另外,我喜欢$Id$我的配置文件中的标签,所以这将确保svn:keywords正确设置。

  • 犯罪

  • 更新,在写入文件后应用所有权和模式

  • 恢复,同上

  • perms,如 …

linux deployment configuration version-control

4
推荐指数
1
解决办法
1715
查看次数

标签 统计

linux ×2

configuration ×1

deployment ×1

lvm ×1

md ×1

ubuntu ×1

udev ×1

version-control ×1