声明:笔者对参考此方法扩展/usr的网友,不负任何责任!请谨慎操作!

笔者的虚拟机软件为VMware Workstation 17 Pro 17.5.1 build-23298084

linux版本为debian GNU/Linux 12

如果你的host主机还有较为充分的磁盘空间,请继续阅读。如果host剩余磁盘空间很少,那请尝试其他方法,此方法不适用。其他分区的拓展也可以参考此方法。

故事:之前在安装虚拟机的时候没有特别分区,今天突然发现/usr目录使用率达到94%!仅仅剩余600多MB的空间。这让笔者感到非常不安,因为笔者开发过程中需要使用较多的工具,基本都安装在/usr/bin,/usr/local/bin下。如果对此问题不管不顾,势必有一天会导致没有足够的空间安装新的软件。笔者通过查阅国内外方法,发现大多都非常复杂,并且鲜有其他开发者复现,所以笔者不敢轻易尝试,毕竟数据无价!笔者可不想从头再安装虚拟机,时间成本太高。

2024/5/30 笔者之后按照此方法又扩展了/var分区。

笔者解决方案如下:

首先,在你的虚拟机软件中拓展磁盘空间,这一步网上教程很多,笔者不再赘述。
下面是在虚拟机中的操作。
以下所有指令都在root权限下执行

  1. 创建挂载点:首先,你需要创建一个用于挂载新分区的目录。可以在 / 目录下创建一个新的目录,例如 /mnt/usr_new

    mkdir /mnt/usr_new
    
  2. 格式化未分配的分区:使用适当的文件系统格式(例如ext4)对未分配的分区进行格式化。假设未分配的分区为 /dev/sdXN,笔者的是/dev/sda3。你可以使用以下命令格式化它:

    mkfs.ext4 /dev/sdXN
    

注意:
如果在虚拟机软件里拓展了分区,但是进入linux后通过sudo fdisk -l看不到空闲的分区,请使用

sudo fdisk /dev/sdX
输入 n
按照提示一步步输入选项

之后就可以看到空闲分区了。进入下一步。

  1. 挂载未分配的分区:将未分配的分区挂载到新创建的挂载点上:

    mount /dev/sdXN /mnt/usr_new
    
  2. 复制 /usr 下的文件:使用 rsync 命令将 /usr 下的所有文件复制到新的挂载点下:(耐心等待~)

    rsync -av /usr/ /mnt/usr_new
    
  3. 备份原 /usr 目录:为了安全起见,在进行下一步之前,你可能希望备份原 /usr 目录。你可以使用 tar 命令将其打包:(最好备份一下啦~)

    tar czvf 备份地址.tar.gz /usr
    
  4. 重新挂载 /usr 目录:卸载原 /usr 目录并重新挂载新的 /usr 目录:

    umount /usr
    mount /dev/sdXN /usr
    

    注:
    也许你需要强制umount,请使用

    umount -l /home 强行解除挂载
    
  5. 更新 /etc/fstab 文件:为了确保系统重启后新的挂载点仍然生效,你需要更新 /etc/fstab 文件。将新的挂载点添加到文件末尾,确保在启动时自动挂载:

    /dev/sdXN /usr ext4 defaults 0 2
    
  6. 重新启动系统:最后,重新启动系统以应用所有更改。

红色表示原来的/usr目录,绿色表示当前的/usr目录,并且软件都能正常使用,完全满足笔者的需求。
在这里插入图片描述
在这里插入图片描述
完成这些步骤后,你的系统应该会在 /usr 目录下挂载新的分区,并且原 /usr 目录下的所有文件都会保留。请确保在执行这些操作之前进行适当的备份,并谨慎操作以避免数据丢失。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