在linux下的3ware控制器下将2个磁盘(raid 1)replace成更大的一对

raid-1拓扑结构中有3个具有2个2TB磁盘的3ware 9650se。

我最近用两个更大的(3TB)的磁盘逐一replace了磁盘。 整个移民进展顺利。 我现在面临的问题是,我不知道为了让系统知道这个驱动器的大小增加了,我还需要做些什么。

一些信息:

root@samothraki:~# tw_cli /c0 show all /c0 Model = 9650SE-4LPML /c0 Firmware Version = FE9X 4.10.00.024 /c0 Driver Version = 2.26.02.014 /c0 Bios Version = BE9X 4.08.00.004 /c0 Boot Loader Version = BL9X 3.08.00.001 .... Unit UnitType Status %RCmpl %V/I/M Stripe Size(GB) Cache AVrfy ------------------------------------------------------------------------------ u0 RAID-1 OK - - - 139.688 Ri ON u1 RAID-1 OK - - - **1862.63** Ri ON VPort Status Unit Size Type Phy Encl-Slot Model ------------------------------------------------------------------------------ p0 OK u0 139.73 GB SATA 0 - WDC WD1500HLFS-01G6 p1 OK u0 139.73 GB SATA 1 - WDC WD1500HLFS-01G6 p2 OK u1 **2.73 TB** SATA 2 - WDC WD30EFRX-68EUZN0 p3 OK u1 **2.73 TB** SATA 3 - WDC WD30EFRX-68EUZN0 

请注意,磁盘p2p3被正确识别为3TB,但raid1arraysu1仍然可以看到2TBarrays。

遵循LSI 3ware 9650se 10.2代码集指南(注意:代码集9.5.3用户指南包含完全相同的过程)。

我三重sync我的数据,并umount RAIDarraysu1 。 接下来,我使用以下命令从命令行删除RAIDarrays:

 tw_cli /c0/u1 remove 

最后我重新扫描控制器再次find数组:

 tw_cli /c0 rescan 

不幸的是,新的u1arrays仍然确定了2TB磁盘。

什么可能是错的?

一些额外的信息。 u1arrays对应于dev/sdb/ ,依次对应于较大LVM磁盘的物理卷。 现在,我更换了两个驱动器,看起来分区表是空的。 然而,LVM磁盘工作正常。 这是正常的吗?

 root@samothraki:~# fdisk -l /dev/sdb Disk /dev/sdb: 2000.0 GB, 1999988850688 bytes 255 heads, 63 sectors/track, 243151 cylinders, total 3906228224 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes root@samothraki:~# 

在增加OS内的文件系统之前,您需要更新u1大小。 在3ware控制器通知之前,后者不会“看见”新的尺寸。

3ware中的单位容量扩展被称为迁移。 我确定它适用于RAID5和RAID6,并没有尝试使用RAID1。 以下是运行迁移命令的示例:

 # tw_cli /c0/u1 migrate type=raid1 disk=p2-p3 

当这完成时, fdisk -l /dev/sdb应该产生3TB,而vgdisplay <VG name>会列出一些空的空间。 从那里你会增加VG大小,然后增加相应的LV,最后增加LV内的文件系统。

编辑:我觉得你运气不好 – 请参阅用户指南中的第129页。
您可以将您的RAID1迁移到不同的arraystypes。

这里有一个select(它有一定的风险,所以确保你的备份是好的):

  1. tw_cli /c0/u1 migrate type=single – 这会将你的u1单元拆分成两个单独的驱动器;
  2. tw_cli /c0/u1 migrate type=raid1 disk=2-3 – 这应该迁移您的单个单位回到RAID1与正确的大小

当然,还有其他方法可以解决这个问题,上面列出的方法是为了让您的数据始终保持在线状态。

好的,这个答案附加到grs's答案。 所以学分确实去了70%的答案。

笔记:

  • 如果这个答案适合你,现在获得一个备份。
  • 如果您拥有UPS,请立即将其连接到有问题的电脑上。
  • 以下程序是在Linux的DATA磁盘arrays上进行的。 它可能需要一些修改才能在OS /引导arrays上工作。
  • 下面的程序需要重新启动几次,我没有说明,因为我设法完成了几个星期的时间跨度,我曾经在很多场合尝试失败。 好东西,虽然电脑打开,我没有宕机,没有丢失数据(即我不需要依靠我的备份)。

