我的服务器的RAIDconfiguration中的一个硬盘坏了,所以我把它从arrays中取出,让数据中心热插拔它。 他们已经这样做了,但现在新驱动器是/dev/sdc而不是/dev/sda 。 我怀疑 – 纠正我,如果我错了 – 如果我重新启动服务器,它将再次/dev/sda ,所以我犹豫要将它添加回数组作为/dev/sdc因为我不想为自己陷入下一次重启的陷阱。 如果我不需要(如果我确实需要的话,对我来说太糟糕了),我会尽快不重启服务器。
有没有办法可以将设备名称从/dev/sdc更改为/dev/sda而无需重新启动?
这是在Ubuntu 10.04 LTS上。 这是一个mdarrays(“Linux软件RAID”),目前其中一个设备(有几个)看起来像这样(“退化”,因为我已经从它删除旧的/dev/sda ):
#mdadm --detail / dev / md0
的/ dev / md0的:
版本:00.90.03
创build时间:Sun 10月11日21:07:54 2009
团队副本:raid1
数组大小:97536(95.27 MiB 99.88 MB)
二手开发大小:97536(95.27 MiB 99.88 MB)
RAID设备:2
设备总数:1
优先轻微:0
持久性:超级块是持久的
更新时间:2011年6月30日星期四09:31:16
状态:干净,退化
有源器件:1
工作设备:1
失败的设备:0
备用设备:0
UUID:496be7a5:ab9177ed:7792c71e:7dc17aa4
事件:0.112
数量主要次要RaidDevice状态
0 8 17 0活动同步/ dev / sdb1
1 0 0 1删除
谢谢,
更新 :通过内核md文档阅读,我怀疑,如果名称更改重新启动,这将无所谓。 (好的devise,那。)这是为什么:
引导时间自动检测RAIDarrays
当md被编译到内核中(而不是作为模块)时,0xfdtypes的分区被扫描并自动组装成RAIDarrays。 这个自动检测可以用内核参数“raid = noautodetect”来抑制。 从内核2.6.9开始,只有具有types0超级块的驱动器才能被自动检测并在引导时运行。
内核参数“raid = partitionable”(或“raid = part”)意味着所有自动检测的数组都被组装为可分区的。
我有编译进内核的我没有将mdmd编译到内核中,但是我的安装程序将执行与上述相同的操作,因为它是自动加载mdadm ,而mdadm.conf则设置为扫描所有分区超级块像内核一样:
#默认情况下,扫描MD超级块的所有分区(/ proc /分区)。 #或者,指定要扫描的设备,如果需要,使用通配符。 DEVICE分区
(是的,我已经检查过,我正在使用一个超级块 – md可以运行没有一个,但我没有这样做。)所以我现在重build数组,并将做重启,看看会发生什么,但我相当有信心arrays不会在意。
更新 :是的,工作了。 因为我的mdadm.conf被设置为扫描分区(因为内核会,如果我有md编译),而不是使用特定的设备名称,没有问题。 我将/dev/sdc的分区添加到数组中,重新启动,然后重新启动服务器(只是为了知道答案 – 我不必这样做,我只是想确保在下次启动时就可以) 。 当它恢复时,arrays非常高兴,新设备的名称是/dev/sda 。
我会删除这个问题,因为虽然上面解决了我的问题,但它不回答问题(如果是这样,我会把它作为答案并接受它)。 但是下面有一个答案(这实际上是一个评论),所以我不能删除它。 也许有人会来回答我实际问到的问题(关于重新命名设备而不重新启动),这将是有趣的。 🙂
什么arrays? 如果它正在扫描UID,那么它是sda还是sdc并不重要
那么…如果我没有记错scsi驱动器,您可以发送“scsi remove-single-device”到/ proc / scsi / scsi,然后用“scsi add-single-device”读取设备,但是我从来没有尝试过它并不知道确切的语法。