我正在尝试在我的 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 身份登录,您就应该能够卸载该分区。