Linux 根目录满了解决方法

本文详细记录了在Linux虚拟机中遇到根目录磁盘空间不足的问题,通过扩展磁盘、分区、创建物理卷、扩展卷组、调整逻辑卷大小,最终成功扩容根目录的过程。涉及的命令包括fdisk、pvcreate、vgextend、lvextend和xfs_growfs。

今天正在做一个实验,突然发现根目录满了,把这个过程记录下来(当初创建的时候给根目录分配的磁盘太小了.ahhhhh)

先关闭虚拟机电源,做如下设置:“ 虚拟机”–“虚拟机设置”–“磁盘”–“扩展
在这里插入图片描述

  1. 这是目前的磁盘情况
    在这里插入图片描述
  2. 我查看了一下磁盘/dev/sda还有空余的空间
    在这里插入图片描述
  3. 这种情况下,我只需要扩展vg的容量,然后给lv扩容即可,首先进行/dev/sda的磁盘分区,记得把新分的区改成8e
[root@centos7 ~]# fdisk /dev/sda
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1305    10377990   8e  Linux LVM

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1306-1958, default 1306): +1306
Last cylinder or +size or +sizeM or +sizeK (1306-1958, default 1958): +1958
Value out of range.
Last cylinder or +size or +sizeM or +sizeK (1306-1958, default 1958): 
Using default value 1958

Command (m for help): p

Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        1305    10377990   8e  Linux LVM
/dev/sda3            1306        1958     5245222+  83  Linux

Command (m for help): t
Partition number (1,2, default 2): 3
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

[root@centos7 ~]# partprobe /dev/sda  #使kernel重新读取分区 信息,从而避免重启系统。

  1. 再次查看,发现已经分区了一块5G大小的空间
    在这里插入图片描述
  2. 创建pv
[root@centos7 ~]# pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created.

  1. 扩展vg,首先先查看一下vg的信息,以免出错
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   3   0 wz--n- 12.00g 4.00m
[root@centos7 ~]# vgextend centos /dev/sda3
  Volume group "centos" successfully extended
[root@centos7 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   2   3   0 wz--n- 17.00g 5.00g

  1. 扩展lv,让lv的大小增加5G
[root@centos7 ~]# lvextend -L +5G /dev/mapper/centos-root
  Size of logical volume centos/root changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents).
  Logical volume centos/root successfully resized.
	[root@centos7 ~]# xfs_growfs /dev/mapper/centos-root  # 命令使系统重新读取大小
meta-data=/dev/mapper/centos-root isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1310720 to 2621440    

  1. 查看效果,根目录已经扩容
[root@centos7 ~]# lvs  
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  app  centos -wi-ao----  5.00g                                                    
  root centos -wi-ao---- 10.00g                                                    
  swap centos -wi-ao----  2.00g
	[root@centos7 ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   10G  4.6G  5.4G   46% /
devtmpfs                 471M     0  471M    0% /dev
tmpfs                    488M     0  488M    0% /dev/shm
tmpfs                    488M   21M  467M    5% /run
tmpfs                    488M     0  488M    0% /sys/fs/cgroup
/dev/mapper/centos-app   5.0G   33M  5.0G    1% /app
/dev/sda1                 97M   60M   38M   62% /boot
tmpfs                     98M   12K   98M    1% /run/user/42
tmpfs                     98M     0   98M    0% /run/user/0

### Linux 根目录空间已解决方法 Linux 系统中根目录(`/`)空间已是一个常见的问题,可能导致系统无法正常运行,例如无法安装更新、日志文件入失败等。以下是几种有效的排查和解决方法: #### 1. 查看磁盘使用情况 首先需要确认哪些目录文件占用了大量空间。可以使用 `df` 和 `du` 命令来查看磁盘使用情况。 ```bash # 查看整个系统的磁盘使用情况 df -h # 查看具体目录的磁盘占用情况(例如 /var 目录) du -sh /var/* ``` 通过这些命令可以快速定位占用空间较大的目录文件[^1]。 #### 2. 清理不必要的文件 根据常见的系统结构,以下是一些可能占用大量空间的目录及其处理建议: - **`/var/log`**:这是系统日志文件的存储位置。可以删除旧的日志文件或使用 `logrotate` 工具进行管理。 ```bash # 删除所有 .log 文件 sudo rm /var/log/*.log ``` - **`/tmp` 或 `/var/tmp`**:这些目录用于存放临时文件,通常可以安全地清理。 ```bash # 清空 /tmp 目录下的所有文件 sudo rm -rf /tmp/* ``` - **`/var/cache/apt` 或 `/var/cache/yum`**:对于基于 Debian 的系统,`apt` 缓存可能会占用大量空间;对于基于 Red Hat 的系统,`yum` 缓存也可能占用较多空间。 ```bash # 清除 apt 缓存 sudo apt-get clean # 清除 yum 缓存 sudo yum clean all ``` - **`~/.cache`**:用户级别的缓存目录,可以删除其中的内容以释放空间。 ```bash # 删除用户缓存 rm -rf ~/.cache/* ``` #### 3. 卸载不需要的软件包 如果系统中安装了大量不常用的软件包,可以考虑卸载它们以节省空间。 ```bash # 列出已安装的软件包 dpkg --get-selections | grep -v deinstall # 卸载指定的软件包 sudo apt remove package_name ``` 此外,还可以使用以下命令删除不再需要的依赖项: ```bash # 删除无用的依赖项 sudo apt autoremove ``` #### 4. 扩展根分区 如果上述方法仍无法解决问题,可以考虑扩展根分区的空间。这通常适用于虚拟机或云服务器环境。 - **LVM(逻辑卷管理)**:如果使用 LVM,可以通过调整逻辑卷大小来扩展根分区。 ```bash # 扩展逻辑卷 lvextend -L +10G /dev/root_vg/root_lv # 调整文件系统大小 resize2fs /dev/root_vg/root_lv ``` - **云服务器**:某些云平台提供在线扩容功能,可以通过控制台操作扩展磁盘容量。 #### 5. 挂载其他分区到高占用目录 如果某个特定目录(如 `/home` 或 `/var`)占用大量空间,可以将其挂载到单独的分区上。 ```bash # 创建新的分区并格式化为 ext4 sudo mkfs.ext4 /dev/sdb1 # 创建挂载点 sudo mkdir /mnt/new_partition # 挂载新分区到目标目录 sudo mount /dev/sdb1 /mnt/new_partition # 修改 /etc/fstab 文件以实现开机自动挂载 echo '/dev/sdb1 /mnt/new_partition ext4 defaults 0 0' | sudo tee -a /etc/fstab ``` 通过这种方式,可以将原本位于根目录下的大目录迁移到其他分区,从而缓解根目录空间不足的问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值