在20.04版本中,是否需要有/home和/swap分区是必要的吗?

在Ubuntu Desktop 20.04中,是否需要有一个/home分区?我在某个地方读到了关于/root分区中home文件的内容... /swap分区也是一样吗?
能否有人为新用户和有经验的用户设置指南,以便让这些信息对许多人都有益。

@user535733 我有16GB的RAM。我只用它来探索。我的主要操作系统是Windows 10。在Windows中,无论我打开多少应用程序,我从来没有使用超过50%的RAM。 - VidathD
@user535733 我想设置双系统启动。如果我按照你建议的默认设置进行,30GB的根分区是否足够。此外,Ubuntu没有给我安装在Windows旁边的选项。所以,我可以在"其它选项"中只创建一个大小为30GB的"/"分区并继续操作吗? - VidathD
@user535733 好的,谢谢。但是我似乎已经尝试了那些问题中提到的所有方法。你能帮我吗?聊天吗? - VidathD
1什么品牌/型号的系统?什么样的显卡/芯片?有些需要设置。只能使用Windows来缩小NTFS分区并重新启动以运行chkdsk。然后使用gparted或在安装过程中创建/(根目录),可选地创建/home。确保关闭Windows快速启动功能。http://askubuntu.com/questions/843153/ubuntu-16-showing-windows-10-partitions和https://askubuntu.com/questions/145902/unable-to-mount-windows-ntfs-filesystem-due-to-hibernation UEFI安装:https://help.ubuntu.com/community/UEFI和https://askubuntu.com/questions/221835/installing-ubuntu-on-a-pre-installed-windows-10-with-uefi - oldfred
@user535733 我已禁用安全启动,并且20.04支持UEFI,所以即使启用了安全启动,一切都应该正常工作。我还禁用了快速启动和休眠。只使用“其他”选项进行安装是否安全? - VidathD
2一个/home分区可以在主要安装出现问题时保护您的个人数据。我已经使用Linux作为我的主要桌面系统20年了,而且一直将/home分区单独保存。 - chrylis -cautiouslyoptimistic-
zram比交换文件或分区好得多。Chrome OS、Android和许多Linux发行版(如Fedora或Lubuntu)已默认启用它。Windows和macOS也默认使用类似的压缩技术。 - phuclv
@phuclv 不需要。我从来没有达到RAM限制。 - VidathD
@SasukeUchiha 在这个意义上,你也不需要交换文件或分区。你应该始终有某种形式的交换空间,而zram是最好的一种。它就像一个交换文件/分区一样存在,并且只在你需要时消耗内存。请参考https://unix.stackexchange.com/q/499485/44425。 - phuclv
我在90年代涉足系统管理时学到的“内存是交换空间的两倍”规则很可能源于这样一个事实:只使用必要的内存才能避免痛点。随着工作负载的变化,内存和磁盘的速度也大大提高了。如果你的工作负载从不使用超过RAM容量的内存,那么你就不需要它。请注意,通过这种方式安装程序可以保证在单独的分区中拥有启动所需的文件,以确保在所有计算机上都可以访问。 - Thorbjørn Ravn Andersen
5个回答

/home分区:从来都不需要单独的/home分区。它一直是可选的。
Ubuntu安装程序有着经过深思熟虑且非常合理的默认设置,可以为新用户和/或非技术人员创建一个可用的系统。这个默认设置不会创建单独的/home分区。
有些人喜欢单独的/home分区,而其他人则不喜欢。 /swap分区:自18.04版本以来,在大多数桌面环境中,单独的swap分区已被根(/)分区内的swap文件所取代。对于大多数新的桌面用户,不再推荐使用单独的swap分区。在服务器上,swap稍微复杂一些;对于一些高级用途(如非ext文件系统),建议使用swap。 给新用户的建议:在第一次安装时,尽量遵循安装程序的默认设置。专注于使您的第一次安装成功,而不是完美。您随时可以重新分区/重新安装更复杂的系统——Ubuntu使这变得容易。

