热插拔驱动器有新的名字,我可以改变它的dynamic?

我的服务器的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”)意味着所有自动检测的数组都被组装为可分区的。

我有编译进内核的md我没有将md编译到内核中,但是我的安装程序将执行与上述相同的操作,因为它是自动加载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”读取设备,但是我从来没有尝试过它并不知道确切的语法。