我有一个运行良好的 Ubuntu 11.10,其中 / 位于 SSD(/dev/sdc)上,/home 位于软件 RAID1 阵列上,该阵列分别位于 /dev/sda 和 /dev/sdb(相同驱动器)上的两个分区上。这被设置为 SW RAID。主板的 HW RAID 被禁用。
今天,我使用实时 CD 将 11.10 从 11.10 升级到 13.04。我选择了升级现有的 11.10 并保留用户数据的选项。起初,升级后我无法启动。我怀疑安装未能正确更新 sdc 上的 grub,因此我首先尝试通过从实时 CD 启动并安装和使用来修复它boot-repair
。由于某些不明原因,此操作无法完成,因此我改为按照此处所述在 sdc 上手动重新安装 grub:http://www.howtogeek.com/114884/how-to-repair-grub2-when-ubuntu-wont-boot/之后,Ubuntu 13.04 启动时会显示一个基于文本的登录提示,它不接受我在安装过程中指定的用户名和密码。
然后我再次从 Live CD 安装 13.04,这次选择将现有的 13.04 安装“升级”到 13.04(再次选择保留用户文件等选项)。之后,13.04 可以成功启动到图形登录,让我可以无错误地登录。
现在,唯一剩下的问题是,我的 RAID1 阵列似乎丢失了 :-( 在 sda 上,以前有(按此顺序):
- 699GB RAID 成员分区
- 约 200GB 未分配空间
- 一个 109GB(ext3 或 ext4 - 不记得了)的分区,保存着以前安装的 Ubuntu 的备份。
在 sdb 上,曾经有:
- 699GB RAID 成员分区
- 一个大约 100GB(ext3 或 ext4 - 不记得了)的分区,保存着我最近安装的 Ubuntu 的备份。
- 一个大约 150GB(ext3 或 ext4 - 不记得了)的分区,保存着一些文件。
- 一个大约 50GB(ext3 或 ext4 - 不记得了)的分区,保存着一些文件。
现在检查磁盘,几个分区都消失了 - 基本上 sdb 上的所有内容。fdisk -lu
现在说(抱歉是丹麦语 - 我希望您可以通过与fdisk
您首选语言的输出进行比较来猜出它的意思):
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 hoveder, 63 sektorer/spor, 121601 cylindre, i alt 1953525168 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x000d9c82
Enhed Opstart Start Slut Blokke Id System
/dev/sda1 63 1364496839 682248388+ 0 Tom
/dev/sda2 * 1740050432 1953519615 106734592 83 Linux
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 hoveder, 63 sektorer/spor, 121601 cylindre, i alt 1953525168 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x000bf717
Enhed Opstart Start Slut Blokke Id System
/dev/sdb1 1577969664 1869625343 145827840 83 Linux
/dev/sdb2 1869628635 1953520064 41945715 83 Linux
/dev/sdb3 1364494336 1577963519 106734592 83 Linux
/dev/sdb4 63 1364480774 682240356 0 Tom
Partitionstabellens indgange er ikke i diskrækkefølge
Disk /dev/sdc: 120.0 GB, 120034123776 bytes
255 hoveder, 63 sektorer/spor, 14593 cylindre, i alt 234441648 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 512 byte / 512 byte
Diskidentifikation: 0x0008fd03
Enhed Opstart Start Slut Blokke Id System
/dev/sdc1 * 2048 209295359 104646656 83 Linux
/dev/sdc2 209297406 234440703 12571649 5 Udvidet
/dev/sdc5 209297408 234440703 12571648 82 Linux swap / Solaris
Disk /dev/mapper/ddf1_RAID: 2000.1 GB, 2000131457024 bytes
255 hoveder, 63 sektorer/spor, 243168 cylindre, i alt 3906506752 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 32768 byte / 65536 byte
Diskidentifikation: 0x000d9c82
Enhed Opstart Start Slut Blokke Id System
/dev/mapper/ddf1_RAID1 63 1364496839 682248388+ 0 Tom
Partition 1 starter ikke på en fysisk sektorgrænse.
/dev/mapper/ddf1_RAID2 * 1740050432 1953519615 106734592 83 Linux
Disk /dev/mapper/ddf1_RAID1: 698.6 GB, 698622349824 bytes
255 hoveder, 63 sektorer/spor, 84935 cylindre, i alt 1364496777 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 32768 byte / 65536 byte
Justeringsforskydning: 512 byte
Diskidentifikation: 0xbd223da2
Disk /dev/mapper/ddf1_RAID1 indeholder ikke en gyldig partitionstabel
Disk /dev/mapper/ddf1_RAID2: 109.3 GB, 109296222208 bytes
255 hoveder, 63 sektorer/spor, 13287 cylindre, i alt 213469184 sektorer
Enheder = sektorer af 1 * 512 = 512 byte
Sektorstørrelse (logisk/fysisk): 512 byte / 512 byte
I/O-størrelse (minimum/optimal): 32768 byte / 65536 byte
Diskidentifikation: 0x00000000
Disk /dev/mapper/ddf1_RAID2 indeholder ikke en gyldig partitionstabel
跑步blkid
说:
/dev/sda: UUID="M-,^[eRM-^FM-^@%:M-,^[eRM-D^[eRM-\^[eRM-^?M-^?M-^?M-^?" TYPE="ddf_raid_member"
/dev/sdb: UUID="M-,^[eRM-^FM-^@%:M-,^[eRM-D^[eRM-\^[eRM-^?M-^?M-^?M-^?" TYPE="ddf_raid_member"
/dev/sdc1: UUID="32579810-0388-416d-bb49-7031ac2c2975" TYPE="ext4"
/dev/sdc5: UUID="b7507355-effd-4dbc-9b4e-0546bca036f4" TYPE="swap"
我尝试了一下mdadm --examine /dev/sda
,mdadm --examine /dev/sdb
结果显示 sda 的第一部分和所有 sdb 似乎包含 RAID0 成员分区:
/dev/sda:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.0.00
Orig Family : 43d3cf98
Family : 43d3cf98
Generation : 00000003
Attributes : All supported
UUID : 6792b89b:e5162c11:b694727d:de71f59c
Checksum : 7a5f4777 correct
MPB Sectors : 1
Disks : 2
RAID Devices : 1
Disk00 Serial : WD-WMATV3627263
State : active
Id : 00000000
Usable Size : 1953519880 (931.51 GiB 1000.20 GB)
[Volume0]:
UUID : 4af84c7c:76a536eb:e16d27fb:1a3a90c3
RAID Level : 0
Members : 2
Slots : [UU]
Failed disk : none
This Slot : 0
Array Size : 3907039232 (1863.02 GiB 2000.40 GB)
Per Dev Size : 1953519880 (931.51 GiB 1000.20 GB)
Sector Offset : 0
Num Stripes : 30523744
Chunk Size : 32 KiB
Reserved : 0
Migrate State : idle
Map State : normal
Dirty State : clean
Disk01 Serial : WD-WMATV3628555
State : active
Id : 00010000
Usable Size : 1953519880 (931.51 GiB 1000.20 GB)
/dev/sdb:
Magic : Intel Raid ISM Cfg Sig.
Version : 1.0.00
Orig Family : 43d3cf98
Family : 43d3cf98
Generation : 00000003
Attributes : All supported
UUID : 6792b89b:e5162c11:b694727d:de71f59c
Checksum : 7a5f4777 correct
MPB Sectors : 1
Disks : 2
RAID Devices : 1
Disk01 Serial : WD-WMATV3628555
State : active
Id : 00010000
Usable Size : 1953519880 (931.51 GiB 1000.20 GB)
[Volume0]:
UUID : 4af84c7c:76a536eb:e16d27fb:1a3a90c3
RAID Level : 0
Members : 2
Slots : [UU]
Failed disk : none
This Slot : 1
Array Size : 3907039232 (1863.02 GiB 2000.40 GB)
Per Dev Size : 1953519880 (931.51 GiB 1000.20 GB)
Sector Offset : 0
Num Stripes : 30523744
Chunk Size : 32 KiB
Reserved : 0
Migrate State : idle
Map State : normal
Dirty State : clean
Disk00 Serial : WD-WMATV3627263
State : active
Id : 00000000
Usable Size : 1953519880 (931.51 GiB 1000.20 GB)
然后我运行mdadm --assemble --scan
,现在我有一个 RAID0 阵列。它包含:
- 上面提到的 sda 下的三个部分。不幸的是,这里的 699GB 分区(我希望它仍然保存着我原来的 RAID1 阵列的一个副本)和 109GB 分区都无法安装。
- 我认为 1TB 的未分配空间对应于 sdb?
任何人都可以:
- 帮我找出哪里出了问题?
- 例如,为什么RAID1成员变成了RAID0成员?
- sdb 上的分区去哪儿了?
- 为什么 sda 上的分区中的分区类型丢失了?
- 告诉我如何修复它?
- 没有较小的分区我也可以,但是我真的很想从 RAID1 分区中恢复我的主目录。
答案1
就在我准备放弃的时候,现在我似乎找到了解决办法。
- 我跑去
parted /dev/sda print
识别分区所在的(看似空的)磁盘区域。 - 然后我运行后
parted /dev/sda rescue 0 699GB
发现偏移量为 1083kB 的分区。 parted
问我是否要将其添加到分区表中,我回答说是的。parted
现在可以看到分区了。- 然后我运行
parted /dev/sda unit B print
以获取分区的偏移量(以字节为单位),经过反复试验后我发现mount
需要这样做。 - 我现在可以挂载分区:
mount -o loop,ro,offset=1082880 -t ext4 /dev/sda /mnt
。
现在我可能会将恢复的 RAID1 成员中的数据以及较小分区中的数据复制到另一个硬盘驱动器;彻底擦除/dev/sda
;/dev/sdb
在其上创建新分区;在 RAID1 阵列中组装新分区;最后从备份中复制回数据。
关于出了什么问题:帮助我调查此事的系统管理员说,他们最有可能的猜测是 Ubuntu 升级过程不知何故错误地检测到了来自旧的(不存在的)硬件 RAID 设置而不是实际的软件 RAID 设置的元数据。它可能随后将阵列安装为 RAID0,跨越整个磁盘 /dev/sda 和 /dev/sdb,从而覆盖了跨越两个 ~700GB 分区的实际软件 RAID1 阵列的元数据。