如果我不创建一个单独的/home分区,那么根分区的大小应该是多少? - VidathD
问题已编辑以包括交换。 - VidathD
回答已编辑以包括交换。 - user535733
请将所有空间分配给 / @SasukeUchiha - eckes
5不是所有的文件系统都支持交换文件。BtrFS最近才开始支持(内核5.0),而ZFS则不支持。如果您在ZFS上创建根分区,则应创建交换分区,而不是交换文件。 - Syfer Polski
1@SyferPolski 为了回应您的评论,我进行了编辑。 - user535733
休眠模式在使用交换文件时是否仍然正常工作,还是需要额外的魔法操作? - Simon Richter
3@SasukeUchiha,如果你没有独立的/home、/usr或/var分区,就将整个磁盘指定为/root。 - Lenne
通常情况下,您不希望用户完全填满系统分区,而通过单独的/home分区很容易实现这一点。如果您是唯一的用户,这可能不是一个问题。 - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 以“我是一个经验丰富的用户,所以我永远不会犯错(或安装一个会犯错的应用程序)”这种论点总是让我感到紧张。人非圣贤,孰能无过(而计算机可能犯错更严重)。 - Dan Is Fiddling By Firelight
@dan 嗯,这取决于你的优先事项。对于爱好来说,你的时间是自由的。就个人而言,我更喜欢按照安装程序建议的方式进行操作,并在必要时调整硬件。但是,无论如何你都需要学习。 - Thorbjørn Ravn Andersen
7@Lenne 你是指 /,而不是 /root 对吧?事实上,/root 绝对不应该是独立的分区,它存在的唯一原因就是为了让 ~root 在根分区上。 - vikarjramun
@vikarjramun,当然你是对的。关于/ - Lenne
我从8.04开始使用Ubuntu,并且一直都有设置交换分区。很长一段时间以来,我总是将Home放在一个单独的磁盘上。我的问题是,我能否只删除我在最后一次安装中创建的交换分区?我玩一些需要一些内存的游戏,并计划在Twitch上进行直播,所以也许我还是需要它。 - userDepth
@user使用free命令来跟踪你的交换空间使用情况,持续几天或几周。这样你就会知道是否需要使用交换空间了。 - user535733

在20.04版本中是否需要有一个/home和swap分区?
当然不是。你可以坚持使用默认设置,即一个单独的分区来存储你的文件,也许还可以再创建一个用于交换的分区。在一些最近的Linux发行版中,交换操作会发生在一个交换文件中(这样稍微效率低一些,但更加方便,因为你不需要为交换专门创建一个独立的磁盘分区)。请参考swapon(8)mkswap(8)以及底层的swapon(2) 系统调用。如果你感兴趣,可以阅读关于虚拟内存文件系统页面缓存以及一些操作系统教材的内容。

一个敏锐的读者可能希望拥有不同的/home/分区,以便在不丢失数据的情况下随后轻松更改他/她的Linux发行版(例如Debian或Fedora)。这并非必要,但可能会有用。

在所有情况下,不要忘记备份您的重要数据(最好在不同的介质上或某个远程服务器上进行备份)。硬盘可能会损坏,而且您一定会犯错误。您甚至可以自动化备份(例如使用crontabrsync)。


对于Windows用户来说,创建一个单独的主目录分区有点类似于将大文件(如媒体文件)放在硬盘上,而将其他文件放在固态硬盘上,对吗? - Captain Man
@CaptainMan 没错,这就是让我感到困惑的地方。无论如何,当计算机处于休眠状态时,Windows 把文件保存在哪里呢? - VidathD
Windows在系统分区(c:\hiberfil.sys)上有一个隐藏的休眠系统文件。 - eckes
1@eckes 为什么Ubuntu不能有类似的东西呢? - VidathD
@SasukeUchiha 如上所述,交换可能是一个文件而不是一个分区。 - Hagen von Eitzen
@HagenvonEitzen 但是你不能使用交换文件来进行冬眠,对吗? - VidathD
不太确定为什么拥有额外的文件会更好,它会占用文件系统的双倍空间。 - eckes
我必须说,使用 Snaps 并拥有一个独立的 /home 分区以及一个小型 SSD(仅 100GB)是一场绝对的噩梦,因为无论你将根分区设置多大,几个月后它都会被 Snaps 填满。这绝对不适合初学者。 - Rabbit

