no space left on device 解决磁盘空间

今天在检查gitlab备份情况时,发现scp过程中提示no space left on device,这意味着我安装着gitlab的服务器没有空间了

方法

1. 使用命令 : du -sh * 它用来查看文件或目录所占用的磁盘空间的大小。
2. 进入占用空间比较大的文件夹,删除
复制代码

命令

选项作用
-h以K,M,G为单位,提高信息的可读性
-a显示目录中个别文件的大小
-s仅显示总计
-c除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
-l重复计算硬件连接的文件

Linux下各个目录的作用及内容

首先你得知道linux每个目录下的作用和内容,你才可以删除文件

选项作用
/bin可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等
/boot放置linux系统启动时用到的一些文件。/boot/vmlinuz 为 linux 的内核文件,以及 /boot/gurb。建议单独分区,分区大小100M即可
/dev存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt
/etc系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份
/home系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据
/lib系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为 /lib/modules
/lost+fount系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于 /disk 中,此目录下就会自动产生目录 /disk/lost+found
/mnt: /media光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载
/opt给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的 KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下
/proc此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等
/root系统管理员root的家目录,系统第一个启动的分区为 /,所以最好将 /root和 /放置在一个分区下
/sbin放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用
/tmp一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下
/srv服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内
/usr应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls 时会查询 /usr/share/man/man1/ls.1.gz 的内容建议单独分区,设置较大的磁盘空间
/var放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间

排查

既然出现了问题,那么就要去解决

gitlab-backup@gitlabbackup-System-Product-Name:~$ df -h
文件系统        容量  已用  可用 已用% 挂载点
udev            3.9G     0  3.9G    0% /dev
tmpfs           785M  9.4M  776M    2% /run
/dev/sda1       103G   93G  4.5G   96% /
tmpfs           3.9G  192K  3.9G    1% /dev/shm
tmpfs           5.0M  4.0K  5.0M    1% /run/lock
tmpfs           3.9G     0  3.9G    0% /sys/fs/cgroup
tmpfs           785M   32K  785M    1% /run/user/108
tmpfs           785M     0  785M    0% /run/user/1000

复制代码

进入var目录下,查看每个子目录的大小,发现是仅仅是opt就占有了72G

gitlab-backup@gitlabbackup-System-Product-Name:/var$ sudo du -sh *
[sudo] gitlab-backup 的密码: 
4.8M	backups
576M	cache
4.0K	crash
295M	lib
4.0K	local
0	lock
41M	log
4.0K	mail
4.0K	metrics
72G	opt
0	run
4.0K	snap
52K	spool
68K	tmp

复制代码

进入opt/gitlab目录下,查看每个子目录的大小,发现backups就占有了66G

gitlab-backup@gitlabbackup-System-Product-Name:/var$ cd opt/
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt$ sudo du -sh *
72G	gitlab
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt$ cd gitlab/
gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab$ sudo du -sh *
4.0K	auto_recovery_backup.sh
4.0K	auto_remove_backup.sh
66G	backups
4.0K	bootstrapped
8.0K	gitaly
6.1G	git-data
8.0K	gitlab-ci
8.0K	gitlab-monitor
5.9M	gitlab-rails
8.0K	gitlab-shell
12K	gitlab-workhorse
8.0K	log
40K	logrotate
48K	nginx
8.0K	node-exporter
12K	postgres-exporter
265M	postgresql
126M	prometheus
4.0K	public_attributes.json
124K	redis
4.0K	trusted-certs-directory-hash
复制代码

进入backups目录下,查看每个子目录的大小,发现tmp就占有了60G,其中1560290789_2019_06_12_10.7.2-ee_gitlab_backup.tar是备份包

gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab/backups$ sudo du -sh *
6.2G	1560290789_2019_06_12_10.7.2-ee_gitlab_backup.tar
112K	log
60G	tmp
复制代码

进入tmp目录下,发现default-repositories好多好大

gitlab-backup@gitlabbackup-System-Product-Name:/var/opt/gitlab/backups/tmp$ sudo du -sh *
4.0K	artifacts.1558513269
4.0K	artifacts.1559544302
4.0K	artifacts.1559545677
4.0K	artifacts.1559551247
4.0K	artifacts.1559552081
4.0K	artifacts.1559552605
4.0K	artifacts.1559553987
4.0K	artifacts.1559644786
4.0K	artifacts.1559869515
4.0K	artifacts.1560131969
4.0K	artifacts.1560307146
4.0K	builds.1558513269
4.0K	builds.1559544302
4.0K	builds.1559545677
4.0K	builds.1559551247
4.0K	builds.1559552081
4.0K	builds.1559552605
4.0K	builds.1559553987
4.0K	builds.1559644786
4.0K	builds.1559869515
4.0K	builds.1560131969
4.0K	builds.1560307146
4.0K	default-repositories.old.1558513131
6.1G	default-repositories.old.1559544154
6.1G	default-repositories.old.1559545520
6.1G	default-repositories.old.1559551023
6.1G	default-repositories.old.1559551872
6.1G	default-repositories.old.1559552402
6.1G	default-repositories.old.1559553774
6.1G	default-repositories.old.1559644571
6.1G	default-repositories.old.1559869258
4.7G	default-repositories.old.1560131753
6.1G	default-repositories.old.1560218544
33M	default-repositories.old.1560306929,QCON,云栖社区,腾讯云,架构分享资料

