Linux:解决 /dev/mapper/centos-root 根目录磁盘空间不足问题

本文介绍如何使用df-h命令查看磁盘空间使用情况,并利用du-h-x--max-depth=1命令找出占用空间过大的目录,以便进行针对性的文件清理。

#查看磁盘空间使用情况

df -h

#查看哪个目录占用过高,删除相应文件

du -h -x --max-depth=1

<think>我们面对的问题是:根目录 `/` 对应的设备 `/dev/mapper/centos-root` 空间已满(显示100%),而 `/app` 目录有大量空闲空间(仅使用1%)。用户希望将 `/app` 的空间直接用于根目录,即扩展根目录空间。 然而,注意:`/app` 是一个独立的逻辑卷(LV),挂载在独立的挂载点上。我们不能简单地将一个挂载点“合并”到根目录。但我们可以考虑以下两种方案: 方案一:将 `/app` 逻辑卷的空间重新分配给根目录的逻辑卷(如果它们在同一个卷组中)。 方案二:如果不在同一个卷组,则可能需要先备份 `/app` 的数据,然后卸载并删除 `/app` 的逻辑卷,再扩展根目录的逻辑卷,最后重新创建 `/app` 并恢复数据(或者将根目录扩展后,将原来的 `/app` 目录作为根目录下的一个目录,不再单独挂载)。 根据引用[1]和[2]中的方法,我们可以尝试方案一(如果它们在同一个卷组中): 步骤: 1. 检查卷组信息:确认 `/dev/mapper/centos-root` 和 `/dev/mapper/appvg-applv` 是否在同一个卷组(VG)中。 从设备名称看,根目录在`centos`卷组,而`/app`在`appvg`卷组,所以很可能不在同一个卷组。 2. 如果不在同一个卷组,则不能直接扩展。需要先备份`/app`的数据,然后卸载`/app`,删除其逻辑卷,将物理卷(PV)从`appvg`卷组中移除,然后将这个物理卷加入到`centos`卷组,最后扩展根目录逻辑卷。 3. 如果在同一个卷组,则可以减少`/app`逻辑卷的大小,然后扩展根目录逻辑卷(注意:减少逻辑卷大小需要先缩减文件系统,有数据丢失风险,必须先备份)。 由于用户没有提供卷组信息,我们假设它们不在同一个卷组。下面是一个详细的操作步骤(假设`/app`的数据可以备份并后续恢复): 步骤1: 备份/app数据 ```bash sudo tar -cvzf /tmp/app_backup.tar.gz /app # 或者使用其他备份方式,也可以将数据拷贝到其他磁盘 ``` 步骤2: 卸载/app ```bash sudo umount /app ``` 步骤3: 删除/app对应的逻辑卷 ```bash # 先查看/app对应的逻辑卷:从挂载点我们知道是/dev/mapper/appvg-applv # 删除逻辑卷 sudo lvremove /dev/mapper/appvg-applv ``` 步骤4: 删除卷组appvg(如果不再需要) ```bash sudo vgremove appvg ``` 步骤5: 将物理卷(假设是/dev/sdb)添加到centos卷组 ```bash # 首先查看之前用于/app的物理卷是什么 sudo pvs # 假设是/dev/sdb1 sudo vgextend centos /dev/sdb1 ``` 步骤6: 扩展根目录逻辑卷 ```bash # 将/dev/sdb1的全部空间添加到根目录逻辑卷 sudo lvextend -l +100%FREE /dev/mapper/centos-root ``` 步骤7: 调整文件系统大小(如果是xfs或ext4) ```bash # 对于ext4: sudo resize2fs /dev/mapper/centos-root # 对于xfs: sudo xfs_growfs / ``` 步骤8: 重新创建/app目录(如果需要) ```bash sudo mkdir /app # 注意:现在/app只是根目录下的一个目录,不再是一个单独的分区。如果需要单独分区,需要重新划分空间并挂载,但这里我们目的是扩展根目录,所以不需要再挂载。 # 然后恢复备份数据到/app sudo tar -xvzf /tmp/app_backup.tar.gz -C / ``` 但是,请注意:用户可能希望保留/app作为一个单独的挂载点?从问题描述看,用户希望将/app空间直接挂载到根目录下,也就是不再保留/app作为单独挂载点,而是成为根目录的一部分。所以上述步骤8中,我们不再重新挂载,而是将/app作为根目录下的普通目录。 另一种方案(不删除/app,而是将/app目录移动到根目录下,然后挂载整个根目录)?但这样操作复杂,且需要停机时间。 然而,还有一种情况:如果根目录和/app都在同一个卷组,那么我们可以直接缩减/app逻辑卷的空间,然后将空间分配给根目录逻辑卷(无需备份和删除/app)。但注意:缩减逻辑卷有风险,必须确保缩减后空间足够容纳原有数据。 步骤(同一卷组): 1. 备份/app(以防万一) 2. 卸载/app 3. 检查文件系统(确保没有错误) 如果是ext4: sudo e2fsck -f /dev/mapper/appvg-applv 4. 缩减文件系统和逻辑卷(注意:只能缩减未使用的空间,所以确保/app下数据量小于要保留的空间) # 假设我们要保留100G,那么将逻辑卷缩减到100G(注意:文件系统必须先缩减) sudo resize2fs /dev/mapper/appvg-applv 100G # 先缩减文件系统 sudo lvreduce -L 100G /dev/mapper/appvg-applv 5. 将腾出的空间添加到根目录逻辑卷 sudo lvextend -l +100%FREE /dev/mapper/centos-root # 或者指定大小 sudo resize2fs /dev/mapper/centos-root # 如果是ext4,如果是xfs则用xfs_growfs 6. 重新挂载/app sudo mount /dev/mapper/appvg-applv /app 但注意:用户的需求是扩展根目录,且用户之前已经将/app挂载为一个单独的大分区。如果这两个逻辑卷不在同一个卷组,则无法直接调整。 因此,我们首先需要确认卷组信息。请用户执行以下命令: ```bash sudo vgs sudo lvs ``` 然后根据输出判断是否在同一个卷组。 如果用户没有提供,我们假设不在同一个卷组,则按照第一种方案(备份、删除、扩展)操作。 注意:操作有风险,务必备份重要数据。 另外,引用[3]提供了一些清理根目录空间的方法,如果用户只是想临时释放空间,也可以先尝试清理。但用户已经明确要求增加空间。 引用[4]展示了如何通过扩展物理卷来扩展根目录,但前提是有未分配空间或新分区。 综上所述,具体步骤取决于当前系统的卷组配置。我们给出一个通用步骤: 1. 备份/app数据。 2. 卸载/app。 3. 删除/app逻辑卷。 4. 将原/app的物理卷加入到根目录所在的卷组(centos)。 5. 扩展根目录逻辑卷并调整文件系统。 6. 在根目录下创建/app目录,恢复数据。 注意:如果/app逻辑卷所在的物理卷和根目录不在同一个磁盘,那么转移物理卷到另一个卷组需要先删除卷组(vgremove)和物理卷的卷组标签(pvremove),然后才能用vgextend加入。 详细步骤: 步骤1: 备份 ```bash sudo tar -cvzf /tmp/app_backup.tar.gz /app ``` 步骤2: 卸载 ```bash sudo umount /app ``` 步骤3: 删除逻辑卷 ```bash sudo lvremove /dev/mapper/appvg-applv ``` 步骤4: 删除卷组appvg ```bash sudo vgremove appvg ``` 步骤5: 从物理卷中移除卷组标签(假设物理卷路径为/dev/sdb1) ```bash sudo pvremove /dev/sdb1 ``` 步骤6: 将此物理卷加入到centos卷组 ```bash sudo vgextend centos /dev/sdb1 ``` 步骤7: 扩展根目录逻辑卷 ```bash sudo lvextend -l +100%FREE /dev/centos/root # 注意:逻辑卷路径可能是/dev/centos/root,而不是/dev/mapper/centos-root(它们是等价的) ``` 步骤8: 调整文件系统 ```bash # 对于ext4: sudo resize2fs /dev/mapper/centos-root # 对于xfs: sudo xfs_growfs / ``` 步骤9: 由于我们不再需要单独的/app挂载,所以将/app作为根目录下的普通目录,并恢复数据 ```bash sudo mkdir /app # 如果之前删除了就创建,如果没有删除则直接使用 sudo tar -xvzf /tmp/app_backup.tar.gz -C / ``` 步骤10: 修改/etc/fstab,删除原来/app的挂载条目,防止重启后再次挂载。 注意:以上步骤需要系统处于可用状态,如果/app是重要的服务目录,操作期间服务不可用。 如果用户希望保留/app作为单独的逻辑卷(但空间减小),那么需要先缩减/app(同一卷组内),但这种情况需要同一卷组,且操作风险大,一般不推荐缩减。 因此,我们推荐上述备份、卸载、删除、扩展、恢复的流程。 注意:在执行这些操作之前,请确保有完整的备份,并且了解每一步的含义。如果可能,先在测试环境演练。 由于操作复杂且风险高,建议在系统维护窗口进行。 最后,我们检查一下当前根目录文件系统类型: ```bash df -Th / ``` 输出中的Type列就是文件系统类型(如xfs或ext4)。 相关问题: 1. 如何检查Linux中的卷组和逻辑卷信息? 2. 扩展逻辑卷时,resize2fs和xfs_growfs命令有什么区别? 3. 在LVM中,如何安全地移除一个不再需要的逻辑卷? 4. 如何备份和恢复Linux系统中的重要数据? </think>### 增加 `/dev/mapper/centos-root` 根目录空间的完整指南 当根目录空间耗尽时(显示 `100%`),可以通过重新分配逻辑卷空间解决。以下是安全扩展根目录空间的步骤: --- #### **1. 检查当前空间分布** ```bash df -h lsblk sudo vgs && sudo lvs ``` 关键关注点: - `/dev/mapper/centos-root`(根目录)和 `/dev/mapper/appvg-applv`(/app)是否在**同一卷组**(VG) - 确认 `/app` 有充足空间(示例中空闲 `457G`) --- #### **2. 备份关键数据** ⚠️ **操作前必做**: ```bash # 备份 /app 数据(空间充足) sudo tar -czvf /tmp/app_backup.tar.gz /app/* # 备份 fstab 配置 sudo cp /etc/fstab /etc/fstab.bak ``` --- #### **3. 扩展根目录空间(同一卷组)** 若根目录和 `/app` 在**同一卷组**(如 `centos`): ```bash # 卸载 /app sudo umount /app # 缩小 /app 逻辑卷(保留足够空间) sudo lvreduce -L 400G /dev/appvg/applv # 从 483G 缩小到 400G # 扩展根目录逻辑卷 sudo lvextend -l +100%FREE /dev/centos/root # 调整文件系统(根据类型选择命令) ## 如果是 ext4: sudo resize2fs /dev/mapper/centos-root ## 如果是 xfs: sudo xfs_growfs / ``` > 📌 说明: > - `lvreduce` 后的空间会加入卷组空闲池 > - `+100%FREE` 将所有空闲空间分配给根目录[^1][^2] --- #### **4. 跨卷组扩展(不同卷组)** 若根目录(`centos` VG)和 `/app`(`appvg` VG)**不在同一卷组**: ```bash # 卸载并删除 /app 逻辑卷 sudo umount /app sudo lvremove /dev/appvg/applv # 将物理卷加入根目录的卷组 sudo vgextend centos /dev/sdX1 # sdX1 是原 /app 的物理卷 # 扩展根目录 sudo lvextend -l +100%FREE /dev/centos/root sudo resize2fs /dev/mapper/centos-root # 或 xfs_growfs ``` --- #### **5. 清理与恢复** ```bash # 重新挂载 /app(如需) sudo mkdir /app sudo mount /dev/appvg/applv /app # 若未删除逻辑卷 sudo tar -xzvf /tmp/app_backup.tar.gz -C /app # 恢复数据 # 清理临时文件释放空间(可选) sudo rm -rf /tmp/* sudo journalctl --vacuum-size=200M ``` --- #### **6. 验证结果** ```bash df -h | grep -E 'Filesystem|/dev/mapper/centos-root' ``` 输出示例: ``` /dev/mapper/centos-root 543G 103G 440G 20% / ``` 表示根目录已成功扩展[^1][^4]。 --- ### ⚠️ 注意事项 1. **缩减逻辑卷前必须卸载**:否则会导致数据损坏 2. **XFS 文件系统不可缩减**:只能扩展不能缩小 3. **操作顺序不可逆**:备份是必要步骤 4. **谨慎使用 `lvreduce`**:确保预留空间大于实际数据量 --- ### 相关问题 1. 如何检查 Linux 文件系统类型(ext4/xfs)? 2. LVM 逻辑卷管理中有哪些常用命令? 3. 系统启动时如何自动调整逻辑卷大小? 4. 根目录空间不足时,有哪些安全的临时清理方法?[^3] > 建议操作前通过 `sudo vgdisplay` 确认卷组详情。如遇问题可从备份恢复 `/etc/fstab` 并重启系统。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值