![为什么我的 HDD 分区是字符特殊设备?](https://linux22.com/image/651042/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20HDD%20%E5%88%86%E5%8C%BA%E6%98%AF%E5%AD%97%E7%AC%A6%E7%89%B9%E6%AE%8A%E8%AE%BE%E5%A4%87%EF%BC%9F.png)
我有一堆旧的 1T 磁盘,上面有 mdadm 阵列。它们已经停用一段时间了,但昨天我将它们插入运行最新 Debian Jessie 的服务器。
最终,我重新将阵列组合起来,但有两个驱动器拒绝重新添加。查看这些驱动器,似乎我以某种方式将设备添加到了阵列而不是(Linux RAID 自动检测)分区(sdz 而不是 sdz1) - 我得到的输出似乎是正确的mdadm -E /dev/sdz
,但如果我运行mdadm -E /dev/sdz1
,我得到的是mdadm: cannot open /dev/sdz1: No such device or address
。
进一步研究发现,这两个驱动器的分区似乎是字符特殊设备,而不是块特殊设备:
root@comp:~# file /dev/sda1 # good drive
/dev/sda1: block special (8/225)
root@comp:~# file /dev/sdz1 # bad drive
/dev/sdz1: character special (8/209)
即使使用 dd 将整个坏驱动器清零,并使用 fdisk 重新创建分区,它们仍然会以同样的方式恢复!这是怎么回事?
编辑:这是 ls 关于这些设备的说明:
root@comp:~# ls -l /dev/sdz*
brw-rw---- 1 root disk 65, 0 Feb 1 15:02 /dev/sdz
cr-------- 1 root root 65, 1 Jan 31 18:31 /dev/sdz1
E2:来自 /proc/partitions 的相关数字:
root@comp:~# cat /proc/partitions | egrep 'sdz|sda'
65 0 976762584 sdz
65 32 976762584 sda
65 33 976760832 sda1
我不明白为什么 sdz 分区没有出现在这里。
答案1
仅使用 删除 /dev/sdz1 (字符设备分区)rm /dev/sdz1
,然后调用partprobe /dev/sdz
会导致新分区正确显示。
我无法解释为什么最初会发生这种情况,但这个解决方案对我有用。