有没有办法告诉内核现在返还可用磁盘空间?就像在 /proc/ 中写入内容一样?使用 Ubuntu 11.10 和 ext4。
这可能是一个古老而重复的主题。只有当我的编辑器无法保存我打开的源代码文件时才注意到 0 空间后,令我恐惧的是文件夹列表中现在有 0 字节大小,我继续疯狂删除。
我从用户和 root 中删除了 100 MB 的大文件,并且还做了一些硬链接。
就在我这样做之前apt-get clean
,/var/cache/apt/archives 中有超过 900MB,现在只有 108KB:
# du
108 /var/cache/apt/archives
Run Code Online (Sandbox Code Playgroud)
一个小时后仍然没有可用空间并且无法保存我在编辑器中打开的宝贵文件,但请注意以下差异:
# sync; df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 13915072 13304004 0 100% /
Run Code Online (Sandbox Code Playgroud)
有什么建议?我关闭了一些服务/进程,但不确定如何检查谁可能正在积极占用磁盘空间。
更多信息
# dumpe2fs /dev/sda4
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 884736
Block count: 3534300
Reserved block count: 176715
Free blocks: 422679
Free inodes: 520239
First …
Run Code Online (Sandbox Code Playgroud) 是否可以列出硬盘驱动器上最大的文件?我经常df -H
用来显示我的磁盘使用情况,但这只会给出已满的百分比、剩余的 GB 等。
我进行了大量数据密集型计算,其中包含大量小文件和极少数非常大的文件。由于我使用的大部分磁盘空间都在极少数文件中,因此很难追踪这些大文件的位置。删除 1 kB 文件不会释放太多空间,但删除 100 GB 文件可以。有没有办法根据大小对硬盘驱动器上的文件进行排序?
谢谢。
du
并df
做相当相似的事情,所以我总是发现自己打错了。
我想如果我知道“du”和“df”代表什么,它可能会更容易记住使用哪个。
有什么方法可以区分这两者,以便我记住哪个执行哪个操作?
我有一个 btrfs 分区。当我运行时df -h
,它显示:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 113G 101G 8.3G 93% /home
Run Code Online (Sandbox Code Playgroud)
这是为什么?是因为 ext2/3/4 为 root 保留了空间吗?或者是别的什么?如果是前者,我该如何更改它并回收那些 4GB ?
根据btrfs wiki,我知道元数据存储了两次,这会增加“已使用”数据的大小:
user@machine:~$ df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 894G 311G 583G 35% /
^^^^
user@machine:~$ btrfs fi df /
Metadata: total=18.00GB, >>used=6.10GB<< *2= 12.20GB
Data: total=358.00GB, >>used=298.37GB<< *1= 298.37GB
System: total=12.00MB, >>used=40.00KB<< *1= 0.00GB
== 310.57GB
~~ 311 GB
Run Code Online (Sandbox Code Playgroud)
但这仍然不能解释为什么Used + Avail < Size。
是否有任何常见的 Linux 工具可以随时间跟踪磁盘空间,而不仅仅是整个文件系统,但例如,这样我就可以轻松查看历史上哪些目录树膨胀和收缩?发生该问题上似乎保持击球尽管缓存和TMP文件,日常房子清洁0可用空间的服务器日志等等。我已经使用像工具df
,du
并lsof
经常和调度at
工作超过一定尺寸/类型低时发现旧文件水印被击中等。
最好是 Debian/Ubuntu 软件包。
这是一个 RHEL 服务器,我在它上面运行一个 MySQL 服务器,数据库和日志文件(但是,日志被禁用)位于/srv
有足够空间可用的目录中。
最近我有一个崩溃的表,所以我尝试修复它,但第二天我发现 MySQL 无法响应许多查询,并显示一个错误,表明没有磁盘空间:
ERROR 1030 (HY000): Got error 28 from storage engine
Run Code Online (Sandbox Code Playgroud)
所以我运行以下命令来查看什么占用了空间
[root@tms /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server-slash
9.9G 9.5G 0 100% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
/dev/sda1 485M 58M 402M 13% /boot
/dev/mapper/server-var
739G 252G 450G 36% /srv
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是它是/
目录。但更令人惊讶的是,在该目录/
并不表示已用空间超过2 GB,而df
节目总面积9.9 GB的/
。
[root@tms /]# du -sh /*
7.5M /bin
48M /boot
200K …
Run Code Online (Sandbox Code Playgroud) 我想看到的是df /
每 30 秒发布一次后的 %,但在前一个数字之后的同一行上。
所以最终的输出将是 86% 86% 86% 87% 87% ......
可以是一行代码吗?还是多行“程序”?
在 chroot 中安装 gentoo 我发现命令像mount
并且df
不起作用:它们尝试读取文件/etc/mtab
(当然是空的)。
我可以(以备将来使用)设置甚至重新编译它们,以便它们不会读取/etc/mtab
,从 获取所有需要的信息/proc
吗?
df -h | grep test | sed -e 's/*%.^ //g;s/.*[ ^I]//'
Run Code Online (Sandbox Code Playgroud)
输出:
/测试 /测试/驱动器0 /测试/驱动1
df -h | grep test | cut -d '%' -f1 | sed -e 's/*%.^ //g;s/.*[ ^I]//'
Run Code Online (Sandbox Code Playgroud)
输出:
10 20 15
我想知道如何加入这些输出:
/测试 10 /测试/drv0 20 /测试/驱动器1 15
有人能帮我吗?
Var 在 Nagios、Puppet 和 LVM 工具(pvs、vgs 等)等许多应用程序中显示为完整
df -h 输出
6.0G 4.3G 1.4G 77% /var
Run Code Online (Sandbox Code Playgroud)
视频输出
/var/lock/lvm/V_rootvg:aux: open failed: No space left on device
Can't get lock for rootvg
Skipping volume group rootvg
Run Code Online (Sandbox Code Playgroud)
lsof +L1
var 下不再显示任何内容,因此我认为没有尚未从/var
文件系统中清除的未链接文件。我不明白为什么 6G 文件系统上的 1.4G 免费被认为是满的。我知道系统在每个文件系统上都保留了一些空间,但这不可能,空间太大了。文件系统ext3
在 Red Hat 5 上。
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: c8f44510-e8f7-4e2e-950a-1410b069910e
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype …
Run Code Online (Sandbox Code Playgroud) df ×10
disk-usage ×4
ext3 ×2
filesystems ×2
proc ×2
awk ×1
btrfs ×1
ext4 ×1
grep ×1
linux ×1
maintenance ×1
mysql ×1
rhel ×1
sed ×1
shell-script ×1
ubuntu ×1