![磁盘使用情况和文件系统](https://linux22.com/image/1114027/%E7%A3%81%E7%9B%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E5%92%8C%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.png)
为什么根目录的磁盘使用率是 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 可用空间。