4.0K	lfs.1558513269
4.0K	lfs.1559544302
4.0K	lfs.1559545677
4.0K	lfs.1559551247
4.0K	lfs.1559552081
4.0K	lfs.1559552605
4.0K	lfs.1559553987
4.0K	lfs.1559644786
4.0K	lfs.1559869515
4.0K	lfs.1560131969
4.0K	lfs.1560307146
4.0K	pages.1558513269
8.0K	pages.1559544302
8.0K	pages.1559545677
8.0K	pages.1559551247
8.0K	pages.1559552081
8.0K	pages.1559552605
8.0K	pages.1559553987
8.0K	pages.1559644786
8.0K	pages.1559869515
8.0K	pages.1560131969
8.0K	pages.1560307146
4.0K	uploads.1558513269
5.7M	uploads.1559544302
5.7M	uploads.1559545677
5.7M	uploads.1559551247
5.7M	uploads.1559552081
5.7M	uploads.1559552605
5.7M	uploads.1559553987
5.7M	uploads.1559644786
5.7M	uploads.1559869515
5.7M	uploads.1560131969
5.7M	uploads.1560307146

复制代码

鉴于tmp存放的临时文件,那么就乖乖放进垃圾箱中吧,给gitlab腾位子

sudo rm -rf tmp
复制代码

避免gitlab恢复过程产生tmp,就写个定时删除tmp的命令

# 仇飞鸿编辑于2019-6-12 添加定时任务,每天上午10点,自动删除var/opt/gitlab/backups/tmp
0  10   * * *   root    rm -rf /var/opt/gitlab/backups/tmp

复制代码

大功告成

参考文献

Linux 下各个目录的作用及内容

no space left on device 磁盘空间不足原因及排查方法

Linux du命令


  1. 欢迎大家进群,参与讨论
  2. 一起进步,是我们的准则,我们是前端的一道美丽风景线
  3. 请加我的vx:qiufeihong0203,拉你进群

  1. 欢迎关注feihong的掘金账号

  2. 原文地址


版权声明

转载时请注明作者 qiufeihong 以及本文地址:www.qiufeihong.top/technical-s…

转载于:https://juejin.im/post/5d00955951882565b460263b

### 回答1: 解决 "no space left on device" 错误的方法有多种,具体取决于你的系统和使用场景。常见的做法有: 1. 删除不必要的文件和文件夹,释放空间。 2. 清理缓存和日志文件。 3. 扩大磁盘容量,如果是虚拟机的话可以增加磁盘大小. 4. 使用磁盘整理工具,如“df”,“du”等。 5. 使用云存储服务,将数据存储在云端。 6. 如果是Docker容器,可以通过增加镜像大小来解决. ### 回答2: “No space left on device” 是一个经常出现的错误信息,这表示您的计算机存储设备没有足够的可用空间来执行所需的操作。通常出现这个问题的原因是您的硬盘已经满了,因为您下载或安装了太多的文件和应用程序。如果您没有采取任何行动,这个问题可能会导致计算机功能受到限制,系统运行缓慢,或数据丢失的风险。 下面是一些解决方案来解决这个问题: 1. 删除不需要的文件和应用程序:通过删除不需要的文件和应用程序,释放一些可用的存储空间。这可以通过手动删除文件、卸载程序或使用优化软件来完成。确保您只删除不必要的文件和应用程序,以避免删除您的重要文件或系统文件。 2. 扩展硬盘容量:如果您的硬盘已经满了,那么最好的解决方案就是扩展硬盘容量。这可以通过添加更大的硬盘或使用外部硬盘来完成。确保您选择的硬盘与您的系统兼容,并遵循正确的安装过程,以避免数据丢失和系统崩溃。 3. 压缩文件:硬盘空间很少时,压缩文件可以节省很多空间。通过使用压缩软件,您可以将文件压缩到更小的空间,以节省硬盘空间。但请注意,压缩文件可能会影响文件的质量和可读性。 4. 清理临时文件:临时文件是操作系统和应用程序在计算机上生成的文件,这些文件通常可以被删除以释放一些硬盘空间。您可以使用系统清理工具或第三方应用程序来清理临时文件。 以上是一些解决 "No space left on device" 的方法。如果问题仍然存在,请参考您的操作系统手册或咨询计算机专业人员。总之,定期检查并管理您的硬盘空间是维护计算机健康的绝佳方式。 ### 回答3: “No space left on device”指的是设备上没有足够的可用空间,无法写入或创建新文件或目录。这种情况通常发生在磁盘分区已满或文件系统已达到上限的情况下。 解决No space left on device”的方法有以下几种: 1.清理磁盘空间:删除不必要的文件、应用程序或其他数据,以释放空间。通过使用磁盘分析工具,可以了解哪些文件或文件夹占用了大量空间,然后进行删除或移动。 2.扩展分区大小:如果使用的是Linux操作系统,可以使用分区调整工具,扩展现有的分区大小。 3.移动文件到其他存储设备:将文件移动到其他存储设备上,例如外部硬盘驱动器,以释放空间。 4.清理日志文件:许多应用程序创建大量的日志文件,这些文件会占用大量的磁盘空间。可以使用合适的日志清理程序或手动删除这些文件。 5.升级硬盘或添加存储设备:如果以上方法都无效,可以将硬盘升级或添加其他存储设备。 最好的方法是根据自己的具体情况,采取正确的方法来解决No space left on device”的问题。重要的是要记得备份所有重要的数据,以防进行任何更改时出现意外的数据丢失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值