运行 Amazon Linux AMI。CloudWatch 似乎不检查可用磁盘空间。我有许多服务器,理想情况下不想为每个服务器配置邮件服务器、检查磁盘空间的脚本等。
有没有更简单的方法来做到这一点?
有一些程序可以使用树状图显示已用磁盘空间,例如 Windows 的 WinDirStat 和 KDE/Linux 的 KDirStat:

我正在寻找类似的东西,但要找一个无头的 Linux 机器。(例如,在服务器上运行控制台数据收集程序,然后在 GUI 环境中的图形程序中加载文件。)
或者,仅通过 SSH 访问即可获得结构化的已用磁盘空间表示的其他好方法是什么?
是否有关于在硬盘上留下多少可用空间的经验法则?我曾经听说你应该至少留出 5% 的空闲时间以避免碎片化。
[我知道答案取决于使用情况(例如:视频文件与文本)、磁盘大小、RAID 级别、磁盘格式、磁盘大小 - 但由于同一问题的 100 个变体是不切实际的,因此欢迎提供任何信息]
我的 ac:\ 正在填满的服务器上,很可能是由于多年来补丁的积累。
Microsoft PSS 支持告诉我,简单地删除 \Windows 目录中的压缩卸载目录是不明智的。考虑到我们有 100 台 Windows 服务器,这种分散的补丁占用了我们 SAN 上的大量空间(这些 Windows 服务器位于 VMWare 中)。
除了下面的列表,你能告诉我我还能做什么来清理 C:\ 驱动器上的空间吗?我希望你可能比我收到的建议有更多的洞察力。
不要在 C 驱动器上设置虚拟内存 pagefile.sys。(系统属性\性能设置\高级\更改虚拟内存)
清除临时文件(C:\windows\temp 和 C:\Users\%Username%\AppData\Local\Temp)。
不要在 C 盘设置临时 Internet 文件。(Internet 选项\浏览历史设置\移动文件夹)
移动 Windows 搜索服务数据库。如果您已启动 Microsoft 搜索服务,请将 Windows.edb 文件移动到另一个驱动器。
( C:\ProgramData\Microsoft\Search\Data\Applications\Windows )
压缩文件夹以节省磁盘空间并使用磁盘清理
使用挂载点挂载额外的驱动器。
“Compln.exe”只能用于清理Service Pack,例如(RTM 和SP1)。在您的系统 Windows Server 2008 r2 中,它不包含任何服务包。它无法清除系统中的补丁。
???(不知道这个想法是什么)“微软提供了内置工具——磁盘清理。(你需要安装一个名为“桌面体验”的功能才能获得磁盘清理。)”
还可以采取哪些其他措施来清理服务器并释放空间?
最后,对于您使用的任何版本的 Windows,了解您用于 c:\ 的驱动器大小会很好。
我正在寻找一个脚本/程序,它将显示前x 个最大的目录/文件,然后下降到这些文件夹并显示x 个最大的目录/文件以获得可配置的深度。
231MB bin
- 220MB ls
- 190MB dir
- 15MB def
- 3MB lpr
- 10MB asd
- 1MB link
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
几乎到处都是我抱怨日志失败的地方 No space left on device
Gitlab 日志:
==> /var/log/gitlab/nginx/current <==
2016-11-29_20:26:51.61394 2016/11/29 20:26:51 [emerg] 4871#0: open() "/var/opt/gitlab/nginx/nginx.pid" failed (28: No space left on device)
Run Code Online (Sandbox Code Playgroud)
Dovecot 电子邮件日志:
Nov 29 20:28:32 aws-management dovecot: imap(email@www.sitename.com): Error: open(/home/vmail/emailuser/Maildir/dovecot-uidlist.lock) failed: No space left on device
Run Code Online (Sandbox Code Playgroud)
输出 df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 7.8G 3.9G 3.8G 51% /
devtmpfs devtmpfs 1.9G 28K 1.9G 1% /dev
tmpfs tmpfs 1.9G 12K 1.9G 1% /dev/shm
/dev/xvdh btrfs 20G 13G 7.9G 61% /mnt/durable …Run Code Online (Sandbox Code Playgroud) 驱动器不断填满。您已经找到了所有可用的备用文件和随机文件。grep'd for coredump 文件,甚至删除了一些不需要的备份......
你的下一步是什么。
有问题的实际服务器有 10GB 的网站文件,而操作系统不应占用超过 10GB 的空间,那么您如何追踪 50GB(虚拟)驱动器中的内容?
linux command-line-interface disk-space-utilization capacity
在我们的生产服务器上,根挂载点有一个小驱动器/,
/var/log占用了太多空间,我必须手动删除一些文件。我怎样才能/var/log/在/home/log不重新启动的情况下移动?
这是我想到的事情:
$ mkdir /home/log
$ rsync -a /var/log /home/log
$ mount --bind /home/log /var/log
$ /etc/init.d/rsyslof restart
Run Code Online (Sandbox Code Playgroud)
但我知道有些服务使用文件描述符,所以他们会继续使用/var/log或 inodes。
我们有一个内部网络服务器(虚拟化,托管 ReviewBoard,但不是超级相关),我们有一个相对一致的失败模式,失败的 NFS 挂载导致 / 被填满。Distro 是 Ubuntu(不要问)如果一个解决方案依赖于不同的发行版,它的实现会更慢。
正在对 /mnt/backup/ 执行备份,这应该是将 NFS 挂载到另一个系统。不幸的是,当挂载失败或掉线时,会在根文件系统上执行备份,正如您想象的那样,在 / 已满之前不会花很长时间,然后服务开始失败。
已经讨论了许多可能的解决方案。
监视 /mnt/backups 并确保它不是 root。也许是一项 cron 工作。
使用 /mnt/protected/backups,并首先将 /protected 挂载到一个小文件系统,也许是一个循环挂载到本地文件,这样它就不太可能失败。
chmod a-rwx /mnt/backups(根文件系统挂载点)。我不确定安装在受保护的导演上是否可行,我认为确实如此。
在挂载的树上创建一个名为“Backups”的目录,然后软链接“ln -s /mnt/backup/Backups /Backups”。除非挂载 /mnt/backup,否则使用 /Backups 进行备份将失败,因为本地树不包含子目录。
执行检查目录是否正确安装在备份脚本中。
我对这些方法的任何反馈、利弊或人们用作保护根文件系统免受此类恶意行为的标准方法的任何其他技术感兴趣。
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 220G 220G 0 100% /
none 1.9G 168K 1.9G 1% /dev
none 1.9G 0 1.9G 0% /dev/shm
none 1.9G 52K 1.9G 1% /var/run
none 1.9G 0 1.9G 0% /var/lock
none 1.9G 0 1.9G 0% /lib/init/rw
none 220G 220G 0 100% /var/lib/ureadahead/debugfs
Run Code Online (Sandbox Code Playgroud)
虽然在似乎很长一段时间后惊慌失措地寻找答案,但使用减少了
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 220G 9.3G 200G 5% /
none 1.9G 168K 1.9G 1% /dev
none 1.9G 0 1.9G 0% /dev/shm
none 1.9G 52K 1.9G 1% …Run Code Online (Sandbox Code Playgroud) linux ×6
filesystems ×2
hard-drive ×2
amazon-ec2 ×1
backup ×1
capacity ×1
debian ×1
defrag ×1
log-files ×1
mount ×1
ubuntu ×1
windows ×1