解决方案

解决方案

我正在运行 Ubuntu 14.10 Server(无头)。

我有一组 USB 闪存驱动器,需要重新格式化才能在多个设备上使用。我已成功安装、格式化、将文件复制到以及卸载三个设备。安装第四个后,系统认为该驱动器的第一个分区已经安装;它以前从未插入到服务器中。我根本无法安装或卸载该分区。此时,我假设这是我一路上某个地方的错,但我无法让事情恢复正常。


设备

USB 驱动器将格式化为两个分区和一个空的 8MB 标头。该表是必需的,因为它们将用于专用设备。每个设备的大小大约为 2GB

USB Partition table (to-be): [-EMPTY 8MB-|-- >1.1GB FAT 16--|--751MB FAT16--]

USB 设备至少有一个 Ext4 或 Fat16 的预格式化分区。

情况

我已插入新的 USB 设备。尝试挂载设备失败:

$ sudo mount sdb1
  mount: can't find sdb1 in /etc/fstab
$ ls /media                   # Mounting a partition defaults to here
  <empty>
$ pmount sdb1
  Error: device /dev/sdb1 is already mounted to /media/sdb1
$ ls /media
  <empty>

df/dev/sdb1根本不显示

Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda2      944392620 35959148 860437980   5% /
none                   4        0         4   0% /sys/fs/cgroup
udev             8183068        4   8183064   1% /dev
tmpfs            1638852     5640   1633212   1% /run
none                5120        0      5120   0% /run/lock
none             8194244        0   8194244   0% /run/shm
none              102400        4    102396   1% /run/user
/dev/sda1         523248     3436    519812   1% /boot/efi

fdisk正确显示设备

Disk /dev/sdb: 1.9 GiB, 1993342976 bytes, 3893248 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
Disklabel type: dos
Disk identifier: 0x5651d77f

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1          2048 2353151 2351104  1.1G 83 Linux
/dev/sdb2       2353152 3893247 1540096  752M  6 FAT16

GParted将正确显示设备(大小、分区、表等),但显示sdb1已安装。我可以删除分区,格式化为ext4,但无法格式化为Fat16。

但是,sdb2通过挂载pmount并查看任何存在的文件。卸载、分区、擦除总是成功的。如果我插入其他设备(例如sdc),我可以毫无问题地进行任何更改。如果我交换这个设备,我sdc仍然sdb可以毫无问题地访问它。

我假设我搞砸了,没有sdb1在之前的设备上正确卸载,从而导致了这个问题。我还假设它mkfs.vfat也遇到了问题,因为mkfs.ext3,mkfs.ext4运行时不会出现错误。

有办法解决这个问题吗?我的(唯一)解决方案是重新启动系统吗?我希望避免这种情况,因为我们已经启动并运行了多个数据获取和数据托管服务。


解决方案

非常感谢史蒂夫对于他的简单解决方案。在我所有的搜索中,我没有碰巧遇到这个。

如果dffdisk -lumount -lpumount不起作用,那么您应该检查/etc/mtab下一步。该文件包含以下内容:

/dev/sda2 / ext4 rw,errors=remount-ro 0 0
proc /proc proc rw,nodev,noexec,nosuid 0 0
sysfs /sys sysfs rw,nodev,noexec,nosuid 0 0
none /sys/fs/cgroup tmpfs rw,uid=0,gid=0,mode=0755,size=1024 0 0
. . .
systemd /sys/fs/cgroup/systemd cgroup rw,nosuid,noexec,nodev,none,name=systemd 0 0
/dev/sdb1 /media/sdb1 ext4 rw,nodev,nosuid,noexec,errors=remount-ro,user 0 0

最后一行是问题的根源。只需将其删除即可解决所有问题。

在尝试此操作之前,请尝试使用其他指南/解决方案。我不知道如果其他服务正在积极尝试读/写/锁定此分区,这可能会对您的系统或设备产生任何影响。

答案1

尝试umount -f /media/sdb1umount -l /media/sdb1

如果所有其他方法都失败,您可以手动编辑/etc/mtab以删除有问题的安装条目。

相关内容