注意:我将把/分区称为/root,以使其更清晰明了。

对于新用户(简单成功安装)

你需要一个单独的/home分区吗? 绝对不需要。/home分区是存储个人文件(文档、下载、图片等)的地方。如果你不创建一个单独的/home分区,这些文件将保存在/home/用户名文件夹中。所以如果这是你第一次安装Ubuntu,请不要把它弄得太复杂,也不要为/home创建一个单独的分区。当你更有经验和信心时,可以尝试这样做。 你需要一个单独的/swap分区吗? 嗯,这取决于情况。如果你想要休眠功能,你将需要一个单独的/swap分区(见下文)。/swap被用作虚拟内存。当你的RAM用完时,Ubuntu会使用它来防止系统崩溃。然而,新版本的Ubuntu(18.04之后)在/root目录下有一个交换文件。有一种绕过方式可以使用swapfile来实现休眠,但不建议新用户这样做(如果你想了解详情,请参考下文)。所以你不需要一个单独的/swap分区。
所以我对新用户的建议是,在你熟悉Ubuntu并对其使用充满信心之前,坚持使用安装程序中的默认设置,并选择“擦除磁盘并安装Ubuntu”选项(如果你是双启动,则选择“与您的操作系统一起安装”选项)。

对于有经验/自信的用户(“完美”安装)

如果您有经验并且自信,最好为至少/home设置一个单独的分区。如果您不使用休眠功能,则不需要单独的/swap分区。即使您想要使用休眠功能,也有一种解决方法可以使用交换文件

以下是推荐的分区设置:

  • / 根目录:您安装的所有软件都存储在这里

    • 大小:最小10 GB(建议25+GB recommended。我有40GB)
    • 新分区类型:主分区
    • 新分区位置:在此空间的开头
    • 用途:ext4
    • 挂载点:选择“/”
  • /home 只有在您想将个人文件与根分区(/)分开保存时才需要

    • 大小:剩余空间或任意大小
    • 新分区类型:主分区
    • 新分区位置:在此空间的开头
    • 用途:ext4
    • 挂载点:选择“/home”
  • /swap 只有在您想要休眠时才需要

    • 大小:取决于您的RAM。[请参阅Swap FAQ][2]
    • 新分区类型:主分区
    • 新分区位置:在此空间的开头
    • 用途:swap
使用swapfile来解决休眠问题的方法:如何使用swapfile进行休眠

4不正确。现在swap是一个文件,而不是一个分区。请不要使用/ Root/ Swap/ Home。使用//swap//home/来表示目录。 - Rinzwind
@Rinzwind 但是如果你喜欢的话,你可以有一个单独的交换分区,对吧?请编辑并进行你建议的更改。我现在的Wi-Fi速度非常慢,加载需要很长时间。 - VidathD
对于有经验的用户来说,建议使用LVM,并且最初只分配所需空间,将大部分物理卷保留未分配。即使是根分区在当前的grub中也可以作为逻辑卷正常工作,不会出现任何问题。当文件系统趋于满或需要新的独立文件系统时,可以添加或在线扩展逻辑卷,而无需移动分区甚至重新安装系统。缺点是安装程序对LVM支持较差,因此仅适用于有经验的用户。 - Juergen

是否要单独设置一个/home分区是可选的。这样可以在重新安装操作系统(Ubuntu)时不会丢失数据和配置文件。除此选项外,还有其他用途。

