从现有磁盘重建 RAID1,然后添加另一个磁盘

从现有磁盘重建 RAID1,然后添加另一个磁盘

这个问题是从解决另一个问题衍生出来的,你可以在上面看到这个线程

简而言之,我的专用服务器有一个带有 2x3TB HDD 的 RAID1 阵列。一周前,其中一个失败了。拥有服务器的公司已经更换了它,所以现在我有一个包含所有数据的良好驱动器,以及一个完全空的新驱动器。

我不知道如何用我现有的资源重建 RAID。

此信息可能有用(我知道现在没有 RAID):

root@rescue /dev # lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0   2.7T  0 disk
sdb      8:16   0   2.7T  0 disk
├─sdb1   8:17   0     1M  0 part
├─sdb2   8:18   0   127M  0 part
├─sdb3   8:19   0   200M  0 part
├─sdb4   8:20   0   2.7T  0 part
└─sdb5   8:21   0 455.5K  0 part
loop0    7:0    0   1.5G  1 loop
root@rescue /dev # cat /proc/mdstat
Personalities : [raid1]
unused devices: <none>

更新1 快速信息:

   CPU1: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz (Cores 8)
   Memory:  15974 MB
   Disk /dev/sda: 3000 GB (=> 2794 GiB) doesn't contain a valid partition table
   Disk /dev/sdb: 3000 GB (=> 2794 GiB)
   Total capacity 5589 GiB with 2 Disks

更新2:

正如 Trinue 所建议的:

root@rescue ~ # lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor Family DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 1 (rev b5)
00:1c.5 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 6 (rev b5)
00:1c.6 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset Family PCI Express Root Port 7 (rev b5)
00:1c.7 PCI bridge: Intel Corporation 82801 PCI Bridge (rev b5)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation H67 Express Chipset Family LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family SMBus Controller (rev 05)
03:00.0 USB controller: ASMedia Technology Inc. ASM1042 SuperSpeed USB Host Controller
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
05:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 01)

更新3:

正如 @Koko 所建议的,我尝试挂载 4 个分区,但其中 3 个出现错误。难道这个盘也坏了?

root@rescue / # mount -o ro /dev/sdb1 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # mount -o ro /dev/sdb4 /mnt/disk
ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Failed to calculate free MFT records: Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.
root@rescue / # mount -o ro /dev/sdb2 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # mount -o ro /dev/sdb3 /mnt/disk
root@rescue / # cd /mnt/disk
root@rescue /mnt/disk # dir
EFI

更新4:

根据 Michael Martinez 和 Koko 的建议,我尝试将数据从 sdb 复制到 sda,但出现以下错误:

