服务器 硬盘空间在Linux中的管理与优化
一、查看磁盘空间使用情况
1. df命令 :查看文件系统磁盘空间使用情况
常用选项 :
:以人类可读的方式显示磁盘空间信息(GB、MB)。
:显示所有文件系统,包括空的文件系统。
:显示文件系统类型。
:显示inode的使用情况。
典型用法:
示例输出:
文件系统容量已用可用 已用% 挂载点/dev/sda140G20G18G53% /tmpfs7.8G07.8G0% /dev/shm/dev/sdb1100G60G35G62% /data
解释:
: 根文件系统,总容量40G,已用20G,可用18G,使用率53%。
: 临时文件系统,总容量7.8G,未使用。
: 数据分区,总容量100G,已用60G,可用35G,使用率62%。
2. du命令 :查看目录或文件的磁盘使用情况
常用选项 :
:以人类可读的方式显示磁盘空间信息。
:只显示总大小,不显示子目录的大小。
--max-depth=N
:限制最大深度为N,仅显示当前目录及其下N级子目录的占用情况。
典型用法:
du -h /var/log
示例输出:
1、2G/var/log
解释:目录总大小为1.2GB。
3. ls命令 :查看文件和目录的详细信息
常用选项 :
:以人类可读的方式显示文件大小。
典型用法:
ls -lh /var/log
示例输出:
total 1.2G-rw-r--r-1 root root 500M Jan1 12:00 logfile1.log-rw-r--r-1 root root 700M Feb1 12:00 logfile2.log
解释:目录下有两个日志文件,分别为500MB和700MB。
4. Gnome Disks:图形化工具
使用方法 :
打开终端并输入
gnome-disks
命令,即可启动Gnome Disks工具。
选择要查看的磁盘,可以查看其详细信息,包括磁盘使用情况、文件系统类型、挂载点等。
二、磁盘空间异常排查与优化
1. 排查大文件和目录
使用ncdu工具 :
是一个交互式的磁盘使用情况分析工具,支持按大小排序和删除操作。
安装方法(适用于Debian系):
sudo apt Install ncdu
使用方法:
sudo ncdu -x /

参数说明:
:限制扫描范围为当前文件系统,不跨越挂载点。
2. 清理Docker资源
常见问题 :Docker容器、镜像和卷占用大量磁盘空间。
解决方法 :
停止未使用的容器:
docker CONtainer prune
删除未使用的镜像:
docker image prune -a
删除未使用的卷:
docker volume prune
清理未使用的网络:
docker network prune
3. 清理日志文件
查找大日志文件 :
使用命令查找大于1G的日志文件:
Find /var/log -type f -name "*.log" -size +1G
手动清理日志 :
清空特定容器的日志文件:
sudo truncate -s 0 /var/lib/docker/containers// -json.log
设置日志文件大小限制 :
编辑Docker配置文件
/etc/docker/daemon.json
,添加日志驱动配置:
{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}}
重启Docker服务:
sudo systemctl restart docker
三、相关问题与解答
1. df命令显示磁盘空间使用率为100%,但实际还有空间是什么原因?
解答 :这通常是由于文件系统中存在大量的小文件或碎片化严重导致的,可以使用命令检查inode使用情况,如果inode使用率也很高,可能是大量小文件占用了inode,可以通过删除不必要的小文件或调整文件系统的inode数量来解决。
2. 如何释放被大量日志文件占用的磁盘空间?
解答 :使用命令查找大日志文件,然后根据需要删除旧的日志文件,可以设置日志轮转策略,定期删除旧的日志文件,可以配置日志文件的大小限制,防止单个日志文件占用过多空间,在Docker中配置日志驱动的max-size和max-file参数。
各位小伙伴们,我刚刚为大家分享了有关“ 服务器硬盘空间 linux ”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
Linux下如何配置NFS?
建议使用 金柜项目管理文档软件;将该软件安装在服务器上,用户可以通过浏览器登录;然后就有上传、下载、删除、复制、移动、发送文件了;还可以实现文件共享等功能。 服务器硬盘有多大空间,你就可以使用多么大的空间;够爽吧。 而且是免费的
在Linux中,怎样做磁盘配额??
1:添加硬盘2:fdisk对新加的硬盘进行分区#fdisk /dev/sdb p:(打印分区表)n:(新建分区)w:(将修改写入分区表)q:(退出)3:格式化新分区为EXT3文件系统 #3 /dev/sdb14:挂载格式化好的文件系统 # mount /dev/sdb1/home5: 修改/etc/fstab文件vi /etc/fstab /dev/sdb1/homeext3defaults,userguota,grpquota0 06:卸载后再挂载新那个文件系统 #umount/home #mount /dev/sdb17:创建配额文件#quotacheck -cmug /home/8:检查配额与文件的一致性#quota -mfvug/home9:编辑用户(组)配额 #edquota -u用户名 (#edquota -g 组名)10:重启,验证配额#init 6#quota 用户名(组名)
linux 如何动态分配内存
Linux内核运行在X86机器的物理内存管理使用简单平坦内存模型,每个用户进程内存(虚拟内存)地址范围为从0到TASK_SIZE字节,超过此内存的限制不能被用户访问。 用户进程被分为几个逻辑段,成为虚拟内存区域,内核跟踪和管理用户进程的虚拟内存区域提供适当的内存管理和内存保护处理。 do_brk()是一个内核函数,用于间接调用管理进程的内存堆的增加和缩减 (brk),它是一个mmap(2)系统调用的简化版本,只处理匿名映射(如未初始化数据)。 do_brk()改变进程的地址空间。 地址是代表数据段结束的一个指针(事实上是进程的堆区域)。 do_brk()的参数是一个绝对逻辑地址,这个地址代表地址空间新的结尾。 更实际地说,我们在编写用户程序的时候从来就不应该使用这个函数。 使用这个函数的用户程序就不能再使用malloc(),这是一个大问题,因为标注库的许多部分依赖于malloc()。 如果在用户程序中使用do_brk()可能会导致难以发现的程序崩溃。 do_brk(addr, len)函数给从addr到addr+len建立虚拟内存区vm_area_struct(该区的起始地址为addr;结束地址为addr+len),该虚拟内存区作为进程的堆来使用。 malloc将从此区域获取内存空间(虚拟内存), free()将会把malloc()获取的虚拟空间释放掉(归还到该进程的堆的空闲空间中去)
发表评论