使用Knoppix Linux LiveCD从RAID1 LVM分区恢复数据

使用Knoppix Linux LiveCD从RAID1 LVM分区恢复数据

版本1.0
作者:Till Brehm <t.brehm [at] projektfarm [dot] com>
最后编辑:04/11/2007

本教程介绍如何从作为LVM2 RAID1设置的一部分的单个硬盘中拯救数据,如由Fedora Core安装程序创建的。 为什么恢复数据有问题? 以前是LVM RAID1安装程序的一部分的每个硬盘包含存储在RAID中的所有数据,但硬盘不能简单地安装。 首先,必须为分区配置RAID设置,然后必须设置LVM才能使用(这些)RAID分区,然后才能安装。 我将使用Knoppix Linux LiveCD进行数据恢复。

先决条件

本教程使用了Knoppix 5.1 LiveCD。 从这里下载CD ISO映像并将其刻录在CD上,然后将包含RAID分区的硬盘连接到主板的IDE / ATA控制器,将Knoppix CD放入CD驱动器并从CD引导。

我使用的硬盘是连接到第一个IDE控制器(hda)的IDE驱动器。 在我的情况下,硬盘只包含一个分区。

恢复袭击

Knoppix启动后,打开一个shell并执行命令:

sudo su

成为root用户。

由于我没有mdadm.conf文件从原始配置,我用这个命令创建它:

mdadm --examine --scan /dev/hda1 >> /etc/mdadm/mdadm.conf

结果应该与此相似:

DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a

编辑文件并添加设备= / dev / hda1,在描述RAID阵列的行末尾缺少

vi /etc/mdadm/mdadm.conf

最后文件看起来像这样:

DEVICE partitions
CREATE owner=root group=disk mode=0660 auto=yes metadata=1
MAILADDR root
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=a28090aa:6893be8b:c4024dfc:29cdb07a devices=/dev/hda1,missing

字符串/ dev / hda1是硬件设备, 缺少意味着此RAID阵列中的第二个磁盘目前不存在。

编辑文件/ etc / default / mdadm

vi /etc/default/mdadm

并换行:

AUTOSTART=false

至:

AUTOSTART = true

现在我们可以开始我们的RAID设置:

/etc/init.d/mdadm start
/etc/init.d/mdadm-raid start

要检查我们的RAID设备是否正常,请运行以下命令:

cat /proc/mdstat

输出应如下所示:

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [ra id10]
md0 : active raid1 hda1[1]
293049600 blocks [2/1] [_U]

未使用的设备:<none>

恢复LVM设置

LVM配置文件无法通过简单的命令(如mdadm.conf)创建 ,但是LVM在分区开头存储一个或多个配置文件内容副本。 我使用命令dd来提取分区的第一部分并将其写入文本文件:

dd if=/dev/md0 bs=512 count=255 skip=1 of=/tmp/md0.txt

用文本编辑器打开文件:

vi /tmp/md0.txt

你会首先找到一些二进制数据,然后是一个这样的配置文件:

VolGroup00 {
	id = "evRkPK-aCjV-HiHY-oaaD-SwUO-zN7A-LyRhoj"
	seqno = 2
	status = ["RESIZEABLE", "READ", "WRITE"]
	extent_size = 65536		# 32 Megabytes
	max_lv = 0
	max_pv = 0

	physical_volumes {

		pv0 {
			id = "uMJ8uM-sfTJ-La9j-oIuy-W3NX-ObiT-n464Rv"
			device = "/dev/md0"	# Hint only

			status = ["ALLOCATABLE"]
			pe_start = 384
			pe_count = 8943	# 279,469 Gigabytes
		}
	}

	logical_volumes {

		LogVol00 {
			id = "ohesOX-VRSi-CsnK-PUoI-GjUE-0nT7-ltxWoy"
			status = ["READ", "WRITE", "VISIBLE"]
			segment_count = 1

			segment1 {
				start_extent = 0
				extent_count = 8942	# 279,438 Gigabytes

				type = "striped"
				stripe_count = 1	# linear

				stripes = [
					"pv0", 0
				]
			}
		}
	}
}

创建文件/ etc / lvm / backup / VolGroup00

vi /etc/lvm/backup/VolGroup00

并插入配置数据,使文件看起来类似于上面的例子。

现在我们可以启动LVM:

/etc/init.d/lvm start

阅读卷:

vgscan
Reading all physical volumes. This may take a while...
Found volume group "VolGroup00" using metadata type lvm2
pvscan
PV /dev/md0 VG VolGroup00 lvm2 [279,47 GB / 32,00 MB free]
Total: 1 [279,47 GB] / in use: 1 [279,47 GB] / in no VG: 0 [0 ]

并激活音量:

vgchange VolGroup00 -a y
1 logical volume(s) in volume group "VolGroup00" now active

现在我们可以将分区挂载到/ mnt / data

mkdir /mnt/data
mount /dev/VolGroup00/LogVol00 /mnt/data/

如果从UTF-8格式的文件名的硬盘中恢复数据,可能需要将它们转换为当前的非UTF-8区域设置。 在我的情况下,RAID硬盘来自具有UTF-8编码文件名的Fedora Core系统。 我的目标语言环境是ISO-8859-1。 在这种情况下,Perl脚本convmv有助于将文件转换为目标区域设置。

安装convmv

cd /tmp
wget http://j3e.de/linux/convmv/convmv-1.10.tar.gz
tar xvfz convmv-1.10.tar.gz
cd convmv-1.10
cp convmv /usr/bin/convmv

要将/ mnt / data中的所有文件名转换为ISO-8859-1区域设置,请运行以下命令:

convmv -f UTF-8 -t ISO-8859-1 -r --notest /mnt/data/*

如果要首先测试转换,请使用:

convmv -f UTF-8 -t ISO-8859-1 -r /mnt/data/*

链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