这是 Ubuntu 服务器 11.10。
/dev/sdb 未安装(见下面的输出),并且我看不到任何进程使用它。它也不用于交换。这是服务器中的第二个 IDE 驱动器,连接到辅助 IDE 并在硬件 raid 中设置为阵列 2。
我无法安装该驱动器,因为我收到投诉,它可能已被使用。我运行了 fdisk,删除了所有以前的分区并创建了一个主分区。
root@sargent:/home/harel# fdisk -l /dev/sdb
Disk /dev/sdb: 122.9 GB, 122942324736 bytes
226 heads, 63 sectors/track, 16864 cylinders, total 240121728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00083711
Device Boot Start End Blocks Id System
/dev/sdb1 2048 240121727 120059840 83 Linux
root@sargent:/home/harel# mkfs -t ext4 /dev/sdb
mke2fs 1.41.14 (22-Dec-2010)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
/dev/sdb is apparently in use by the system; will not make a filesystem here!
root@sargent:/home/harel# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 2619388 0 -1
root@sargent:/home/harel# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
答案1
再次检查您的分区,但不指定 /dev/sda:
# fdisk -l
然后,如果您在输出中找到类似/dev/md0
,- 的内容,则表示您已经获得了 sw 阵列,并且您尝试格式化的磁盘包含该阵列的元数据。
在这种情况下:
# umount /dev/md0
# mdadm --stop /dev/md0
清除磁盘的超级块:
# mdadm --zero-superblock /dev/sdb
移除数组
# mdadm --remove /dev/md0
不,您可以使用您的驱动器。
答案2
/dev/sdb
正在使用,因为上面有操作系统知道的分区。如果您想在其上创建文件系统(这是一个坏主意,因为很少这样做,这会让管理员感到困惑,并且会使任何类型的拆分或调整大小变得困难),请先使用 删除现有分区fdisk
。如果您想在唯一的分区上创建文件系统/dev/sdb1
(这是您应该做的,因为直接使用磁盘没有任何好处),然后说出您的意思:mkfs /dev/sdb1
。
答案3
您之所以收到此错误消息,是因为/dev/sdb
有一个分区(即/dev/sdb1
),并且 mkfs 调用也会覆盖您的分区表的全部或部分。在最坏的情况下,您的文件系统将无法使用。或者您“只是”丢失了您可能仍然需要的分区表。由于分区设备文件和实际的磁盘分区表应该讲述相同的故事,因此可以说它们正在被内核“使用”。
因此,简单的规则是:如果您想在整个磁盘设备上创建文件系统,请确保之前删除所有分区。例如:
# ls /dev/sdb*
/dev/sdb /dev/sdb1
# sfdisk --delete /dev/sdb
# sfdisk --list /dev/sdb
# ls /dev/sdb*
/dev/sdb
通常,分区工具会通知内核更新其分区设备文件。但有时(例如对于环回设备),可能需要明确删除它们(在删除分区表后),例如通过partx -dv mydev
and/或kpartx -dv mydev
。
请注意,先前的命令kpartx -av mydev
可能会将分区设备创建为/dev/mapper/mydev*
而不是/dev/mydev*
。当它们存在时,mkfs 会以相同的方式发出抱怨。
答案4
就我而言sudo umount /dev/sdb
,有效。