磁盘使用情况和文件系统

磁盘使用情况和文件系统

为什么根目录的磁盘使用率是 100%,而其子目录却不是?空间是按每个目录分配的吗?在下面的例子中,它显示根目录的使用率为 100%。这是否意味着如果我尝试将内容添加到非根目录之一,它应该可以工作,但如果我尝试添加到根目录,它就不会工作?我原本以为 100% 的使用率是所有目录加起来的总和,但正如下面的例子所示,情况并非如此:

$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/eubuntu10x32-root
                      3.5G  3.3G     0 100% /
none                  1.5G  180K  1.5G   1% /dev
none                  1.5G     0  1.5G   0% /dev/shm
none                  1.5G   40K  1.5G   1% /var/run
none                  1.5G     0  1.5G   0% /var/lock
none                  1.5G     0  1.5G   0% /lib/init/rw
none                  3.5G  3.3G     0 100% /var/lib/ureadahead/debugfs
/dev/sdb               50G   27G   21G  57% /home
/dev/sda1             228M   35M  181M  17% /boot

感谢您对文件系统中磁盘使用情况的解释。

答案1

文件系统和挂载点

你错过了 Ubuntu/Linux 处理文件系统的一个非常重要的方法:一切都归结为同一个根(/),其他文件系统(“卷”、“磁盘”、“分区”)将安装在某个位置里面根。

解释一下最有趣的两行:

  • 你的/ 满的:

    /dev/mapper/eubuntu10x32-root   3.5G  3.3G     0 100% /
    

    在这里,您会看到一个用于根文件系统的“设备映射器”元设备。我认为您在这里使用的是 LVM 或加密。

    /对于桌面安装来说, 3.5GiB 的容量非常低,除非您将诸如 之类/usr的目录/var移出。对于您来说,这显然不够。

  • 您的第二个磁盘(sdb,没有分区)安装在/home,并且 的分区sda安装为/boot

    /dev/sdb               50G   27G   21G  57% /home
    /dev/sda1             228M   35M  181M  17% /boot
    

    这种分离/boot对于 LVM/加密安装来说很常见,以允许引导加载程序(Grub)加载相关软件/驱动程序,以便能够访问其他文件系统以实际启动操作系统。

因此,基本上,你的/home/boot不仅仅是目录。它们是/文件系统上的目录,但挂载了另一个文件系统在上面的容量。这意味着,无论何时深入其中,您都会看到不同的文件系统。每个文件系统都有自己的容量,以 列出df

虽然您移出了/home/boot,但这不足以在 上提供足够的可用空间/。解决方案:扩大文件系统,将更多类似或 的/文件系统移出到另一个文件系统。/usr/var

所有目录都在/挂载点下吗?

不是挂载点的目录是挂载为的文件系统的实际常规目录/。还有一些特殊的目录,它们实际上并不代表磁盘上的数据,但在 UNIX/Linux 中,一切都以文件形式呈现例如套接字,内核接口(/proc/sys)等,甚至目录本身也是文件。

这与 Windows 相比如何?

Windows 倾向于隐藏设备/分区与实际安装的文件系统之间的差异。这意味着C:“驱动器”也可以这样安装。在 Ubuntu/Linux 中,您会看到分区,例如/dev/sda1(第一个分区sda)可以安装(向用户提供内容)任何位置。没有第二个根目录,因为 Windows 会将第二个驱动器设为D:

答案2

Linux 的工作方式与 Windows 略有不同。您有一个“根文件系统”,即您已安装(指向)名为 的目录的磁盘/。但其他光盘(例如您的/home光盘)可以位于那里。在 Windows 中它们位于 和,c:\d:\在 Linux 中,它们位于称为“安装点”的“子目录”中。

因此,尽管您使用的磁盘/可能已满,但如果您安装一个空的 TB 磁盘,/home它将是空的。

这也意味着如果您有足够的空间,/home您就无法将文件添加到/otherdir:该文件将被添加到分区上的实际子目录中/

答案3

如图df所示,/dev/mapper/eubuntu10x32-root安装在/(文件系统的根目录)上。

显示的其他“文件夹”df并不是真正的文件夹,而是所谓的“挂载点”。

例如,

  • 真实的/dev/mapper/eubuntu10x32-root装载于的分区/已满。

  • 真实的/dev/sdb安装在的分区/home未满 (57%)。

问题是你不能直接访问这些磁盘分区。因此分区必须安装在某些安装点(文件夹)上。例如,文件/home夹被称为安装点,因为/dev/sdb物理磁盘“链接”到此文件夹。

这意味着当你写入某些内容时/home,你的数据实际上被写入/dev/sdb不是 /dev/mapper/eubuntu10x32-root。3.5G 对于根分区来说太小了,并且您没有足够的空间,但是您仍然可以在主目录中写入,因为其中有 21G 可用空间。

相关内容