长话短说,我负责一个有两个 RAID 阵列(/dev/md0 和 /dev/md2)的媒体服务器。我还有很多关于软件 RAID 和 LVM 等方面的知识需要学习。我们的 /dev/md0 驱动器出现故障,还好没什么大不了的,我更换了坏驱动器,重新组装了 RAID 阵列(花了昨晚大部分时间才完成),今天早上我进来时能够挂载 /dev/md0,没有数据丢失。
我当时完全没有想到 /dev/md2 出现了问题。/dev/md0 是我同事两年前设置的,而 /dev/md2 是我大约六个月前设置的。我一直使用戴尔和惠普服务器内置的硬件控制器进行 RAID,这是我第一次处理软件 RAID。我按照 [url] 上的说明进行操作http://www.gagme.com/greg/linux/raid-lvm.php我认为这是最好的主意,因为 LVM 可以让我在将来扩展 RAID 阵列(我刚刚了解到 mdadm 也可以做同样的事情)。直到今天,这都没有问题。修复 /dev/md0 后重新启动机器,无法挂载 /dev/lmv-raid/lvm0(提示找不到文件或目录)。看起来逻辑卷几乎消失了。我不明白是什么原因造成的。第二个阵列中没有驱动器坏了,我没有碰过第二个阵列。阵列应该没有出什么问题。但看起来有些不对劲。
现在 /dev/md2 正在运行,处于干净状态,但我无法挂载它。我担心数据已经丢失。真正可怕的是,我脑子里根本不知道发生了什么。我假设我无法挂载 /dev/md2,因为 RAID 阵列预计由 LVM 控制。也许我对系统了解不够,但如果我有一个干净的阵列,数据不应该还在阵列中吗?有什么想法可以恢复数据吗?我最不想做的事情就是回到我的老板那里告诉他,在修复一个阵列的过程中,另一个阵列神奇地坏了,你所有的数据都消失了。我查看了多个网站,但由于我不知道到底是什么坏了,所以我不知道我是否真的丢失了数据,或者是否还有其他我遗漏的东西。
任何建议都将不胜感激,我整个早上都在为此苦苦挣扎,完全不知所措。
以下是更多信息:
[root@viamao ~]# mdadm --detail /dev/md2
/dev/md2:
Version : 00.90.01
Creation Time : Tue Jun 9 11:32:06 2009
Raid Level : raid5
Array Size : 4395415488 (4191.79 GiB 4500.91 GB)
Device Size : 1465138496 (1397.26 GiB 1500.30 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 9 15:54:39 2009
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
0 8 128 0 active sync /dev/sdi
1 8 144 1 active sync /dev/sdj
2 8 160 2 active sync /dev/sdk
3 8 176 3 active sync /dev/sdl
UUID : 88bbe155:b6d852b1:3ad8a77d:5eba3ee2
Events : 0.36
[root@viamao archive2]# mount -t ext3 /dev/md2 /share/archive2
mount: wrong fs type, bad option, bad superblock on /dev/md2,
or too many mounted file systems
[root@viamao archive2]# mount
/dev/hda3 on / type ext3 (rw)
none on /proc type proc (rw)
none on /sys type sysfs (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /share/archive1 type ext3 (rw)
[root@viamao share]# cat /proc/mdstat
Personalities : [raid5]
md2 : active raid5 sdl[3] sdk[2] sdj[1] sdi[0]
4395415488 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
md0 : active raid5 sda[0] sdh[7] sdg[6] sdf[5] sde[4] sdd[3] sdc[2] sdb[1]
5128021248 blocks level 5, 64k chunk, algorithm 2 [8/8] [UUUUUUUU]
unused devices: <none>
还有什么我可以告诉你的,可能会有所帮助吗?我有一个无法挂载的活动 RAID 阵列,我认为这与它曾经在 lvm 上有关,但现在当我尝试挂载 /dev/lvm-raid/lvm0 时,它告诉我找不到特殊设备。lvdisplay 没有给我任何东西,pvdisplay 只向我显示了我的操作系统所在的驱动器。vgdisplay 也没有产生任何结果。
有什么想法吗?我真的不知道该说什么。
答案1
Linux 中的文件系统层(按相反顺序开始,从物理驱动器到文件系统):
- 物理设备
- /dev/sdi
- /dev/sdj
- /dev/sdk
- /dev/sdl
每个驱动器上的特殊 md 分区类型(使用时)
- 这可能存在,也可能不存在。虽然建议您在每个驱动器上简单地创建单个分区,该分区跨越其所在驱动器的整个大小,但可以直接使用设备名称指定整个驱动器。请注意,这可能会导致一些分区工具对它们正在处理的内容感到困惑(因为分区表只是“消失”),所以我不推荐这样做。
就您而言,指定了整个驱动器,因此看不到任何分区。您不必担心这一点。
md 驱动程序(使用时)
- /dev/md2
详细信息和报告的输出均
/proc
表明阵列的所有驱动器均已启动,并且没有驱动器处于故障状态。这意味着阵列是健康的!LVM(使用时)
- 以 root 身份登录后在 shell 中输入以下内容:
pvscan && vgscan && lvscan
如果有任何卷需要查找,它们应该在这里。请注意,卷扫描过程由一个文件控制,该文件可以在执行扫描时选择忽略某些设备。您需要确保明确扫描 /dev/md2。每个 LVM 卷都印有一个 GUID;如果丢失或损坏,可能会导致您看到的一些问题。这里的目标是让您的 LVM 卷被识别。一旦它们恢复正常,您的系统就处于良好状态。
文件系统
我想你知道这里的规矩。
从这里您应该能够恢复您的文件系统。
答案2
通常 LVM 是在 MD 之上完成的。也许您使用命令行而不是发行版的工具来设置 LVM?如果是这样,也许启动脚本不知道 LVM。
首先执行“vgscan”并查看它是否出现。如果是这样,那只是解开脚本的问题。
答案3
您可能会很难得到“这样做可以解决问题”的答案,主要是因为任何优秀的系统管理员都对数据丢失极为偏执,包括在可能导致数据丢失的情况下指导其他人。
根据您提供的内容,我将总结我所看到的以及您可以从哪里开始。
- /dev/md2 是 RAID 5 设备,有 (4) 个 1.5TB 驱动器
- 整个底层驱动器正被 RAID 模块使用 - 驱动器上没有分区
- 您的 /dev/md2 设备现在报告正常/良好状态
首先发布以下结果:
pvdisplay
和vgscan
您是否有位于 /etc/lvm/backup/ 中的“lvm-raid”文件?
答案4
您可以尝试以下方法
pvdisplay /dev/md2
并提供结果。这将明确告诉 pvdisplay 尝试读取 md2 设备以获取 LVM 信息。