即将在三星 M.2 硬盘上安装 Ubuntu 16.04。(使用 USB 驱动器)
我应该使用哪个文件系统?
- Fat32
- ext4
- 扩展
- 扩展2
- NTFS
- 还有一个我没提到的?
我的硬盘是:
1TB SAMSUNG SM961 M.2, PCIe NVMe (up to 3200MB/R, 1800MB/W)
如果它们都有效,哪一个是最快的?
对于害怕的新手有什么建议/陷阱吗:)
答案1
很简单。您可以使用最适合您操作系统的文件系统。对于大多数 Linux 发行版(包括 Ubuntu),这是:
ext4
NTFS 和 fat32 不适合 Unix/Linux 系统,因为它们缺少 Linux 所需的功能。对于需要从 Windows 系统访问的数据分区,它们可能是不错的选择。请注意,fat32 无法存储大于 4GB 的文件,但它是最兼容的选择。即使是旧的 DOS 也可以读取/写入 fat32。
ext2 和 ext3 基本上是 ext4 的前身。
顺便说一句,速度实际上与文件系统无关。硬盘和总线(连接、USB 端口)决定了文件操作的速度。
答案2
相当复杂。您提到的文件系统之间存在显著差异,而确定这些差异对速度的影响在我看来并非易事,并且取决于将要执行的操作。
首先,让我们放弃在 FAT 或 NTFS 分区上安装根文件系统的可能性。这些文件系统与 Linux 内核不完全兼容,并且 Linux 文件系统权限在它们上无法正常工作,因此您会遇到很多有趣的问题。
笔记:FAT32 是 USB 安装介质的不错选择,而 NTFS 是双启动(与 Windows)场景中不错的选择,适用于您想要用来存储个人资料(例如媒体库)的分区,Ubuntu(或任何其他 Linux 系统)和 Windows 都应该可以访问这些分区。只要正确安装,Linux 系统就可以读取(和写入)NTFS 分区,但 ext* 分区对于 Windows 来说并不容易读取(据我所知)。
ext* 系统设计用于 Linux 内核。在 Ubuntu 安装中使用 ext2、3 或 4 是完全合理的。它们之间最大的区别可能是
- ext2 是非日志式的
- ext3 具有日志功能,但其他方面具有与 ext2 类似的数据结构和功能
- ext4 具有日志功能,并且具有一些性能增强功能,包括与早期的 ext* 系统相比更快的块分配算法,尽管它具有相似的数据结构。
我认为,需要注意的是,速度并不是选择文件系统时的唯一考虑因素。Ext4 的限制比早期版本少,允许使用更大的文件系统、无限的子目录等。有些人认为 Ext3 更可靠、更安全,丢失数据的可能性也更小。我将尝试在这里重点介绍速度,同时仅提及性能之外最突出的方面。
等什么?日记?1
A日志文件系统简而言之,它会记录尚未写入文件系统主要部分的更改。这样做的目的是,在发生崩溃时,只需将日志与已写入主文件系统区域的内容进行比较,即可轻松检查文件系统的一致性。这意味着使用 ext3 和 ext4 检查文件系统的速度要快得多。此外,由于 ext4 允许标记未分配的块,因此可以跳过检查它们,从而使fsck
速度更快。
Ext4 还会对日志进行校验(写入时减少 I/O 等待时间),与 ext3 相比,整体速度略有提升。
检查文件系统一致性可能不需要经常进行,而日志记录需要付出代价——更多的磁盘写入。这不仅会缩短高速 SSD 的使用寿命,还会降低性能(写入需要时间)。不过,普遍的共识似乎是日志记录值得付出这样的代价。
ext4 的性能增强功能
Ext4 支持fallocate()
系统调用来为文件预分配空间。内核会分配一些块并将其标记为已初始化,而无需写入这些块,这比在旧文件系统中向空间写入零要快得多。
它还使用延迟分配(或刷新时分配) 会批量分配(而不是执行许多小的分配),从而倾向于减少 CPU 使用率并避免碎片化。
Ext4 向后兼容 ext2 和 ext3,这意味着 ext2 和 3 文件系统可以作为 ext4 安装,并且由于可以使用新块分配算法等一些功能而享受适度的性能优势。
其他文件系统
Ext* 并不是唯一完全兼容 Linux 的文件系统,尽管它们最为人熟知且测试最为严格。其他文件系统使用日志记录的替代方案,并具有可能影响性能的创新功能。文件系统例如,使用写时复制保存文件系统完整性的方法,而不是日志。它具有与 ext* 系统不同的数据结构。据我所知,Btrfs 并不比 ext4 提供更快的总体性能,但被认为特别适合照片视频文件的存档存储,因为它们不太可能遭受降级。它允许在使用时检查和清理文件系统一致性,这可能会节省时间,具体取决于您的使用情况。将来,Btrfs 或其他创新文件系统可能会得到进一步开发,以在总体速度上令人信服地超越 ext4。
结论
大多数追求良好性能的 Ubuntu 用户现在都会坚持使用 ext4……
1这个和其他 Linux 文件系统概念在了解 Linux 内核。