总结情况:

  • 在3ware 9650se系统上无法从raid1迁移到raid1。
  • 不能拆分磁盘,并期望/ c0 / uX将自动更新其数组大小。
  • 您必须删除一个设备并重新创build它才能检测到较大的磁盘。

所以关键是一次删除一个驱动器,每次都重新创build一个新的arrays 。 总体:

  1. 拆分raid1数组。 这将生成2个磁盘arrays(在我的情况下是2TB)。

     tw_cli /c0/u1 migrate type=single 

    指向raid1 /u1的宝贵的/dev/sdX应该仍然存在(并且工作!)。 你也会得到一个新的单位/u2是基于镜子的第二个驱动器。

  2. 删除不再使用的镜像磁盘(在我的情况下,它属于一个新的单元/u2 ,重启后必须获得新的/dev/sdX文件描述符)。

     tw_cli /c0/u2 del 
  3. 用未使用的磁盘创build一个新的单元。 注:我从BIOS做了这一步,所以我不知道这是如何应该如下所述。 在BIOS中,我做了“创build单位”而不是“迁移”。 有人请validation这一点。

     tw_cli /c0/u2 migrate type=single disk=3 

    新的/u2单元应该“看”所有的3TB。

  4. 继续并将数据从2TB磁盘传输到3TB磁盘。

  5. 一旦新单元上的数据更新了所有对新的/ dev / sdX的引用。

  6. 剩下的2TB磁盘(现在应该是!)现在还没有使用,请继续操作并删除它。

     tw_cli /c0/u1 del 
  7. 用未使用的磁盘创build一个新的单元。

     tw_cli /c0/u1 migrate type=single disk=2 

    新的/u1单元现在也应该有3TB的空间。

  8. 最后,深吸一口气,将2个单磁盘合并到新的扩展raid1中

     tw_cli /c0/u2 migrate type=raid1 disk=2 

    /u1现在应该消失,单位/u2应该开始重build。

  9. 享受生活。 像,认真。

也许你的内核没有收到来自控制器的更新。

尝试通过键入来更新磁盘信息:

 partprobe /dev/sdb 

它将迫使内核重新读取分区表和磁盘属性。

另请尝试:

 hdparm -z /dev/sdb 

和/或:

 sfdisk -R /dev/sdb 

导致partprobe不总是工作…

这些只是添加到nass's 答案的一些笔记。 从这里回忆,所以这可能不是完全正确的,在这些步骤中有一些重新启动。

  • 步骤1-2:🗸

  • 第3步:从cli添加一个新的单元: tw_cli /c0 add type=single disk=3

  • 第四步:我用dd if=/dev/sdX of=/dev/sdY bs=64K克隆磁盘。 要确定哪些是正确的设备,在步骤3之前,我尝试安装一些设备(例如, sudo mount -t ntfs /dev/sda1 /mnt/a )并浏览内容以查看哪个是来自unit /c0/u1源设备。 (可能有更好的方法来确定这一点。)

    同样在步骤3之前,在ls /dev/sd*中注明哪个设备有一个现有的sdY1但没有sdY ,然后在步骤3再次检查了哪个sdY被创build了。 我还在步骤3之前/之后在每个设备上使用了sudo hdparm -I /dev/sdY来确认事情是否正确。 注意:重新启动可能会改变哪个设备是哪个设备,所以请避免在检查和dd之间进行。

  • 步骤5-6:🗸

  • 步骤7-8:从未使用的磁盘创build一个新的单元,然后迁移没有为我工作( Invalid disk错误或沿着这些线)。 相反,跳过第7步,直接进入第8步应该工作。

  • 第9步:会做。 谢谢您的帮助!

从我的经验中得到一些其他的说明:

  • 我使用了一个Knoppix Live CD来完成大部分的工作。 要安装tw-cli:
    sudo nano /etc/apt/sources.list
    添加deb http://hwraid.le-vert.net/ubuntu precise main在顶部。
    sudo apt-get update
    sudo apt-get install tw-cli 3dm2

  • 我是在Windows安装的引导驱动器上做这个,从2TB的驱动器到4TB的驱动器。 有一件事我开始之前忘记检查是磁盘是MBR还是GPT。 事实certificate,这是MBR,这意味着我不能访问驱动器上的大部分额外空间,而无需转换为GPT。