我最初有一个使用 mdadm 构建的 Ubuntu 12.04 系统,其中带有 RAID5 阵列。
由于图形驱动程序的问题,12.04 系统崩溃了,我不得不重新安装操作系统。经过多次安装/重新安装尝试(并尝试使用 livecd 中的引导修复)。我终于让我的系统恢复运行 Ubuntu-Gnome 14.04。但现在我的 raid 不见了。
我担心使用启动修复时会发生一些事情。我不断收到消息说:检测到 Raid,您应该安装 mdadm(此时我安装了),然后它询问其他 md 程序并说我应该删除它,因为它导致 mdadm 出现问题或其他问题。此外,在这段时间里,gparted 多次向我大喊大叫,说其中一个驱动器上的 GUUID 分区表损坏了。
我可以使用 gparted 验证我用于制作 RAID5 的 3 个驱动器仍然存在并且仍然使用 ext4 文件系统格式化。
对于三个磁盘,输出
sudo sgdisk -p /dev/sdb
sudo sgdisk -p /dev/sdd
sudo sgdisk -p /dev/sde
是
mycomputer:/dev$ sudo sgdisk -p /dev/sdb
Disk /dev/sdb: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): D3E28B01-CBD8-40EB-B421-4BA0BEF275D9
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2157 sectors (1.1 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 3907028991 1.8 TiB 8300 R1b
mycomputer:/dev$ sudo sgdisk -p /dev/sdd
Disk /dev/sdd: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 21E3C879-F658-47E1-AB34-D1EA25EC6FFC
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2157 sectors (1.1 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 3907028991 1.8 TiB 8300 R2d
mycomputer:/dev$ sudo sgdisk -p /dev/sde
Disk /dev/sde: 3907029168 sectors, 1.8 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 48CFD331-24FC-4D30-B8A2-EFFA709B9600
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 3907029134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2157 sectors (1.1 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 3907028991 1.8 TiB 8300 R3e
因此看起来驱动器仍然完好无损,并且拥有原来所有的数据。我有一个脚本,其中记录了我用来创建阵列的所有命令,但我非常不确定/紧张如何重建和安装阵列而不丢失任何数据。
这是我的原始脚本。其中有些部分我显然不想重新执行,因为它们会删除数据。
sudo sgdisk -p /dev/sdb
sudo sgdisk -p /dev/sdd
sudo sgdisk -p /dev/sde
# DELETE ALL DATA
#sudo sgdisk --clear /dev/sdb
#sudo sgdisk --clear /dev/sdd
#sudo sgdisk --clear /dev/sde
sudo sgdisk -n 1:2048:3907028991 /dev/sdb -c 1:"R1b"
sudo sgdisk -n 1:2048:3907028991 /dev/sdd -c 1:"R2d"
sudo sgdisk -n 1:2048:3907028991 /dev/sde -c 1:"R3e"
#sudo mkfs.ext4 -t ext4 /dev/sdb1
#sudo mkfs.ext4 -t ext4 /dev/sdd1
#sudo mkfs.ext4 -t ext4 /dev/sde1
#https://raid.wiki.kernel.org/index.php/RAID_setup
#chunk size = 128kB (set by mdadm cmd, see chunk size advise above)
#block size = 4kB (recommended for large files, and most of time)
#stride = chunk / block = 128kB / 4k = 32
#stripe-width = stride * ( (n disks in raid5) - 1 ) = 32 * ( (3) - 1 ) = 32 * 2 = 64
sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/sdb1
sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/sdd1
sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/sde1
# make sure you have RAID module in the linux kernel
sudo modprobe raid456
cat /proc/mdstat
# Create RAID 5
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdd1 /dev/sde1
sudo mdadm --detail --scan
sudo mdadm --query --detail /dev/md0
sudo mdadm --detail --scan >> /etc/mdadm/mdadm.conf
cat /proc/mdstat
# Start RAID
sudo mdadm --assemble --scan
sudo mdadm --assemble /dev/md0
# Stop RAID
sudo mdadm --stop /dev/md0
# Format the RAID
sudo mkfs.ext4 -v -m .1 -b 4096 -E stride=32,stripe-width=64 /dev/md0
# Mount the RAID (dont forget to modify fstab)
sudo mkdir /media/raid
sudo chown username:username /media/raid
sudo mount /dev/md0 /media/raid
echo "/dev/md0 /media/raid ext4 defaults 1 2" >> /etc/fstab
# Stop Rebuild
sudo /usr/share/mdadm/checkarray -xa
# Reconfigure initramfs
sudo update-initramfs -u
简而言之,我需要帮助来挑选这些命令的子集(或者也许我可以做一些更简单的事情)。我最好的猜测是这样的:它是否像下面这样简单?:
# Create RAID 5
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdd1 /dev/sde1
# Mount the RAID (dont forget to modify fstab)
sudo mkdir /media/raid
sudo chown username:username /media/raid
sudo mount /dev/md0 /media/raid
echo "/dev/md0 /media/raid ext4 defaults 1 2" >> /etc/fstab
或者这样做不会起作用或者会毁掉我的数据?
答案1
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdd1 /dev/sde1
如果你这样做,你的团队就会死掉,因为一个全新的超级块被写入。不幸的是,你不能在第 5 级使用“--build”。
你应该检查突袭开始时到底发生了什么,只需使用
mdadm --assamble --scan
正常情况下,“mdadm --assmeble --scan”会自动组装你的 raidset 并创建要挂载的设备(通常是 /dev/md0)。
如果此步骤失败,则很难从您的描述中判断原因。以下命令的输出可能会有所帮助:
mdadm --examine --scan blkid cat /proc/mdstat