文件系统
(本文译自本站英文版)
本文包括有关文件系统和分区的高级内容。
文件系统是“数据如何被写入存储设备的分区上”。
Windows, macOS/OSX 和 LEDE (Linux) 使用不同的默认文件系统,而且并不是所有文件系统都能被同样完好的读取(如果有的话)。
LEDE 是一个 Linux-based 系统,所以它可以读写被写入 Windows 和 macOS 文件系统中的数据,相较于从 Linux 原生的文件系统中读写数据,它可能更慢,有更多的限制,以及更加不可靠。所以如果你想足够好的传输数据,并且存储设备永远在你的 LEDE 设备上使用的话,推荐使用原生的 Linux 文件系统。
如果你想了解的话,出现这种性能和可靠性方面问题的原因是:专利、商业机密以及其他一些问题阻碍了第三方使用 Windows 或 Apple 文件系统。
目前支持的文件系统
要查看当前安装的固件可以读取哪些文件系统的话,请输入 cat /proc/filesystems
.
这是一个来自于 LEDE x86 虚拟机的示例输出,它可以阅读许多文件系统,因为对于这个目标来说,空间不是问题。
对于大多数设备来说,你必须选择你需要访问的文件系统,并且为它安装相应的文件系统驱动软件包。
nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev tmpfs nodev binfmt_misc nodev debugfs nodev sockfs nodev bpf nodev pipefs nodev devpts ext3 ext2 ext4 squashfs nodev overlay btrfs f2fs xfs vfat
LEDE/Linux 文件系统
设置 ext4
这个命令会下载创建和修复 ext4(及老版本)需要的工具:
opkg install e2fsprogs
如果在设备支持的文件系统列表中没有看到 ext4, 你必须安装驱动本身
opkg install kmod-fs-ext4
设置 f2fs
这个命令会下载创建和修复 f2fs 需要的工具:
opkg install f2fs-tools
如果在设备支持的文件系统列表中没有看到 f2fs, 你必须安装驱动本身
opkg install kmod-fs-f2fs
其他文件系统(适用于高级用户)
可以通过下面的命令获取 LEDE 支持的所有文件系统列表
opkg update && opkg list | grep kmod-fs
你选择的文件系统所需的工具可以通过下面的命令找到
opkg list | grep FILESYSTEM_NAME
截至本文的写作时间 (2017) LEDE 有适用于 ext2/3/4, f2fs, xfs 和 btrfs 的驱动和文件系统工具,以及适用于大部分被 Linux 支持的其他文件系统的驱动。
跨平台文件系统
唯一推荐的可以用于跨平台的文件系统是 FAT32. 它可以被 Windows, macOS/OSX, Linux, 以及其他你可能拥有的设备(智能电视,平板电脑,有 USB 接口的汽车声音系统...)所读取。 它的主要缺点(对于一个数据盘来说)是它不能存储大于 3.9 GiB 的文件,即使它本身大于 3.9 GiB. 当正在写入数据时,设备断开的话,它也比较容易出错,如果没有允许文件系统检查就再次写入数据的话,这可能导致数据丢失。
设置 FAT32
这个命令会下载创建和修复 FAT32(及老版本)需要的工具:
opkg install dosfstools
(dosfstools 软件包包括 mkfs.fat 和 fsck.fat 工具,它们分别可以创建和检查之前提到的 MS-DOS FAT 文件系统。)
如果在设备支持的文件系统列表中没有看到 vfat, 你必须安装驱动本身
opkg install kmod-fs-vfat
可用的 NLS 文件
对于一些文件系统,例如 FAT32, 你需要额外安装语言包 (codepages / charsets) 来处理文件名。如果你挂载失败了,并且在 dmesg 中看到这样的消息
FAT: codepage cp437 not found
意味着你需要 NLS codepage 437, 如果像是这样的消息
FAT: IO charset iso8859-1 not found
意味着你需要 NLS ISO 8859-1.
可用的 NLS 文件和它们对应的软件包可以通过输入 opkg update; opkg list “kmod-nls*”
列出。
Name | Description |
---|---|
kmod-nls-cp1250 | Kernel module for NLS Codepage 1250 (Eastern Europe) |
kmod-nls-cp1251 | Kernel module for NLS Codepage 1251 (Russian) |
kmod-nls-cp437 | Kernel module for NLS Codepage 437 (United States, Canada) |
kmod-nls-cp775 | Kernel module for NLS Codepage 775 (Baltic Rim) |
kmod-nls-cp850 | Kernel module for NLS Codepage 850 (Europe) |
kmod-nls-cp852 | Kernel module for NLS Codepage 852 (Europe) |
kmod-nls-cp866 | Kernel module for NLS Codepage 866 (Cyrillic) |
kmod-nls-iso8859-1 | Kernel module for NLS ISO 8859-1 (Latin 1) |
kmod-nls-iso8859-13 | Kernel module for NLS ISO 8859-13 (Latin 7; Baltic) |
kmod-nls-iso8859-15 | Kernel module for NLS ISO 8859-15 (Latin 9) |
kmod-nls-iso8859-2 | Kernel module for NLS ISO 8859-2 (Latin 2) |
kmod-nls-koi8r | Kernel module for NLS KOI8-R (Russian) |
kmod-nls-utf8 | Kernel module for NLS UTF-8 |
Windows 文件系统
Windows PC 上使用的唯一文件系统是 NTFS, 在 LEDE (Linux) 上,它是可用的,但是性能很差,如果可以的话,避免使用它。
另一个使用在较新且大于 32 GiB 的 SD 卡上的文件系统是 exFAT, 在 LEDE 上,它也是可用的,并且比 NTFS 有更好的性能和可靠性。如果文件大小限制对你来说不是问题的话,还是建议简单的把 SD 卡格式化为 FAT32.
设置 NTFS
这个命令会下载创建和修复 NTFS 需要的工具:
opkg install ntfsprogs_ntfs-3g
如果在设备支持的文件系统列表中没有看到 ntfs, 你必须安装驱动本身
opkg install ntfs-3g
设置 exFAT
这个命令将下载用于读取 exfat 文件系统的驱动,LEDE 中还没有工具可以用来格式化和检查 exfat (截至2017)
opkg install kmod-fs-exfat
opkg install libblkid
Apple 文件系统
在 Apple 的地盘上有三种文件系统: HFS, HFS+ 和 APFS. 和 Windows 文件系统类似,有驱动可以用于 HFS 和 HFS+, 但是性能比较差,并且不支持全部特性。
APFS 太新了(截至 2017),所以在 LEDE 上完全不支持(其他 Linux 也一样)
设置 HFS 和 HFS+
这个命令会下载创建和修复 HFS 和 HFS+ 需要的工具:
opkg install hfsfsck
如果在设备支持的文件系统列表中没有看到 hfs 和 hfsplus, 你必须安装驱动
opkg install kmod-fs-hfs kmod-fs-hfsplus
分区
分区是把存储空间分成不同部分的一种方式,每一个分区都可以使用自己独立的文件系统。
对于分开不同的数据类型,这是一个非常有用的办法。比如,将扩展的固件系统和真正需要存储和分享的数据分开,或者是断开外置设备后仍然需要直接从 Windows 或者 macOS 轻松访问的数据。
讨论高级的分区超出了本文的范围,因为 LEDE 使用和其他 Linux 系统相同的命令行工具。
fdisk 工具用于在使用 MBR 分区表的设备上创建和修改分区
gdisk 工具用于在使用 GPT 分区表的设备上创建和修改分区