磁盘大小管理

磁盘大小管理

我使用的是 Fedora 16。我的 /dev/sda2 挂载在 /(root)上,大约 50G 已填满 100%:

[foampile@~ 13:13:39]> df
Filesystem     1K-blocks     Used Available Use% Mounted on
rootfs          51606140 49025452         0 100% /
devtmpfs         2988452        0   2988452   0% /dev
tmpfs            2999424       96   2999328   1% /dev/shm
/dev/sda2       51606140 49025452         0 100% /
tmpfs            2999424    51992   2947432   2% /run
tmpfs            2999424        0   2999424   0% /sys/fs/cgroup
tmpfs            2999424        0   2999424   0% /media
/dev/sda1          99150    79569     14461  85% /boot
/dev/sda5      247972844 10782056 224594412   5% /home

Q1: 有没有一个命令,或者ls的选项,可以递归地列出一个目录下的所有文件,并按大小降序排列?我想查看哪些文件/目录正在占用设备。

Q2: 我的/home 比较不用。有没有办法重新分区磁盘并将一些磁盘空间从 /dev/sda5 (/home) 切换到 /dev/sda2 ?

谢谢

答案1

rootfs 的 50GB 是巨大的,最好检查一下文件系统为何被填满,而不是盲目地扩展它。如果您只是扩展根文件系统,它很可能会在短时间内再次填满。我希望 /var、/var/log 或 /tmp 被填充。

根据我的经验,这通常是由大量相对较小的文件引起的,因此最好以手动和结构化的方式进行。下面的方法可以让您找到单个大文件或包含大量小文件的目录。

sudo -i
cd /
du -sxh * | sort -h
  • du列出磁盘使用情况

    • -h采用人类可读格式的打印尺寸(例如,1K 234M 2G)
    • -s仅显示每个参数的总计
    • -x用于跳过不同文件系统上的目录
  • sort -h使最大的目录出现在最后。

现在调查最后(几个)目录:

cd the_large_diretory

并重复

du -sxh * | sort -h

直到找到包含大文件的目录。最后您可以使用以下命令检查目录的内容:

cd the_large_directory
ls -hlrS
  • ls列出目录的内容
    • -h以“人类可读形式”显示文件大小
    • -l显示文件详细信息
    • -r反向排序(最大的文件最后)
    • -S按文件大小排序

笔记

  • 如果您的系统上的任一命令du或命令sort不支持该-h标志,则只需使用du -sxk * | sort -n.输出是相似的,只是由于数字太长而难以阅读。
  • 如果ls您的系统不支持该-h标志,则跳过它,它不是必需的,但可以提高可读性。
  • 如果ls您的系统不支持该-S标志,请将输出通过管道传输到sort -nk5

答案2

Q1.尝试类似的东西sudo du -a -m -x | sort -k1n -r | head -n40。标志-atodu表示是递归的。该-m标志显示大小(以 MB 为单位)。保留-x在单个文件系统上。这将列出文件和目录,并且仅列出最大的 40 个(因为 选项-n40head。某些du实现可以-t SIZE选择仅显示大小超过 SIZE 的条目。

要仅列出文件,您可以尝试类似:find / -xdev -type f -size +1M -ls。这将仅列出同一文件系统上/大小超过 1 MB 的文件。

Q2。几乎可以确定。但您应该单独询问这个问题,或者搜索(此处或其他地方)“linux”和“repartition”等关键字,因为我经常看到它被讨论。以下是该网站之前的一些问题:

答案3

A1: ls -larS / | head -50

A2:是的,但是调整 /home 大小时要小心,确保强制进行磁盘检查和备份

e2fsck -f /home

然后

resize2fs /home 50G

相关内容