我最近遇到了一些计算机问题,不知何故,我的一个磁盘最终无法在我的阵列中被识别。它识别良好,智能和其他一些磁盘检查实用程序都说它很好,但不知何故 UUID 是不同的。
结果,mdadm 说有一个“已删除”的磁盘。理想情况下,我只想更新它以便它再次检测到它,但由于这是 raid-5,我不明白为什么我不能将它从阵列中删除,然后重新添加它并让它重建。
不幸的是,我看到的每个命令都希望我在删除它时将其称为设备,但就 md 而言,它只是一个不再可用的 uuid。如何删除当前设置为“已删除”的磁盘?
- 编辑:根据要求提供更多信息。我目前在没有网络的情况下在 ubuntu live cd 中运行,所以这些是手工输入的。抱歉,如果有任何间距问题。
/proc/mdstat:
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : inactive sdd1[0] sdc[3] sde1[1]
3907034368 blocks
mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Wed May 26 22:59:21 2004
Raid Level : raid5
Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
Raid Devices: 4
Total Devices: 3
Prefered Minor : 0
Persistence: Superblock is persistent
Update Time: Sat Nov 27 1:03:17 …Run Code Online (Sandbox Code Playgroud) 我有一台带有 4 个 SATA 磁盘的 Ubuntu (9.10) 机器。每个磁盘的分区都相同,前几 GB 留作 RAID 1 阵列 ( /dev/md0) 用于引导卷,其余的留作 RAID 5 ( /dev/md1)。
最近,我按照此处的说明,通过反复出现故障并移除驱动器、将其替换为较大的驱动器、对其进行分区并在其上重建来升级到更大的驱动器。这一切顺利完成。
但是,升级后第一次重新启动时,Ubuntu 将我踢到 initfs shell,声称它找不到根设备。经核查/proc/mdstat,我发现,它以某种方式组装的整个驱动器(/dev/sda,/dev/sdb等)集成到一个RAID 5卷下/dev/md1,而不是组装分区到自己的阵列。做mdadm --stop /dev/md1; mdadm --assemble --scan修复它,并且两个卷都正确组装(并且没有问题地安装)。
出了什么问题,我该如何解决?
我有 6 个驱动器(每个 1.5T,所有相同的型号和固件版本)是 RAID5 阵列的一部分。RAID5 构成一个 LVM 卷组和一个逻辑组。后者仅包含一个 ext3 分区。我最近跑了:
e2fsck -f /dev/vg03/lv01 && resize2fs -M /dev/vg03/lv01
Run Code Online (Sandbox Code Playgroud)
退出没有错误。
现在,当我尝试时,mount /dev/vg03/lv01我得到:
EXT3-fs error (device dm-0): ext3_check_descriptors: Block bitmap for group 30533 not in group (block 1000532368)!
EXT3-fs: group descriptors corrupted!
Run Code Online (Sandbox Code Playgroud)
我如何摆脱这种困境?这是我目前可以给你的所有信息:
fdisk -l /dev/sd[cdefgh]显示(正确)它们是“ Linux raid autodetect”
但 fdisk 现在显示:
fdisk -l /dev/md0
Run Code Online (Sandbox Code Playgroud)
磁盘 /dev/md0:7501.5 GB,7501495664640 字节
...
磁盘标识符:0x00000000
磁盘 /dev/md0 不包含有效的分区表
(而不是 LVM 类型分区)
fdisk -l /dev/vg03/lv01
Run Code Online (Sandbox Code Playgroud)
磁盘 /dev/vg03/lv01:7501.5 GB,7501491732480 字节
...
磁盘标识符:0x00000000
磁盘 /dev/vg03/lv01 …
为了数据安全,我打算镜像两个相同的驱动器。这些是纯数据驱动器,而不是主操作系统驱动器。
在这样的系统中,Linux raid auto: type 0xfd在每个驱动器上创建单个分区 ( ) 并将每个驱动器的分区 (例如/dev/sdb1和/dev/sdc1)一起突袭是否更好?或者我应该直接创建未分区驱动器的镜像阵列(例如/dev/sdb和/dev/sdc)?
最终我打算从结果数组创建一个 LVM 容器来存储实际数据。是否有任何考虑可能会使一个或另一个选择更安全或更可取?
我有一台运行 Windows Server 2008 R2 的服务器,带有(Windows 原生)软件 raid-5 阵列。该阵列由 7 个 1TB 西部数据 RE3 和 RE4 驱动器组成。我有这个阵列的离线备份。
问题是这样的:几天前,我在将一个大文件复制到磁盘后注意到该文件存在完整性问题——我通过 uTorrent 下载了一个大约 12GB 的文件。将其移至raid 阵列后,我使用uTorrent 重新定位下载位置,并执行重新检查,以便我可以从该位置为其播种。复查发现复制文件只有6308/6310块完好无损。
我的下一步是编写一个快速的 powershell 脚本,将文件复制到数组,同时对原始文件和结果文件执行 SHA1 哈希并比较它们。较小的文件(100-1000MB)复制就好了。当我开始复制更大的数据(~15GB)时,我发现哈希检查失败了大约 2/3 的时间。损坏的文件有非常非常小的不一致 - 小于 0.01%(编辑 - 后来的实验表明,损坏的数据块的长度始终为 60 个字节,每个 15GB 复制文件通常会出现一到三个。损坏的数据出现随机,没有一致的翻转位模式)。我通过将这个大文件放在服务器的 C:\ 上,并从那里反复复制到阵列,进一步消除了网络或客户端问题的可能性,看到了类似的结果。
通过资源管理器、powershell 或标准 Windows 命令提示符复制数据会产生相同的结果。没有任何副本失败或报告任何问题。RAID 阵列本身在磁盘管理中被列为正常。
经过几次实验,我关闭了服务器并在一夜之间运行了 memtest。没有检测到错误。chkdsk 的基本运行没有发现任何问题,但我没有使用 /R 标志,因为我不确定这会如何影响软件 raid-5 卷。
我接下来运行 Crystal Disk Info 来检查驱动器上的智能数据 - 但发现 CDI 仅检测到阵列中 7 个磁盘中的 5 个。我不知道为什么。尽管如此,CDI 在单个驱动器上显示以下“警告”标志:
05 199 199 140 000000000001 Reallocated Sectors Count
C5 200 200 __0 …Run Code Online (Sandbox Code Playgroud) 我不知道为什么,但是在我重新启动 ec2 实例后,/dev/md0 没有像往常一样启动。在我看到 /dev/md* 中的可用内容后,而不是看到 /dev/md0,那里有一个名为 /dev/md127 的设备。我更新了 fstab 以反映新设备,并且能够成功安装它。查看 /proc/mdstat,它使用了最初创建 RAID 的正确基础临时卷:
[root@ip-10-0-1-21 ~]# cat /proc/mdstat
Personalities : [raid0]
md127 : active raid0 xvdc1[1] xvdb1[0]
870336512 blocks super 1.2 512k chunks
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
然而,当我运行一个mdadm --detail --scan不同的设备名称时会出现:
[root@ip-10-0-1-21 ~]# mdadm --detail --scan
ARRAY /dev/md/ip-10-0-1-21:0 metadata=1.2 name=ip-10-0-1-21:0 UUID=543098de:1e9dc96e:4ce2444c:934bdfdf
Run Code Online (Sandbox Code Playgroud)
设备名称更改是否正常?我是否必须使用新设备名称更新 /etc/fstab?使用新信息重新运行 /etc/mdadm.conf 是否重要?这个设备名称是 /dev/md127 还是 dev/md/ip-10-0-1-21:0?我想我不确定这里发生了什么。一些见解会很棒。
我有一个要扩展的 RAID60。
当前为:2 个轴,每个轴有 9 个磁盘 + 2 个备件。
未来是:4 个轴,每个轴有 10 个磁盘 + 1 个备用。
所以我需要做一些 --grow 来重塑驱动器。
我认为这就足够了:
mdadm -v --grow /dev/md1 --raid-devices=10 --backup-file=/root/back-md1
mdadm -v --grow /dev/md2 --raid-devices=10 --backup-file=/root/back-md2
mdadm -v --grow /dev/md0 --raid-devices=4 --add /dev/md3 /dev/md4
Run Code Online (Sandbox Code Playgroud)
最后一个命令有效,但前 2 个命令失败:
mdadm: Need to backup 7168K of critical section..
mdadm: /dev/md2: Something wrong - reshape aborted
Run Code Online (Sandbox Code Playgroud)
我如何 --grow RAID6 以使用更多设备?
系统信息:
$ mdadm --version
mdadm - v3.2.5 - 18th May 2012
$ uname -r
3.5.0-17-generic
Run Code Online (Sandbox Code Playgroud)
Makefile 重现问题:
all: …Run Code Online (Sandbox Code Playgroud) 我正在运行 Ubuntu 12.04 LTS。昨天我在邮箱里发现了一条消息,说我的服务器被关闭了。我继续重新启动系统,但几分钟后它没有出现,而且我没有硬件 KVM 系统来查看内核正在向终端打印什么。所以我将系统重新启动到 Linux 救援映像,我发现软件 RAID 1 阵列不同步。救援系统也开始重建RAID阵列。
到目前为止,没有证据表明任何磁盘存在硬件错误。到目前为止,SMART 状态看起来不错。
我从未收到过 mdadm 的电子邮件通知,即使在 /etc/mdadm/mdadm.conf 中打开了电子邮件通知。
该服务器还配置为将所有系统日志消息转发到日志主机,因此我检查了我的日志主机。相关部分是:
5 月 20 日 15:38:40 内核:[1.869825] md0:检测到从 0 到 536858624 的容量变化 5 月 20 日 15:38:40 内核:[1.870687] md0:未知分区表 5 月 20 日 15:38:40 内核:[1.877412] md:绑定 5 月 20 日 15:38:40 内核:[1.878337] md/raid1:md1:不干净——开始背景重建 5 月 20 日 15:38:40 内核:[1.878376] md/raid1:md1:2 个镜像中有 2 个处于活动状态 5 月 20 日 15:38:40 内核:[1.878418] md1:检测到从 0 到 3000052808704 的容量变化 5 月 20 日 15:38:40 内核:[1.878575] md:重新同步 RAID …
编辑:问题已解决。有问题的队列已用于流量控制数据包。为什么 igb 驱动程序会传播 FC 数据包以将它们丢弃(并计数)是另一个问题。但解决方案是,没有任何东西会以数据丢失的方式丢失。
非常感谢syneicon-dj,您的指点dropwatch是金币!
===原始问题供进一步参考===
我们有以下情况:
系统:有问题的服务器是带有 4 个四核氙气 cpu、128GB ECC RAM 并且运行 debian linux 的戴尔 poweredge。内核是 3.2.26。
所讨论的接口是具有四个接口的特殊 iSCSI 卡,每个接口都使用 Intel 82576 千兆位以太网控制器。
背景:在我们的一台服务器上,许多 NAS(Thecus N5200 和 Thecus XXX)使用 iSCSI 连接到专用 1GB/s 接口。我们有 5 张卡,每张卡有 4 个端口。NAS 文件管理器直接连接,之间没有切换。
两周前,我们设法清除了四个 NAS 文件管理器,并使用它们使用 mdadm 构建了一个 raid6。使用 LVM,我们可以为各种项目动态创建、缩小和/或增加存储,而不是时不时地搜索所有 NAS 文件管理器以获取可用空间。
然而,我们几乎在每个接口上都出现了大量超限,并且大量数据包被丢弃。调查表明,必须增加网络堆栈的默认设置。我使用 sysctl 调整所有设置,直到不再发生超限。
不幸的是,用于 NAS 突袭的接口仍然会丢弃大量数据包,但只有 RX。
在搜索(这里,google,metager,intel,任何地方,任何地方)之后,我们发现有关 intel igb 驱动程序的信息存在一些问题,必须完成一些工作。
因此,我下载了最新版本(igb-4.2.16),编译了具有 LRO 和单独队列支持的模块,并安装了新模块。
使用此驱动程序的所有 20 (!) 个接口现在都有 8 个 RxTx 队列(未配对)并启用了 LRO。具体的选项行是:
options igb …Run Code Online (Sandbox Code Playgroud) 我需要知道如果 raid 1 磁盘之一无法工作/崩溃,我如何获得电子邮件警报。我有 CentOS 6.4 64 位,软件raid。
我在本教程之后犯了一些错误,因为它是一个底部注释
注意:已经发现,如果 /etc/mdadm.conf 文件中不存在 DEVICE partitions 部分,则 mdadm 不会发送电子邮件。如果这些部分不存在,可以使用以下命令创建新的 /etc/mdadm.conf 文件:mdadm –detail –scan > /etc/mdadm.conf”
我执行了那行,我的 mdadm.conf 文件是空的,来自 ssh 的响应是: "mdadm: An option must be given to set the mode before a second device (–scan) is listed"
我也不明白我必须使用这个 ssh 行来启动它:mdadm –monitor –scan –daemonize
但是我得到了这个响应"
mdadm: An option must be given to set the mode before a second device
(–scan) is listed
"
这是 'cat /proc/mdstat' :
Personalities : …Run Code Online (Sandbox Code Playgroud)