为什么我无法卸载 /home?

为什么我无法卸载 /home?

我正在尝试在我的 Linux 系统上创建一个新分区,我的目的是占用/home文件系统的一小部分并更改类型以进行实验。我在虚拟盒中使用 OpenSuse 12.1。

gparted显示我有以下分区:

Partition   File System MountPoint   Size          Used
********************************************************
/dev/sda1   linux-swap               744.00MiB       ---
/dev/sda2   ext4        /             10.35GiB    5.16GiB
unallocated                            1.00MiB       ---
/dev/sda3   ext4        /home         28.92GiB   11.51GiB
unallocated                            1.00MiB       ---

我已登录root并且我的 cwd 是/,当我尝试时,umount /home我得到:

umount:/home:设备正忙。(在某些情况下,lsof(8) 或 fuser(1) 可以找到有关使用该设备的进程的有用信息)

当我运行时,fuser -m /dev/sda3我得到了一个大小合适的列表: 1 303 311 594 649 672 692 696 700 738 754 786...

运行ps -e我可以找到这些进程:

PID    TTY      TIME  CMD
1      ?    00:00:00  systemd
303    ?    00:00:00  systemd-stdout-
311    ?    00:00:00  udevd
594    ?    00:00:00  systemd-logind
649    ?    00:00:00  systemd-logind
672    ?    00:00:00  avahi-daemon
692    ?    00:00:00  acpid
700    ?    00:00:00  haveged
...

我正在想办法解决该怎么做。我想我可以“强制” umount,但这似乎是个坏主意。我可以终止所有这些进程,然后执行卸载,但我不确定这是否可行。

我还有什么其他选择?我应该如何卸载/home驱动器?

答案1

您应该使用 Linux CD 启动救援会话,或者使用 降低到较低的运行级别init。登录后卸载 $HOME 并不是一个好主意。

root如果您以 身份登录(实际登录,而不是su或) ,您可能也可以这样做sudo。这样/home就不需要该分区了,您将能够卸载它。您仍然必须确保没有人访问它(请参阅下一段)并手动卸载它。

最后,一个有用的工具是lsof /dev/sda3,它将列出当前正在访问该分区的进程。要终止列出的所有进程lsof(请注意,这可能会使系统崩溃,具体取决于进程,但如果发生这种情况,重新启动后应该会没事),请执行以下操作:

kill `lsof /dev/sda3 | awk '{print $2}'`

答案2

您必须确保当前没有用户登录才能卸载主分区。为此,您可以使用实时发行版执行该操作,也可以尝试以控制台模式登录到您的操作系统并直接以 身份登录root

如果你想尝试第二种选择,你可能会发现这个问题有用。

答案3

确保注销与虚拟机的所有 Vsphere 客户端会话。标准版和基于 Web 版均是如此。然后使用 SSH 以 root 身份登录,您就应该能够卸载该分区。

相关内容