root@rescue /mnt/disk # dd if=/dev/sdb of=/dev/sda
dd: reading `/dev/sdb': Input/output error
6619712+0 records in
6619712+0 records out
3389292544 bytes (3.4 GB) copied, 67.7475 s, 50.0 MB/s

更新5:

这些是服务器所有者提供的说明:http://wiki.hetzner.de/index.php/Festplattenaustausch_im_Software-RAID/en用于更换其中一台服务器中的 HDD。但是,您会注意到我没有他们提供的示例中的 raid 或分区。

更新6:

赫茨纳已经回答了我:“由于您尚未订购硬件 RAID 控制器,因此它具有软件 RAID。”

更新7:

root@rescue / # mount /dev/sda1 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # mount /dev/sda2 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # mount /dev/sda3 /mnt/disk
root@rescue / # mount /dev/sda4 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # mount /dev/sda5 /mnt/disk
mount: you must specify the filesystem type
root@rescue / # cd /mnt/disk
root@rescue /mnt/disk # dir
EFI

更新8:

我应该指出,在运行 mount 命令之前,我ddsdb 进入 sda 并开始使用以下命令创建一个新阵列:

# mdadm --create root --level=1 --raid-devices=2 missing /dev/sdb1  
# mdadm --create swap --level=1 --raid-devices=2 missing /dev/sdb2

root@rescue / # mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=8176304k,nr_inodes=2044076,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
213.133.99.101:/nfs on /root/.oldroot/nfs type nfs (ro,noatime,vers=3,rsize=8192,wsize=8192,namlen=255,acregmin=600,acregmax=600,acdirmin=600,acdirmax=600,hard,nocto,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=213.133.99.101,mountvers=3,mountproto=tcp,local_lock=all,addr=213.133.99.101)
aufs on / type aufs (rw,relatime,si=1848aabe5590850f)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=1635764k,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3271520k)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)

更新9:

当服务器第一次拒绝启动时,我要求客户服务手动重启。他们给我的答案是:

尊敬的客户,我们已重新启动您的服务器,但似乎有一个硬盘出现故障。如果您愿意,我们可以更换它们,为此请向我们确认该驱动器上的数据丢失以及大约 15 分钟的停机时间。您的服务器现在位于救援系统中:

当我立即访问机器人网站时,我可以管理服务器并搜索有关救援系统的信息,这是我发现的:

激活救援系统后,将在我们的 DHCP 服务器上创建一个配置文件。下次重新启动时,您的服务器将从网络启动,并且将从我们的 TFTP 服务器加载最小的操作系统。然后您就可以根据需要使用救援系统。救援系统的命令将持续 60 分钟。如果您随后重新启动服务器,通常的系统将从硬盘启动。请访问我们的维基以获取更多信息

Rescue 系统是 64 位 Debian。

更新10

root@rescue ~/.oldroot/nfs # ls /root/.oldroot/nfs
bash_aliases                rescue32-wheezy-v006.ext2
check                       rescue32-wheezy-v007.ext2
copy-vnode-lvs-to           rescue32-wheezy-v008.ext2
copy-vnode-lvs-to.bak       rescue32-wheezy-v009.ext2
esxi                        rescue64-lenny-v004.ext2
firmware_update             rescue64-squeeze-v011.ext2
freebsd                     rescue64-squeeze-v012.ext2
functions.sh                rescue64-squeeze-v013.ext2
images                      rescue64-squeeze-v014.ext2
images.old                  rescue64-squeeze-v015.ext2
install                     rescue64-squeeze-v016.ext2
ipmi                        rescue64-test.ext2
iso                         rescue64-wheezy-v000.ext2
knoppix                     rescue64-wheezy-v001.ext2
lost+found                  rescue64-wheezy-v002.ext2
opensolaris                 rescue64-wheezy-v003.ext2
raid_ctrl                   rescue64-wheezy-v004.ext2
README                      rescue64-wheezy-v005.ext2
rescue32-lenny-v004.ext2    rescue64-wheezy-v006.ext2
rescue32-squeeze-v011.ext2  rescue64-wheezy-v007.ext2
rescue32-squeeze-v012.ext2  rescue64-wheezy-v008.ext2
rescue32-squeeze-v013.ext2  rescue64-wheezy-v009.ext2
rescue32-squeeze-v014.ext2  shutdown-h
rescue32-squeeze-v015.ext2  shutdown-h-now
rescue32-squeeze-v016.ext2  tightvnc-vkvm.tar.gz
rescue32-test.ext2          vkvm64-squeeze-v001.ext2
rescue32-wheezy-v000.ext2   vkvm64-squeeze-v002.ext2
rescue32-wheezy-v002.ext2   vkvm64-test.ext2
rescue32-wheezy-v003.ext2   vkvm64-v001.ext2
rescue32-wheezy-v004.ext2   vkvm64-wheezy-overlay.ext2
rescue32-wheezy-v005.ext2   vkvm64-wheezy-overlay-v001.ext2

更新11:

root@rescue ~ # fdisk -l /dev/sdb

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
256 heads, 63 sectors/track, 363376 cylinders, total 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x8ab49420

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

更新12:

root@rescue ~ # parted -l
Error: The backup GPT table is corrupt, but the primary appears OK, so that will
be used.
OK/Cancel? OK
Model: ATA ST3000DM001-9YN1 (scsi)
Disk /dev/sda: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  1066kB  1049kB               LDM metadata partition
 2      1066kB  134MB   133MB                Microsoft reserved partition  msftres
 3      135MB   345MB   210MB   fat16        EFI system partition          boot
 4      345MB   3001GB  3000GB  ntfs         LDM data partition
 5      3001GB  3001GB  466kB                LDM data partition


Model: ATA ST3000DM001-9YN1 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  1066kB  1049kB               LDM metadata partition
 2      1066kB  134MB   133MB                Microsoft reserved partition  msftres
 3      135MB   345MB   210MB   fat16        EFI system partition          boot
 4      345MB   3001GB  3000GB  ntfs         LDM data partition
 5      3001GB  3001GB  466kB                LDM data partition


Model: Linux Software RAID Array (md)
Disk /dev/md126: 133MB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End    Size   File system     Flags
 1      0.00B  133MB  133MB  linux-swap(v1)


Model: Linux Software RAID Array (md)
Disk /dev/md127: 983kB
Sector size (logical/physical): 512B/4096B
Partition Table: loop

Number  Start  End    Size   File system  Flags
 1      0.00B  983kB  983kB  ext4

答案1

你说你已经和 Hetzner 谈过,他说它有软件 RAID。问题是,事实并非如此。你cat /proc/mdstat说的是这样的

Personalities : [raid1]

unused devices: <none>

这意味着没有软件 RAID。如果你有一个损坏的软件 RAID,它会看起来像这样

Personalities : [raid1] 
md0 : active raid1 sdb1[1] (F) sda1[0]
      1020032 blocks [2/2] [_U]

md1 : active raid1 sda2[2] sdb2[1] (F)
      975739772 blocks super 1.1 [2/2] [_U]
      bitmap: 3/8 pages [12KB], 65536KB chunk

unused devices: <none>

我从我的服务器上得到的,所以一些细节对你来说会有所不同,我根据上次硬盘故障时的笔记重建了它,所以一些细节可能是错误的,但重要的是

  1. [_U](这意味着其中一面镜子坏了;如果一切顺利,它会说[UU]),并且
  2. (F)(它告诉您哪一半发生了故障,在这种情况下,它是两种情况下的分区/dev/sdb)。

您链接到的他们自己的说明显示了非常相似的内容。

如果您看到了这一点,将新硬盘插入现有阵列将是一个简单的问题,只需对新磁盘进行分区并使用mdadm将分区添加到镜像即可。但由于您当前拥有未进行 RAID 的系统,因此我们无法执行此操作。

我会问 Hetzner 为什么它没有显示软件 RAID 的迹象,参考他们自己的文档。可能他们必须删除 MD RAID 参考才能使系统完全启动,但如果是这种情况,那么他们这样做就搞砸了您可能需要修复 RAID 的任何能力。

你说你是“Linux 和硬件相关内容的完全新手“。老实说,如果是这样,那么你就陷入了困境。我会尽快寻求专业帮助,并为系统备份期间的停机做好准备,然后完全恢复到一个经过彻底重建和 RAID 化的机箱上。

答案2

您似乎遗漏了几行cat /proc/mdstat。知道这些是什么会很有帮助。将新磁盘添加到现有软件 raid 阵列:

mdadm --add RAID_DEV NEW_DISK

前任:mdadm --add /dev/md0 /dev/sdd

您需要了解您的 raid 设备,有时可以在dmesg输出中找到该设备:

# dmesg | grep md [7563017.386737] md: data-check of RAID array md0 [7563017.386747] md: minimum _guaranteed_ speed: 1000 KB/sec/disk.

如果阵列处于活动/降级状态,添加新磁盘将自动启动重建过程(可以使用 进行监控/proc/mdstat)。根据您的 Linux 发行版,您可能还有一个/etc/mdadm/mdadm.conf文件可以显示有关阵列的更多信息。

相关内容