![在 CentOS 7.6 中尝试挂载 8TB 磁盘时出现“不是块特殊设备。”错误](https://linux22.com/image/1580146/%E5%9C%A8%20CentOS%207.6%20%E4%B8%AD%E5%B0%9D%E8%AF%95%E6%8C%82%E8%BD%BD%208TB%20%E7%A3%81%E7%9B%98%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9C%E4%B8%8D%E6%98%AF%E5%9D%97%E7%89%B9%E6%AE%8A%E8%AE%BE%E5%A4%87%E3%80%82%E2%80%9D%E9%94%99%E8%AF%AF.png)
我正在尝试将 8TB 外置硬盘格式化并安装为 ext4,但似乎无法正常工作。该硬盘是 Seagate 8TB 扩展台式机硬盘。型号为STEB8000402。
我可以使用 gdisk 创建分区:
sdc 8:32 0 7.3T 0 disk
└─sdc1 8:33 0 7.3T 0 part
但是当我创建文件系统时,我收到一个奇怪的错误,提示“/dev/sdc1 不是块特殊设备。”但它似乎完成了:
# mke2fs -t ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdc1 is not a block special device.
Proceed anyway? (y,n) y
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
246512 inodes, 984801 blocks
49240 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1008730112
31 block groups
32768 blocks per group, 32768 fragments per group
7952 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
但后来,挂载时它似乎不起作用,而是挂载了/dev/loop0
?我甚至不确定那是什么,文件系统的大小不对。
/dev/loop0 4.0G 16M 3.7G 1% /mnt/test
我读到这显然是某种新型驱动器,其扇区不在正常位置?如有任何帮助,我将不胜感激。
答案1
您的设备可能已分区并具有文件系统。您可能需要先删除所有内容。
fdisk
在磁盘本身上使用,/dev/sdc
而不是在分区上 使用/dev/sdc1
:
sudo fdisk -cu /dev/sdc
如果有任何现有分区,请首先使用命令删除它们d
,最后w
写入分区表并退出。
重新发出fdisk -cu /dev/sdc
并再次使用n
以创建具有最大大小的新分区w
。
使用 检查一切是否正确fdisk -lu /dev/sdc
。
您最终可以格式化新的分区:
sudo mke2fs -t ext4 /dev/sdc1
或者:
sudo mkfs.ext4 /dev/sdc1
答案2
我猜你以某种方式在那里创建了一个常规文件(或者可能是指向该文件的符号链接)。检查一下。如果它是一个块设备,那么在输出中
ls -l /dev/sdc1
第一个字母是b
;另外
file /dev/sdc1
会说block special
。如果不是这种情况,请调查该对象到底是什么。它可能一开始就不应该在那里。请注意,安装常规文件使用循环设备,这适合您的情况。
如果对象确实是常规文件或符号链接,umount
则将其移除 ( rm
) 或移开 ( mv
)。请记住mke2fs
对文件进行操作,因此如果您已将任何重要数据放入文件系统,则这些数据位于文件中,而不是分区中。
要将 重新创建/dev/sdc1
为块设备,请调用sudo partprobe
。这假设 及其分区表没有问题/dev/sdc
。您还应该mke2fs
再次调用,因为之前的 甚至没有触及该分区mke2fs
。
存在常规文件的一个可能原因是写入映像文件时/dev/sdc1
没有确保目标存在(通常作为块设备)。此类操作不存在的目标创建一个常规文件。
如果问题再次出现(例如重启后、再次连接外部驱动器后),则意味着某些东西重新创建了该文件。这可能是由于某些编写不当的脚本假设它/dev/sdc1
始终存在。请注意,此类脚本可能会在驱动器连接时覆盖您的实际分区。希望根本没有脚本,整个问题都是由于上述一次性事故造成的。