linux – md数组定义来自哪里?

linux – md数组定义来自哪里?,第1张

概述我在ARM计算机中创建了一个md阵列,在RAID 1中有两个USB / SATA磁盘.然后我将两个磁盘移动到我的Ubuntu桌面并安装了mdadm.安装检测到RAID并将定义添加到/etc/mdadm/mdadm.conf.那么,它来自哪里? 后来我再次从我的桌面创建RAID,现在(甚至重启后)mdadm –examine –scan显示两个数组: ARRAY /dev/md/0 metadat 我在ARM计算机中创建了一个md阵列,在RAID 1中有两个USB / SATA磁盘.然后我将两个磁盘移动到我的Ubuntu桌面并安装了mdadm.安装检测到RAID并将定义添加到/etc/mdadm/mdadm.conf.那么,它来自哪里?

后来我再次从我的桌面创建RAID,现在(甚至重启后)mdadm –examine –scan显示两个数组:

ARRAY /dev/md/0  Metadata=1.2 UUID=19846240:ff2a5429:8b22a9bd:a3760e2e name=microserver.delrio.red:0ARRAY /dev/md/0  Metadata=1.2 UUID=49a26458:5449d0ff:4606e203:ddad2fe8 name=ubuntu:0

在GNU / linux中使用mdadm创建RAID阵列时,存储的数组定义在哪里?

我怎样才能删除第一个?

解决方法@H_404_13@ 它在不同的系统上有很大的不同. linux软件raID使用raID superbock,它位于每个成员设备的最后64kB上.

更确切地说,如果设备的大小是n字节,则raID超级块在n& ~65535-65536处.

raID超级块最后,因为在镜像raID级别,它更容易独立于阵列使用成员设备(因为你可以简单地安装它,当然你需要在那之后进行数组恢复).

其精确的raID超级块格式在this wiki中有详细描述.

它可以通过任何hexa编辑器查看/编辑它的实际字节数据,例如dhex.

实际上,它描述了整个raID布局(raID级别,校验和)以及整个阵列中的成员设备.

在raID初始化期间,内核读取超级块并检查它们的一致性. Insonsistent成员未插入到数组中.

mdadm –examine –scan显示了这个raID超级块信息,没有内核raID驱动程序的干预.

在您的情况下,阵列中存在明显的不一致.从这里开始就不容易找到,它的原因是什么.但是,你有一个raID1,它是一面镜像,因此没有数据丢失的真正危险.你能做的最简单:

>使用mdadm –zero-superblock命令销毁其中一个raID成员上的raID超级块,
>然后使用mdadm –add将此设备重新插入阵列.

它将启动一个新的重新同步.

附注:1:

我认为raID超级块已经被你的ubuntu重写了,但它不确定.将超级块归零然后重新插入设备将修复它.

附注:2:

raID超级块格式与平台无关,它应该是相同的,直到不同体系结构之间的最后一个字节,即使在字节序不兼容的情况下也是如此.您的问题几乎肯定不是架构不兼容,而是错误地覆盖了您的某个设备上的raID超级块.

总结

以上是内存溢出为你收集整理的linux – md数组定义来自哪里?全部内容,希望文章能够帮你解决linux – md数组定义来自哪里?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1040049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存