我有一台 3ware 9650se,带有 2x 2TB 磁盘,采用 raid-1 拓扑。
我最近将磁盘逐个替换为 2 个更大的磁盘(3TB)。整个迁移过程非常顺利。现在的问题是,我不知道我还需要做什么才能让系统知道这个驱动器的大小增加了。
一些信息:
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
请注意,磁盘p2
被p3
正确识别为 3TB,但 raid1 阵列u1
仍然看到 2TB 阵列。
按照以下指南操作后LSI 3ware 9650se 10.2 代码集(注意:代码集 9.5.3 用户指南包含完全相同的程序)。
我sync
将数据和umount
RAID 阵列增加了三倍u1
。接下来,我使用以下命令从命令行删除 RAID 阵列:
tw_cli /c0/u1 remove
最后我重新扫描控制器以再次找到数组:
tw_cli /c0 rescan
不幸的是,新的u1
阵列仍然识别出 2TB 磁盘。
可能出了什么问题?
一些额外的信息。该u1
阵列对应于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:~#
答案1
您需要u1
在操作系统中增加文件系统之前更新大小。操作系统不会“看到”新大小,直到 3ware 控制器通知它。
3ware 中的单元容量扩展称为迁移。我确信它适用于 RAID5 和 6,但没有尝试过 RAID1。以下是要运行的迁移命令的示例:
# tw_cli /c0/u1 migrate type=raid1 disk=p2-p3
完成后fdisk -l /dev/sdb
应产生 3TB 并vgdisplay <VG name>
列出一些空空间。从那里您可以增加 VG 大小,然后增加相应的 LV,最后增加 LV 内的文件系统。
编辑:我觉得你运气不好 - 请参阅第 129 页用户指南.
您可以将 RAID1 迁移到不同的阵列类型。
这是一个替代方案(它有一定的风险,所以请确保您的备份良好):
tw_cli /c0/u1 migrate type=single
- 这会将您的设备拆分u1
成两个单独的驱动器;tw_cli /c0/u1 migrate type=raid1 disk=2-3
- 这应该将单个单元迁移回具有正确大小的 RAID1
当然,还有其他方法可以解决此问题,我上面列出的方法适用于您希望数据始终在线的情况。
答案2
好的,这个答案附加到grs's
答案中。因此,70%的答案都归于此。
笔记:
- 如果这个答案适合您,请立即获取备份。
- 如果您拥有 UPS,请立即将其连接到有问题的电脑上。
- 以下步骤是在 Linux 中的 DATA 磁盘阵列上执行的。可能需要进行一些修改才能在 OS/启动阵列上运行。
- 以下步骤需要多次重启,但我没有说明,因为我花了几周的时间才完成此过程,期间我尝试了无数次,但都失败了。不过,好在电脑开机时,我没有再停机,也没有丢失数据(即我不需要依赖备份)。
情况总结:
- 无法在 3ware 9650se 系统上从 raid1 迁移到 raid1。
- 无法分割磁盘并期望 /c0/uX 将自动更新其阵列大小。
- 您必须删除一个单元并重新创建它才能检测更大的磁盘。
因此,关键是一次删除一个驱动器并每次重新创建一个新阵列。 全面的:
拆分 raid1 阵列。这将生成 2 个具有旧磁盘大小的阵列(在我的情况下为 2TB)。
tw_cli /c0/u1 migrate type=single
/dev/sdX
指向 raid1 的precious/u1
应该仍然存在(并且工作!)。并且您还将获得一个/u2
基于镜像的第二个驱动器的新单元。删除不再使用的镜像磁盘(
/u2
在我的情况下它属于一个新单元,并且必须/dev/sdX
在重新启动后获取一个新的文件描述符)。tw_cli /c0/u2 del
使用未使用的磁盘创建一个新
single
单元。注意:我从 BIOS 执行此步骤,因此我不确定这是否应按照我下面所述的方式执行。在 BIOS 中,我执行的是“创建单元”而不是“迁移”。请有人验证这一点。tw_cli /c0/u2 migrate type=single disk=3
新
/u2
单位应该“看到”所有3TB。继续将数据从 2TB 磁盘传输到 3TB 磁盘。
一旦数据进入新单元,就更新所有对新 /dev/sdX 的引用。
剩下的 2TB 磁盘(应该!)现在未使用,因此继续将其删除。
tw_cli /c0/u1 del
single
使用未使用的磁盘创建一个新单元。tw_cli /c0/u1 migrate type=single disk=2
新
/u1
设备现在也应该有 3TB 的空间。最后,深吸一口气,将 2 个单独的磁盘合并到新的扩展 raid1
tw_cli /c0/u2 migrate type=raid1 disk=2
/u1
现在应该消失并且单位/u2
应该开始重建。享受生活。认真地享受。
答案3
也许您的内核没有收到来自控制器的更新。
尝试通过键入以下内容来更新磁盘信息:
partprobe /dev/sdb
它将强制内核重新读取分区表和磁盘属性。
也可以尝试:
hdparm -z /dev/sdb
和/或:
sfdisk -R /dev/sdb
因为 partprobe 并不总是有效......
答案4
这篇文章的要点是联系 LSI 支持以获取迁移脚本。
我很确定在 2 端口和 4 端口配置中我都有相同的控制器,当我想从 1 Gig Raid 1 更新到 2 Gig 时,我用 2 Gig 替换了其中一个磁盘,然后在重建后替换了另一个磁盘。
此时,我仍有一个 1 Gig Raid 1,但位于 2 Gig 磁盘上。然后,我将一些驱动器尺寸细节作为支持请求发送给 LSI,他们又向我发送了 (非常技术)脚本,该脚本在执行时为我完成迁移。
我始终不明白为什么没有 LSI 的支持就无法完成这次迁移,但最终结果还是不错。