为什么创建的主目录比根目录大?

为什么创建的主目录比根目录大?

最近刚装好Ubuntu,按照网上的建议,把我的主目录建的比根目录大很多,但是发现系统自动安装的软件都放在根目录,占用了不少空间,而我的主目录几乎是空的。

我有点困惑为什么它实际上被创建得更大。软件应该安装在主目录中吗?我应该把从其他来源下载的预构建二进制文件的文件夹放在哪里?

答案1

在直接回答您的问题之前,必须明确目录和分区之间的区别。单个分区可以容纳多个目录。在 Linux 中,通常使用目录作为挂载点来挂载(使之可访问)包含文件系统的分区。因此,/home可以简单地将目录作为根目录 (/可以只是根 ( ) 分区或者 /home可能是单独分区的挂载点。您的问题在上下文中使用了“目录”一词,清楚地表明您的意思是“分区”。我澄清这一区别是因为这一区别对于回答您的问题很重要。事实上,还有另一个复杂因素,因为逻辑卷管理器 (LVM)使一个分区能够容纳挂载在不同位置的多个文件系统。不过,对于以下内容,我假设您不使用 LVM,因此“分区”和“文件系统”可以被视为同义词(交换分区除外)。

各个分区的最佳大小取决于您要在其中安装的内容。例如,使用单独的根 ( /)、/home和交换分区,但没有其他 (Ubuntu) 分区:

  • 如果安装很多软件,则需要/比安装少量软件时更大的根目录 ( )。即便如此,软件包的需求也很少超过 30 GB。
  • 一些非软件放在根目录 ( /) 中。此类别包括日志文件、数据库(通常放在 中/var)、Web 服务器的内容以及系统范围的临时目录 ( /tmp)。如果您对其中任何一项有很大的需求,则可能需要更大的根目录 ( /) 分区或将这些大目录的位置拆分到它们自己的分区中。/var如果您希望在其中存储大量文件(某些类型的网络服务器可能如此),您可以将 或其子目录拆分到其自己的分区中。对于桌面系统,对根目录 ( ) 的此类非软件需求/通常不大,但对于网络服务器来说,这些需求可能很大。
  • 对于典型的台式计算机,根目录 ( ) 上占用的空间/不会随着时间的推移而增加很多,因为个人文件不会放在那里 — 只有程序二进制文件、日志文件(会随着时间推移而轮换和删除)和其他系统文件。根目录 ( /) 占用空间增加主要是因为您安装了新软件。如果您安装了一个程序,然后发现您没有使用它,那么卸载它是值得的,特别是当根目录 ( /) 已满时。
  • 目录/home是绝大多数用户文件所在的位置。(一些临时文件存放在此目录中/tmp,但也有一些例外,其中至少有一个非常重要——请参阅下一个要点。)在仅安装 Ubuntu 的系统中,这意味着您的个人照片、MP3 文件、视频、文字处理文档、Web 浏览缓存等都存放在此目录中/home。因此,随着您使用计算机的时间推移,对 的空间需求/home往往会增加——您从此处复制数码相机中的照片,在此处添加音乐,在此处保存文字处理文档,等等。
  • 一个复杂因素是,许多 Ubuntu 安装都是在与 Windows 双启动的计算机上进行的。在这些系统上,大多数用户数据文件驻留在 WindowsC:分区上,而不是 Ubuntu/home分区中。如果继续这种模式,该/home分区将容纳相对较少的文件,因此可能应该小于根 ( /) 分区;或者可以完全删除它,将/home目录留在根 ( /) 分区上。

因此,如果 Ubuntu 是你唯一的操作系统,并且安装在现代硬盘甚至 SSD(200GB 或更大,通常超过 1TB)上,那么很有可能/home 应该比根 ( ) 大得多/

另一方面,如果您的磁盘按现代标准来说异常小,或者您使用 Windows 双启动,并且想要让大多数文件(尤其是大文件)都可以被两个操作系统访问,那么最好是省略一个单独的/home分区(将其文件留在根 [ /] 分区中作为简单/home目录)或保留一个相对较小的分区 - 甚至可能比根( )/home还小。/

还有一个值得一提的变体:在双启动配置中,专家通常更喜欢留出一个或多个单独的分区来保存操作系统之间共享的文件。也就是说,您将拥有 Ubuntu 根目录 ( /) 和可能的分区、用于保存 Windows 及其程序文件的/homeWindows分区,以及另一个用于保存共享文件的分区(可能在 Windows 和Ubuntu 中)。这样做的好处是,您可以限制Linux 对 Windows 分区的访问,从而降低错误或用户错误破坏 Windows 安装的可能性。您还可以完全重新安装 Windows,而无需擦除共享数据分区。您可以在共享数据分区上使用任何您喜欢的文件系统,只要两个操作系统都能理解它。NTFS 是最常见的选择,但如果您不介意它的局限性,您也可以使用 FAT;而且一些 Linux 文件系统有 Windows 驱动程序,因此如果您愿意,您可以使用其中一种。C:D:/home/{yourusername}/sharedC:

了解了这些一般性概念之后,考虑一些实际尺寸会很有帮助:

  • 根 (/-- Ubuntu 可以安装到最小约为 5 GB 的根 ( /) 分区,如果我没记错的话;但是,如果您开始安装大型程序,它很容易就会增加到该值的两到三倍。因此,通常建议的范围是 10-30 GB,但需要注意的是,对于某些用户来说,它甚至可能更高——但对于大多数“普通”用户来说,即使是 20 GB 也可能足够了如果你有一个单独的/home分区。
  • 交换-- 我并没有过多提及交换空间,但我会针对这个大小问题提及。在过去(大约 15 年前),一般建议将交换空间设置为 RAM 大小的两倍。如今,这通常是过度的。如果您使用挂起到磁盘(默认情况下未在 Ubuntu 中配置),交换空间应至少与可用 RAM 一样大。如果您不使用此功能,它可以小于这个值,但拥有一些交换空间是理想的,因为它使内核能够优化 RAM 使用以提高性能。还请注意,交换空间可以是文件系统上的文件,而不是(或除了)交换分区。(如果我没记错的话,挂起到磁盘需要交换分区。)总的来说,在大多数情况下,我认为一半的 RAM 大小可能对于交换分区来说是一个合适的大小。
  • /home-- 初步估计,一旦您确定了 root ( /) 和 swap 所需的空间,就应该将其他所有空间分配给/home。除非剩余空间非常少。例如,如果您使用 Windows 进行双启动,并且只想为 Linux 分配 30 GB,那么当您分配 20 GB 给 root ( /) 和 4 GB 给 swap 时,您几乎没有剩余空间。如果您在小型平板电脑或磁盘空间较小的旧计算机上进行安装,也会发生类似情况。在这种情况下,您不妨省略/home
  • 其他分区-- 在某些情况下,您可能需要其他分区,用于/var/tmp等。不过,这些对于典型的桌面配置来说并不是必需的。有时也需要较小的 (~500 MB)/boot和/或/boot/efi分区 -- 但如果您还没有这些分区并且您的系统正在启动,请不要担心它们。如前所述,您可能需要一个共享数据分区用于 Windows。如果您希望以这种方式共享大部分数据,您可以省略/home并将空间分配给共享数据分区。(您应该不是挂载 NTFS 或 FAT 卷,/home因为 Ubuntu 依赖这些文件系统未提供的功能来处理主目录中的某些文件。不过,您可以在主目录的子目录中挂载共享数据分区。如果您使用适用于 Linux 文件系统的 Windows 文件系统驱动程序,您也可以让 Windows 访问您的 Ubuntu/home分区。)

最后,设计一个优化的分区系统取决于您对自身需求、可用磁盘空间以及已使用内容(例如,由其他操作系统使用)的深入了解。如果您坚持使用 Ubuntu,您最终会自己弄清楚这一点;但没有一刀切的解决方案,所以我不能简单地给您一组数字。即使是应该大于/home还是小于 root ( /) 之类的一般性问题也会因安装而异——尽管当您按照我上面的概述进行操作时,如果/home小于 root ( /),则很有可能(但不是肯定)省略/home并增加 root ( /) 的大小会是最佳选择。

答案2

当前 Linux 发行版中的软件往往非常小。原因是软件的打包方式(使用aptrpm),所有软件都共享许多通用组件。

它与 OSX 或 Windows 不同,在 OSX 或 Windows 中每个软件都会安装所有必需的库。

如今,许多游戏管理器(如 Steam)和开发库(如 RVM)都会将数据和库存储在您的home文件夹中。此外,您可能还会拥有高质量的电影(约 5 GB)、图片(对于当前的手机来说非常大)和音乐。

我有一块 1 TB 的硬盘。我手动分区:只有 100 GB 用于根目录,只使用了 14.0%。在另一边(不包括swap),所有内容都是home文件夹,已占用 79%。

补充说明:这种软件包管理的缺点是,安装程序的创建者需要做更多的工作,因为需要调查发行版使用了哪个库以及确切的版本。为了模仿 OSX 和 Windows 的方式(即提供应用程序所需的完整库堆栈),一些 Linux 公司(如 Canonical 和 Red Hat)创建了新的软件管理器,例如扁平封装快照),具有一些优点,例如能够安装在不同的发行版中、使用沙盒环境等。

答案3

/您的系统上的 (根) 文件系统与备份文件系统相比有多大/home,很大程度上取决于您 (打算) 如何使用这两个文件系统。让我们看看下面的一些替代方案。

1 最常见的 Linux 桌面用例

绝大多数使用 Ubuntu 的人都会安装基本系统和一些应用程序(对空间的要求不高),例如用于网页浏览、媒体播放、办公效率、图形编辑或软件开发,并将其个人用户数据存储在/home文档、图像/照片、音乐或视频等中。

前者(Ubuntu 本身)的空间要求只需 20-30 GB 即可满足,而后者(用户数据)的空间要求则会迅速增加,尤其是多媒体内容,目前已达到 TB 级。

例如,在我的系统上有:

$ df -h /home ~/medien
Filesystem          Size  Used Avail Use% Mounted on
/dev/sda9           500G  264G  218G  55% /home
/dev/mapper/media   1,4T  1,1T  304G  78% /home/david/media

2 游戏台式机

游戏的变化相当大,因为大型游戏通常占用数 GB 甚至数十 GB 的空间1

在 Linux 上,游戏通常安装在以下位置之一:

  • /opt/usr/local通过“自定义”安装程序安装时,
  • /usr从软件包存储库2安装时,
  • $HOME/.local/share/Steam/SteamApps通过 Steam 安装到默认安装路径时,或
  • $HOME/.wine~/.PlayOnLinux/wineprefix通过 Wine 或其前端 PlayOnLinux 安装的 Windows 游戏。

根据这一点,Linux 游戏玩家的空间要求可能与上述情况 1 不同。

还有什么?

如果您的使用情况与上述情况有很大偏差,那么您很可能会在目录树的不同区域中拥有不同数量的数据,这意味着如果您在 Ubuntu 安装中使用多个文件系统,则对大小的要求会有所不同。

如今我更经常看到的另一种用途是 Google Chromebook 的功能:除了基本系统之外,系统上只有一个网络浏览器和文本编辑器、图像查看器和媒体播放应用程序,而其他所有内容(用户数据以及其他应用程序)都存储在线并通过网络浏览器访问。


1在 Linux 上;最近的 Windows 标题比它领先一个数量级。

2以这种方式分发的大型游戏并不多。我能想到的唯一大型游戏是公元 0 年时钟频率约为1.5 GB。

相关内容