在他对“混合突袭类型”问题的回答中,HBruijn 建议使用 LVM 来实现 RAID,而不是更标准的 MDRAID。
经过一番调查,LVM 似乎也支持 RAID 功能。过去,我在 MDRAID 之上使用 LVM,直到现在才知道 LVM 也支持 RAID 功能。这似乎是一个相对较新的发展,但我还没有确切地知道这是什么时候实施的。
因此,这些是在 Linux 上实现软件 RAID 的替代方法。这两种不同方法的优缺点是什么?我正在寻找两种方法之间的功能比较,以便人们可以决定哪种方法更适合他们。如果您在答案中包含您的数据,则基于实验的结论(例如,此功能不如此功能好用,这就是原因)也可以。
要解决的一些具体问题:
笔记:
在http://www.olearycomputers.com/ll/linux_mirrors.html 上有详细的讨论, 但我不知道它的写作日期。
Serverfault 上的类似问题:linux LVM mirror vs. MD mirror。不过这个问题是2010年问的,答案可能已经过时了。
2.02.87 版的变更日志条目 - 2011 年 8 月 12 …
有人可以向我解释一下,mdadm直接使用分区或整个磁盘创建阵列有什么区别?假设我打算使用整个驱动器。
想象一下以两种方式创建的 RAID6,其中一种是:
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
Run Code Online (Sandbox Code Playgroud)
或者:
mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd
Run Code Online (Sandbox Code Playgroud)
这两种变体中的任何一种有什么区别,以及可能出现的问题?
例如,我指的是此类阵列上的可靠性或可管理性或恢复操作等。
我在 4 个磁盘上有一个软件 RAID5 阵列(Linux md)。
我想用一个新磁盘替换其中一个磁盘,而不是将阵列置于降级状态,如果可能,联机。这怎么可能?
这很重要,因为我不想:
我想在网上这样做要求太多了,我应该dd将旧磁盘的数据原始复制 ( ) 到新磁盘,然后离线替换它,但我认为理论上是可能的......
一些背景:这些磁盘几乎都在连续旋转超过 5.5 年。目前,它们仍然可以完美运行,并且都通过了(长时间的)SMART 自检。但是,我有理由认为这 4 个磁盘中的一个不会持续太久(假设是预测性故障)。
我正在使用 Debian 挤压,并在软件 RAID 1 之上运行 LVM。我只是偶然发现下面的大部分链接/dev/mapper都丢失了,尽管我的系统似乎仍然正常运行。
我不确定发生了什么。我能想象到的唯一原因是我尝试让 LXC fedora 容器工作失败。我最终删除了一个/cgroup/laughlin与容器对应的目录,但我无法想象为什么这会导致问题。
/dev/mapper看起来(我做了一些改变,见下文)大致像
orwell:/dev/mapper# ls -la
total 0
drwxr-xr-x 2 root root 540 Apr 12 05:08 .
drwxr-xr-x 22 root root 4500 Apr 12 05:08 ..
crw------- 1 root root 10, 59 Apr 8 10:32 control
lrwxrwxrwx 1 root root 7 Mar 29 08:28 debian-root -> ../dm-0
lrwxrwxrwx 1 root root 8 Apr 12 03:32 debian-video -> ../dm-23
Run Code Online (Sandbox Code Playgroud)
debian-video 对应于我刚刚创建的一个 LV。
但是,我的系统上有相当多的 VG,对应于分布在 4 个磁盘上的 4 …
tl; dr:我将如何修复 RAID1 阵列中 1 个磁盘上的坏块?
但是请阅读整篇文章,了解我已经尝试过的内容以及我的方法中可能存在的错误。我已经尝试尽可能详细,我真的希望得到一些反馈
这是我的情况:我在 RAID1 阵列中设置了两个 2TB 磁盘(相同型号)mdadm。大约 6 个月前,当 SMART 报告它时,我注意到了第一个坏块。今天我注意到了更多,现在正在尝试修复它。
这个 HOWTO 页面似乎是每个人都链接到的一篇文章来修复 SMART 报告的坏块。这是一个很棒的页面,充满了信息,但是它已经过时了并且没有解决我的特定设置。这是我的配置的不同之处:
所以,让我们开始吧。这是我所做的,但是它似乎不起作用。请随时仔细检查我的计算和方法是否有错误。磁盘报告错误是/dev/sda:
# smartctl -l selftest /dev/sda
smartctl 5.42 2011-10-20 r3458 [x86_64-linux-3.4.4-2-ARCH] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed: …Run Code Online (Sandbox Code Playgroud) 在我的设置中,我有两个磁盘,每个磁盘都按以下方式格式化:
(GPT)
1) 1MB BIOS_BOOT
2) 300MB LINUX_RAID
3) * LINUX_RAID
Run Code Online (Sandbox Code Playgroud)
引导分区映射在 /dev/md0 中,rootfs 映射在 /dev/md1 中。md0 用 ext2 格式化,md1 用 XFS 格式化。(我知道必须在 md 设备上而不是在 sd 上进行格式化 - 请告诉我这是否有误)。
如何正确设置 GRUB,以便在一个驱动器出现故障时,另一个仍能启动?并且通过扩展,替换驱动器也将自动包含 GRUB?当然,如果这甚至可能的话。
不久前,我mdadm在 RAID6 中创建了具有 4 个驱动器的新软件 RAID 阵列 ( )。它似乎工作得很好。mdstat如下:
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sde1[3] sdd1[2] sdb1[1]
1953260544 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
bitmap: 0/8 pages [0KB], 65536KB chunk
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
困扰我的是bitmap: 0/8 pages我不明白的部分。
问题是:这是一个潜在的问题吗?请详细说明位图的实际含义。
此数组的完整详细信息如下:
/dev/md0:
Version : 1.2
Creation Time : Tue Nov 1 13:44:13 2016
Raid Level : raid6
Array Size : 1953260544 (1862.77 GiB …Run Code Online (Sandbox Code Playgroud) 基本安装
安装时出现以下错误
wrong fs type, bad option, bad superblock on
并在dmesg
EXT4-fs (sdc1): VFS: Can't find ext4 filesystem
我试图找到磁盘的文件系统类型并想出了
$sudo file -s /dev/sdc
/dev/sdc: x86 boot sector; partition 1: ID=0x83, starthead 254, startsector 63, 1953520002 sectors, code offset 0xb8
一些命令的输出
fdisk -l /dev/sdc
$fdisk -l /dev/sdc
Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 …
我在软件 RAID 1 中的 LVM 上安装了 Debian Jessie。
为了确保MBR写在RAID 1的两个磁盘上,我运行dpkg-reconfigure grub-pc(如建议在这里),然后选择两个磁盘。
我收到这些错误:
root@bouzin:/home/jerome# dpkg-reconfigure grub-pc
Installing for i386-pc platform.
File descriptor 3 (pipe:[1038681]) leaked on vgs invocation. Parent PID 4760: grub-install
File descriptor 3 (pipe:[1038681]) leaked on vgs invocation. Parent PID 4760: grub-install
File descriptor 3 (pipe:[1038681]) leaked on vgs invocation. Parent PID 4760: grub-install
Installation finished. No error reported.
Installing for i386-pc platform.
File descriptor 3 (pipe:[1038681]) leaked on vgs invocation. Parent PID 4789: grub-install …Run Code Online (Sandbox Code Playgroud) 前段时间我家里有一个RAID5系统。4 个磁盘中的一个出现故障,但在移除并放回后似乎没问题,所以我开始重新同步。当它完成时,我惊恐地意识到 4 个磁盘中有 3 个出现故障。但是我不相信这是可能的。磁盘上有多个分区,每个分区是不同 RAID 阵列的一部分。
md0 和 md2 报告所有磁盘已启动,而 md1 报告 3 个失败(sdb2、sdc2、sdd2)。我的理解是,当硬盘驱动器出现故障时,所有分区都应该丢失,而不仅仅是中间的分区。
那时我关闭了计算机并拔掉了驱动器。从那时起,我使用那台计算机和一个较小的新磁盘。
有没有希望恢复数据?我能以某种方式说服 mdadm 我的磁盘实际上在工作吗?唯一可能真正有问题的磁盘是 sdc,但其他阵列也报告了该磁盘。
更新
我终于有机会连接旧磁盘并从 SystemRescueCd 启动这台机器。以上都是凭记忆写的。现在我有一些硬数据。这是输出mdadm --examine /dev/sd*2
/dev/sda2:
Magic : a92b4efc
Version : 0.90.00
UUID : 53eb7711:5b290125:db4a62ac:7770c5ea
Creation Time : Sun May 30 21:48:55 2010
Raid Level : raid5
Used Dev Size : 625064960 (596.11 …Run Code Online (Sandbox Code Playgroud)