Linux 将 /home 目录与 / 根目录磁盘合并

news2024/12/23 6:27:21

1. Linux 下的 /home 目录与 / 目录

一般情况下进入 Linux 系统下的 / 目录,会看到如下目录列表。

[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

可以看到其中包含 home 目录,home 目录下将会为每个用户创建一个属于自己的用户目录,也称为用户自己的 “家目录”。更多根目录的信息可查看笔者的这篇博客 《Linux文件系统目录结构详解》。

2. 系统分区情况

在安装 Linux 操作系统过程中,常常可能会将 /home 目录与 / 目录挂载到不同的磁盘或不同的分区中,就会造成两者空间并不能公用,即当 /home 目录存满时,根目录富于的磁盘空间不能给 /home 使用;同样的,当 /home 目录分配的磁盘较大时,而根目录则常常会因为安装太多软件导致磁盘占满,而这时看着使用率只有 20%~50%/home 目录则分外眼红。

请添加图片描述

为了解决这样的尴尬情况,那么就将 /home 目录和 / 根目录的空间合并起来就皆大欢喜啦。

3. 合并 /home 和 / 目录

  • (1) 查看当前磁盘分配情况
[root@localhost /]# df -hT
文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs   63G     0   63G    0% /dev
tmpfs               tmpfs      63G     0   63G    0% /dev/shm
tmpfs               tmpfs      63G   18M   63G    1% /run
tmpfs               tmpfs      63G     0   63G    0% /sys/fs/cgroup
/dev/mapper/cl-root xfs        70G  4.9G   66G    7% /
/dev/nvme0n1p2      xfs      1020M  256M  765M   26% /boot
/dev/mapper/cl-home xfs       379G  2.7G  376G    1% /home
/dev/nvme0n1p1      vfat      599M  7.3M  592M    2% /boot/efi
tmpfs               tmpfs      13G   56K   13G    1% /run/user/1000

这里需要注意的是,/home 目录的总空间大小,笔者这里的是 379 G

  • (2) 将当前 /home 目录备份,并删除 /home 分区
    进入 / 目录
[root@localhost /]# cd /

/home 目录备份

[root@localhost /]# tar -zcvf home.tar.gz /home

卸载 /home 目录

[root@localhost /]# umount /home

若提示 umount: /home: target is busy.,则说明有其他进程正在使用,确定主要程序已关闭的情况下还提示该信息,则执行下面步骤:

[root@localhost /]# fuser -m /dev/mapper/cl-home

该命令会打印出正在使用该磁盘的进程 ID,如下

/dev/dm-2:            2876m  2889c  2892c  2944c  2949cm  2983c  2988c  3042cm  3047c  3050c  3140cm  3226c  3230cm  3231cm  3233c  3235c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3317cm  3319c  3320c  3321c  3322cm  3329cm  3333cm  3335cm  3337c  3343cm  3346cm  3348cm  3349c  3352cm  3354cm  3359cm  3362cm  3365cm  3410cm  3418cm  3422cm  3423cm  3426c  3435cm  3476cm  3495c  3501c  3514cm  3531cm  3590c  4003cm  4041c  4051cm  4065c

然后从前往后逐个 kill 掉该进程 :

[root@localhost /]# kill -9 2876
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2889c  2892c  2944c  2949cm  2983c  2988c  3042cm  3047c  3050c  3140cm  3226c  3230cm  3231cm  3233c  3235c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3317cm  3319c  3320c  3321c  3322cm  3329cm  3333cm  3335cm  3337c  3343cm  3346cm  3348cm  3349c  3352cm  3354cm  3359cm  3362cm  3365cm  3410cm  3418cm  3422cm  3423cm  3426c  3435cm  3476cm  3495c  3501c  3514cm  3531cm  3590c  4003cm  4041c  4051cm  4065c  7826m
[root@localhost /]# kill -9 2889
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2892c  2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c
[root@localhost /]# kill -9 2889
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2892c  2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c
[root@localhost /]# kill -9 2892
[root@localhost /]# fuser -m /dev/mapper/cl-home
/dev/dm-2:            2944c  2983c  2988c  3042cm  3047c  3247c  3253cm  3257cm  3264cm  3274c  3289cm  3297c  3302c  3306c  3311c  3418cm  3435cm  3476cm  3501c  3514cm  3531cm  4041c  4051cm  4065c
[root@localhost /]# kill -9 2944
[root@localhost /]# fuser -m /dev/mapper/cl-home

基本上 kill 掉前几个(35 个)基本其它的也就都相继消失了。
然后再执行 umount home,就可以成功卸载 /home 目录的挂载了。

[root@localhost /]# umount /home

再将 /home 目录的磁盘分区移除:

[root@localhost /]# lvremove /dev/cl/home
Do you really want to remove active logical volume cl/home? [y/n]: y
  Logical volume "home" successfully removed.
  • (3) 扩展 / 根目录
    使用 lvextend 命令将 / 目录所在的物理分区扩容:
[root@localhost /]# lvextend -L +379G /dev/cl/root

[注]:这里的增加的容量应该不能超过之前 /home 挂载点的大小,一般选择全部分配过去。
执行 xfs_growfs 命令扩展 xfs

[root@localhost /]# xfs_growfs /dev/cl/root

4. 恢复 /home 目录原有内容

将之前打包备份的 /home 目录重新解压出来

[root@localhost /]# tar -zxvf home.tar.gz

这时候查看 home 目录已经恢复到原来的样子了

[root@localhost /]# ll home

5. 删除 /etc/fstab 中 /home 的启动挂载点

打开并修改 /etc/fstab 文件,将开机自动挂载的 /home 节点删除,注意这一步很关键,如若未删除,则会导致开机自动进入救援模式(emergency mode),不过也不是没有办法,在救援模式中,输入 root 密码,进入救援模式,再修改 /etc/fstab 文件保存退出也可以,但何必留此后患,自找麻烦呢。

[root@localhost ~]# vim /etc/fstab

home 挂载点注释或删除,保存并退出即可。

#
# /etc/fstab
# Created by anaconda on Fri Jan  1 04:35:40 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=bbcc2133-84d1-4b8c-aca4-064f18929e67 /boot                   xfs     defaults        0 0
UUID=699D-E50D          /boot/efi               vfat    umask=0077,shortname=winnt 0 2
#/dev/mapper/cl-home     /home                   xfs     defaults        0 0
/dev/mapper/cl-swap     none                    swap    defaults        0 0

6. 查看新的磁盘分配情况

再次查看磁盘分配和使用情况,就已经发现,没有了 /home 目录的占用,而在 / 目录下增加了 /home 原有的磁盘空间。

[root@localhost /]# df -hT
文件系统            类型      容量  已用  可用 已用% 挂载点
devtmpfs            devtmpfs   63G     0   63G    0% /dev
tmpfs               tmpfs      63G     0   63G    0% /dev/shm
tmpfs               tmpfs      63G   18M   63G    1% /run
tmpfs               tmpfs      63G     0   63G    0% /sys/fs/cgroup
/dev/mapper/cl-root xfs       448G  7.6G  441G    2% /
/dev/nvme0n1p2      xfs      1020M  256M  765M   26% /boot
/dev/nvme0n1p1      vfat      599M  7.3M  592M    2% /boot/efi
tmpfs               tmpfs      13G     0   13G    0% /run/user/0
tmpfs               tmpfs      13G     0   13G    0% /run/user/42

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/66360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot实现WebSocket

一、什么是websocket WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 二、新建SpringBoot工…

STM32读保护的解除和出现的原因,使用串口和ST-LINK Utility解除读保护

STM32读保护的解除和出现的原因,使用串口和ST-LINK Utility解除读保护STM32读保护读保护保护出现的现象出现的原因读保护解决方法1、重新下载CH340驱动2、FlyMcu串口下载软件接触读保护使用STM32 ST-LINK Utility软件解除读保护注意STM32读保护 读保护保护出现的现…

4-(1,2,2-三苯基乙烯基)苯甲醛;​CHO醛基偶联AIE材料

中文名 4-(1,2,2-三苯基乙烯基)苯甲醛 英文名 4-(1,2,2-triphenylvinyl)benzaldehyde 4-(1,2,2-三苯基乙烯基)苯甲醛物理化学性质 分子式 C27H20O 分子量 360.455 质量 360.151428 AIE聚集诱导发光材料的特点: 1.在固态下有强发光特性(粉末或高浓度&am…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇,继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器(C的编译器是g,用法选项基本一样)。 既然是编译器,我们就再来加点餐…… 链接其实分为两种类型:静态链接和动态链接&#xff0…

内切相减原理绘制CAD图形

CAD中的内切相减的原理你们知道是什么意思吗?这个就需要用CAD实际图形的绘制过程来理解了,这个图形就用到了这个,还用到了CAD直线、修剪、圆等命令共同绘制出来。 目标图形 操作步骤 1.使用CAD直线命令绘制一条长度30的垂直直线AC&#xff…

自定义 HandlerMethodArgumentResolver 怎么和默认HandlerMethodArgumentResolver进行隔离的?

工作中,想对一些参数进行非空默认值的操作。 DefaultValueIfNull("1000") 这个就是,如果为null,那么就默认值填1000。 操作起来。 1.自定义HandlerMethodArgumentResolver Component public class DefaultValueIfNullResolver…

seata-server-1.5.2的部署

使用的是nacos和mysql数据库,简单部署在Win10上,Linux上配置修改相同,启动命令不同。 找到 seata-server-1.5.2\seata\conf目录下的application.yml和application.example.yml 编辑 application.yml,原始版本如下: s…

RocketMq: Windows环境-单机部署和伪集群、集群部署

关于默认端口 broker的默认端口有3个,10911, 10912, 10909。 10911是remotingServer使用的监听端口,remotingServer主要处理以下三类消息: producer发送的消息 conumser在消费失败或者消费超时发送的消息 consumer拉取消息10912是主broker用于监听从broker请求…

制作路由器openwrt安装及配置

Openwrt软路由安装配置1、 Openwrt软路由设备信息&#xff1a; <1>登录信息&#xff1a; IP&#xff1a;10.4.1.1 账号&#xff1a;root<2>设备配置&#xff1a; 主机名 Openwrt 型号 ASUSTeK COMPUTER INC. Z9PA-U8 Series CPU 型号 Intel(R) Xeon(R) …

YOLO系列目标检测算法——PP-YOLO

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接…

爬虫之selenium

目录 selenium介绍 基本使用 selenium用法 元素操作 等待元素被加载 元素各项属性 执行js代码 切换选项卡 浏览器前进后退 无界面浏览器 xpath的使用 简单介绍 selenium中使用 异常处理 登录获取cookie保存 动作链 打码平台使用(验证码破解) selenium介绍 由…

JavaScript -- 正则表达式及示例代码介绍

文章目录正则表达式1 正则表达式的介绍2 创建正则表达式3 通过整个表达式检查字符串是否符合规则4 正则表达式的基本语法5 提取符合规则的字符串6 例子正则表达式 1 正则表达式的介绍 正则表达式用来定义一个规则通过这个规则计算机可以检查一个字符串是否符合规则或者将字符…

python PyQt6 常用操作以及常见问题解决

因为需求需要写一个简单的Python GUI界面&#xff0c;期间遇到了一些问题&#xff0c;在这里记录下 安装PyQt6: pip install pyqt6使用QTDesigner绘制界面&#xff1a; 我使用Anaconda下载的pyqt6里已经自带了两种工具&#xff0c;下面只需要把工具导入到pycharm中&#xff0…

[附源码]计算机毕业设计旅游网的设计与实现Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

『Python学习笔记』使用Cython编程语言编译python文件

使用Cython编程语言编译python文件 文章目录一. Cython简介一. Cython编译2.1. 编译过程2.2. 环境安装2.3. disutils库2.4. 引入C源文件三. 总结参考文献一. Cython简介 Cython官网地址&#xff1a;https://cython.org/Cython的下载和安装&#xff1a;https://pypi.org/projec…

嵌入式分享合集117

一、获取STM32代码运行时间的技巧 测试代码的运行时间的两种方法&#xff1a; 使用单片机内部定时器&#xff0c;在待测程序段的开始启动定时器&#xff0c;在待测程序段的结尾关闭定时器。为了测量的准确性&#xff0c;要进行多次测量&#xff0c;并进行平均取值。 借助示波器…

NFV概述

NFV&#xff08;网络功能虚拟化&#xff09;是指利用虚拟化技术在标准化的通用IT设备&#xff08;X86服务器&#xff0c;存储和交换设备&#xff09;上实现各种网络功能。NFV的目标是取代通信网络中私有、专用和封闭的网元&#xff0c;实现统一通用硬件平台业务逻辑软件的开放架…

争议不断的AI绘画,靠什么成为了顶流?

今年以来&#xff0c;AIGC迅速崛起。所谓AIGC&#xff0c;即AI-Generated Content&#xff0c;指的是利用人工智能来生成内容&#xff0c;被认为是继专业产出内容&#xff08;PGC&#xff09;、用户产出内容&#xff08;UGC&#xff09;后的新型内容创作方式。不久前掀起热议的…

客户需求太多,如何有效沟通完成项目?

1、向客户明确&#xff1a;工作量、时间与质量的关系 需要想客户明确&#xff0c;某时间内在保障开发质量的前提下&#xff0c;实际的工作量。如果加大工作量&#xff0c;在赶工情况下&#xff0c;开发质量无法保障。如要保障开发质量&#xff0c;开发时间会延长&#xff0c;那…

【电力系统】基于Matlab实现风电光伏概率潮流计算

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …