在Linux系统中,根目录(/)是所有文件和目录的起始点,随着系统的使用,根目录可能会因为存储的文件和数据而变得不够用,在这种情况下,我们需要对根目录进行扩容,本文将详细介绍Linux根目录扩容的方法。
(图片来源网络,侵删)
1、检查磁盘空间
在进行根目录扩容之前,首先需要了解当前磁盘的使用情况,可以使用df h命令查看磁盘空间使用情况:
df h2、卸载根目录所在的文件系统
在进行根目录扩容之前,需要先卸载根目录所在的文件系统,假设根目录所在的文件系统为/dev/sda1,可以使用以下命令卸载:
umount /dev/sda13、调整分区大小
使用fdisk或parted工具调整分区大小,这里以fdisk为例:
sudo fdisk /dev/sda进入fdisk界面后,按照提示操作,找到根目录所在的分区(通常是/dev/sda1),然后使用resize命令调整分区大小,将分区大小调整为50G:
resize /dev/sda1 50G4、重新格式化分区
调整分区大小后,需要重新格式化分区,使用mkfs命令格式化分区,例如使用ext4文件系统:
mkfs.ext4 /dev/sda15、挂载分区
格式化完成后,需要将分区挂载到根目录,首先创建一个新的挂载点,例如/new_root:
sudo mkdir /new_root然后将分区挂载到新的挂载点:
sudo mount /dev/sda1 /new_root6、迁移数据
将原来的根目录下的数据迁移到新的挂载点:
sudo mv //* /new_root/7、修改配置文件并重启系统
修改/etc/fstab文件,将原来的根目录指向新的挂载点:
sudo nano /etc/fstab将以下内容替换为实际的分区和挂载点信息:
/dev/sda1 / ext4 defaults 0 0修改为:
/dev/sda1 /new_root ext4 defaults 0 0保存并退出,然后重启系统:
sudo reboot8、删除旧的根目录并清理数据
系统重启后,原来的根目录已经没有数据了,可以将其删除并清理数据:
sudo rm rf /old_root/* && sudo rmdir /old_root/ && sudo swapoff /old_root/swap && sudo rm /old_root/swap && sudo mkswap /new_root/swap && sudo chown root:root /new_root/swap && sudo chmod 600 /new_root/swap && sudo mkfs.ext4 F /new_root/swap && echo /new_root/swap none swap sw 0 0 | sudo tee a /etc/fstab && sudo swapon /new_root/swap && free h | grep Swap | head n1 | cut d f5 > /new_root/swapfile && cat /new_root/swapfile | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/swapfile swap swap defaults 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && free h | grep Swap | head n1 | cut d f5 > /new_root/swapfile && cat /new_root/swapfile | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/swapfile swap swap defaults 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && df h | grep new_root | head n1 | cut d f5 > /new_root/size && cat /new_root/size | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/size size size defaults,noatime,nobarrier,nodelalloc,inode64 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && df h | grep new_root | head n1 | cut d f5 > /new_root/size && cat /new_root/size | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/size size size defaults,noatime,nobarrier,nodelalloc,inode64 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && df h | grep new_root | head n1 | cut d f5 > /new_root/size && cat /new_root/size | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/size size size defaults,noatime,nobarrier,nodelalloc,inode64 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && df h | grep new_root | head n1 | cut d f5 > /new_root/size && cat /new_root/size | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/size size size defaults,noatime,nobarrier,nodelalloc,inode64 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.vfs_cache_pressure=50" | sudo tee a /etc/sysctl.conf && sysctl p && df h | grep new_root | head n1 | cut d f5 > /new_root/size && cat /new_root/size | xargs I{} sh c echo "{} {}" | sudo tee a /etc/fstab {} $(awk NR==2 {print $2} /proc/meminfo)M && echo "/new_root/size size size defaults,noatime,nobarrier,nodelalloc,inode64 0 0" | sudo tee a /etc/fstab && echo "vm.swappiness=10" | sudo tee a /etc/sysctl.conf && echo "vm.