自从我从 Centos5 升级到 Centos6 后,出现了一个奇怪的问题。我有三个磁盘,前两个用作 RAID1,第三个是未列出的独立备份磁盘/etc/fstab
(它在需要时装载,然后卸载)。
我的问题:启动后,/dev/sdc
存在但不存在。此外,第一个分区的/dev/sdc1
链接也不存在。磁盘本身没有问题,如果我热拔出它并重新插入,看起来一切正常。/dev/disks
sdc
/dev/sdc1
我的问题:哪个子系统在启动过程中管理磁盘、分区等的自动发现(例如,创建了什么/dev/disks/by-label
)?如何配置它以扫描/dev/sdc
并创建所有相关文件和链接/dev
?
编辑:以下是 dmesg 输出的相关部分(唯一sdc
出现的地方)。它确实列出了sdc1
,但它不在 中/dev
!
sd 1:0:0:0:[sdb] 1953525168 512 字节逻辑块:(1.00 TB/931 GiB) sd 3:0:0:0:[sdc] 976773168 512 字节逻辑块:(500 GB/465 GiB) sd 1:0:0:0: [sdb] 写保护已关闭 sd 1:0:0:0:[sdb] 模式感知:00 3a 00 00 sd 1:0:0:0:[sdb] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA sd 3:0:0:0: [sdc] 写保护已关闭 sd 3:0:0:0:[sdc] 模式感知:00 3a 00 00 sd 3:0:0:0:[sdc] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA 数据库: sdc: sd 0:0:0:0:[sda] 1953525168 512 字节逻辑块:(1.00 TB/931 GiB) sd 0:0:0:0: [sda] 写保护已关闭 sd 0:0:0:0:[sda] 模式感知:00 3a 00 00 sd 0:0:0:0:[sda] 写入缓存:已启用,读取缓存:已启用,不支持 DPO 或 FUA sda: DMAR:[DMA 读取] 请求设备 [00:1e.0] 故障地址 361bc000 DMAR:[故障原因 06] 未设置 PTE 读访问权限 数据库1 数据库2 数据库3 sdc1 sda1 sd 1:0:0:0:[sdb] 连接的 SCSI 磁盘 sd 3:0:0:0:[sdc] 连接的 SCSI 磁盘 sda2 sda3 sd 0:0:0:0: [sda] 附加的 SCSI 磁盘
答案1
我终于找到了这个问题的原因。该磁盘已加入 Intel RAID 阵列,并且 Intel 的 RAID 签名在另一台计算机上重新分区和重新格式化后仍然存在:
mdadm -Evvv /dev/sdc
Magic : Intel Raid ISM Cfg Sig.
Version : 1.1.00
.................................................
[Archive Volume]:
UUID : xxxx
RAID Level : 1
Members : 2
Slots : [UU]
mdadm 确定该磁盘属于外部 RAID 阵列,甚至读取了英特尔的元数据:卷名、RAID 级别等。当然,所有这些数据都已过时,不再真实。
该磁盘被视为外部 RAID 的成员,这是该磁盘未在 /dev 中分配分区的原因。
怎么修
mdadm --zero-超级块 /dev/sdc
/dev/sdc
当然可以用自己的设备代替。应该对磁盘上已有的文件系统不会造成破坏,至少我的文件系统没有出现任何问题。RAID 超级块通常位于磁盘的最后扇区中。
这个故事的寓意
总是,总是在将磁盘从 RAID 中取出并在其他地方重新使用之前,请清理磁盘!互联网上充斥着有关将外部磁盘组装到实时阵列中并在此过程中损坏磁盘的故事。我很幸运,只遇到了这个非常小的问题。
通常将前几个和最后几个扇区清零就足够了。您应该在最初使用该磁盘的旧系统中执行此操作,或者在启动到救援 CD 时在其他地方执行此操作(如果仅使用软件 RAID!)。
答案2
我在 Debian Squeeze 和 VMware 磁盘上遇到了同样的问题,一个磁盘的分区根本不存在/dev
,但它们在 fdisk 和 dmesg 中可见。我已将udev
软件包从 164(在稳定版中找到)升级到 175(在测试版中找到),重启后一切都正常。