Ubuntu默认在/分区中创建一个"home目录"。没有单独的/home分区也是可以的。但无论如何,请备份重要文件。

交换分区/文件是为了休眠功能所需。SwapFaq页面显示了需要多少空间来设置交换分区。


我在“主目录”几乎不会保存任何文件。我会将所有个人文件保存在一个与Windows共享的独立NTFS分区中。 - VidathD
@SasukeUchiha 那你就不需要一个 /home 分区了。使用默认设置应该没问题,就像 @user535733 提到的那样。 - Mido
@SasukeUchiha 暂停从未使用过交换,你可能在想休眠模式。 - Izkata
那个常见问题解答似乎并不是特别有用。为什么你想要一个1TB的交换分区呢?(除非它提到了内核崩溃转储,这可能是需要与RAM大小相似的交换空间的唯一原因)。通常我会建议至少有1GB的交换空间,使用与RAM大小相同的交换空间直到32GB以上,而超过32GB的RAM则不需要更多的交换空间。 - eckes
你没有500GB或1TB的内存(除非你是来自2035年的访客),为什么你会有一个1TB的交换分区? - Rabbit
SwapFaq只是一个指南。我将其包含在内是为了教育目的。前几行足以帮助设置交换分区。虽然我不知道为什么FAQ提到了1TB的事情,但OP不会费心质疑如此巨大的交换大小。 - Mido

对于是否需要单独的/home分区和交换空间取决于您的使用场景。
当您通过Samba或其他类型的文件共享让多个用户访问时,建议使用一个单独的/home分区,以防止它们填满根分区(这可能导致其他问题)。在空间有限的单用户系统上,比如我的工作笔记本电脑,我只使用一个较大的根磁盘;如果它被填满,只会影响到我自己,并且我更愿意有自由下载100GB的数据到我的/home下的Downloads文件夹,另一天再下载100GB的Docker容器放在/var目录下。对于服务器,为了隔离目的,我可能会将所有这些(/home,/var,/var/lib/docker)放在单独的分区中。
现今,交换空间往往被交换文件所取代。除了用于交换/分页外,交换空间还用于桌面/笔记本安装中的休眠功能。与分区相比,交换文件的性能稍逊,但在大多数安装中几乎不可察觉,并且使用交换文件使您能够根据需要使用更多或更少的交换空间,而不是将硬盘的一部分专门用于交换空间。
但是你真的需要交换空间吗?如果你有足够的内存,你可以不用它。只要注意当内存满了时系统会杀掉进程。如果你想尝试,你可以使用swapon/swapoff命令来打开和关闭交换使用。
值得注意的是,一些软件(例如Kubernetes)会自己管理内存,并明确地不希望有交换空间-如果有可用的交换空间,它将不会启动。

系统共享的情况是否最好通过某种配额执行来解决?否则,即使这对系统管理员来说可能更方便一点,用户仍然可以填满/home分区并使系统对其他人不可用。 - IMSoP
我有一块SSD。所以它本身就非常快。此外,我的SSD是256GB,其中大约有150GB用于Windows系统,40GB用于共享分区。我的当前交换文件只有1.7GB,并且似乎从未被使用过。而且,我似乎从未超过15%的内存使用率。 - VidathD
最近我不小心把咖啡洒在了一半的内存上,导致它坏掉了。现在我只剩下4GB的单通道内存,所以对我来说,拥有交换分区是绝对必要的。实际上,我开始怀疑在咖啡洒出之前内存可能就已经损坏了,因为电脑一直频繁卡顿,而当时我没有设置交换分区,也从未想过要检查可用内存(free -m)。 - Rabbit
@IMSoP我绝对不会在根目录上设置配额管理。将文件放在单独的驱动器上要比任何配额管理更重要。但是,再次强调,这取决于使用场景。 - rln
1@rln 我不明白,一个目录所在的驱动器/分区与如何管理其配额之间有什么关系? - IMSoP