Ubuntu管理大容量硬盘空间的实用方法
大容量硬盘的高效管理始于合理的分区设计。对于容量>2TB的硬盘,必须使用GPT分区表(支持更大容量且具备备份分区表的高可靠性),可通过parted
工具操作(避免使用fdisk
)。常见的分区方案包括:
/
(根分区,30-50GB,安装系统和核心软件)、Swap
(交换分区,物理内存≤4GB时设为2倍,>4GB时设为1.5倍或等同内存,用于休眠或内存不足时的虚拟内存)、/home
(家分区,剩余所有空间,存储用户个人数据,重装系统时可保留)。/boot
(1-2GB,存放内核和启动文件)、/var
(20-50GB,存储日志、数据库等动态数据,避免日志占满根分区)、/opt
(可选,用于安装大型第三方软件,如Oracle数据库)。/boot/efi
),用于存放引导文件。/home
、/var/log
)。df -h
:快速查看所有文件系统的使用情况(总容量、已用、可用),-h
参数使输出更易读(如GB、MB)。du -sh *
:查看当前目录下各文件夹的大小,-s
汇总、-h
易读,可递归分析子目录(如du -sh /home/user/Documents
)。lsblk
:列出所有块设备(硬盘、分区),查看分区挂载点和大小。/var/cache/apt/archives
),可通过以下命令清理:
sudo apt-get clean
:彻底清理所有缓存包。sudo apt-get autoclean
:清理不再需要的旧缓存包(仅保留当前可用的软件包)。dpkg -l | grep linux-image
:列出所有已安装的内核版本。sudo apt-get purge linux-image-x.x.x-x-generic
:删除指定旧内核(保留当前正在使用的内核,可通过uname -r
查看)。/var/log
)会随时间增长占用空间,可使用以下命令清理:
sudo journalctl --vacuum-time=3d
:删除3天前的日志(--vacuum-size=100M
可限制日志大小为100MB)。sudo rm /var/log/*.gz
:删除压缩的旧日志文件(谨慎操作,避免删除正在使用的日志)。/var/lib/snapd/snaps
),可通过以下命令删除:
snap list --all
:查看所有Snap包及其版本。sudo snap remove <package-name> --revision=<revision-number>
:删除指定旧版本(保留最新版本)。sudo rm -rf /tmp/*
:清理/tmp
目录下的临时文件(重启系统后会自动清理,但可手动加速)。rm -rf ~/.cache/thumbnails/*
:清理缩略图缓存(位于用户家目录的.cache/thumbnails
)。sudo find / -type f -size +100M
:查找系统中大于100MB的文件(需root权限,避免遗漏系统文件)。FSlint
(查找重复文件)、FDUPES
(命令行工具,fdupes -r /home
递归查找重复文件)。/home
分区剩余空间多),可通过GParted(Live CD/USB启动)调整分区大小:缩小未使用的分区,扩展需要更多空间的分区(如/
根分区)。lsblk
查看设备名,如sdb
)。parted
或GParted
创建分区(如/dev/sdb1
),格式化为ext4
(sudo mkfs.ext4 /dev/sdb1
)。/mnt/newdisk
),编辑/etc/fstab
文件(添加/dev/sdb1 /mnt/newdisk ext4 defaults 0 2
),实现开机自动挂载。sudo pvcreate /dev/sdaX
(将现有分区或新硬盘设为物理卷)。sudo vgcreate vg_name /dev/sdaX
(将物理卷加入卷组)。sudo lvcreate -L 50G -n lv_name vg_name
(从卷组中分配50GB创建逻辑卷)。sudo lvextend -l +100%FREE /dev/vg_name/lv_name
),最后调整文件系统大小(sudo resize2fs /dev/vg_name/lv_name
)。GParted
或fdisk
扩展分区(需注意:扩展分区前需将未分配空间添加到现有分区,或创建新分区并挂载)。cron
定时任务自动化(如编辑/etc/crontab
,添加0 3 * * * root /usr/bin/apt-get clean && /usr/bin/journalctl --vacuum-time=7d
,每天凌晨3点清理)。docker system prune -a
:清理所有未使用的容器、网络、镜像和构建缓存。docker volume prune
:清理未使用的卷。OPTIMIZE TABLE table_name
),减少碎片占用空间(适用于频繁插入、删除数据的表)。