Chao-zhi 发布的文章

NTFS 是 Windows NT 系列操作系统支持的磁盘文件系统格式,它是一个特别为网络和磁盘配额、文件加密等管理安全特性设计的文件系统。而 Linux 内核中新进入主线支持的 NTFS3 驱动是一个功能齐全的 NTFS 驱动程序,该驱动程序适用于最高的 NTFS 3.1 版本。

简介

最初,Linux 内核没有 NTFS 的原生支持,后来对 NTFS 的支持也仅提供了只读功能。来自 Tuxera 的 NTFS-3G 是之前主流的解决方案,但在实际使用中也存在一些问题。NTFS-3G 是借助 Linux 的用户空间文件系统(FUSE)模块在用户层实现的一个对 NTFS 支持的文件系统,其对 NTFS 的访问逻辑代码都是在用户层代码实现的。

在 NTFS3 出现之前,Linux 上使用 NTFS 主要问题还是缺乏稳定且功能齐全的读/写支持。

2020 年,Paragon 软件公司做出了一个惊人的决定:尝试将之前只提供给商业客户的 NTFS3 驱动程序贡献到 Linux 主线。最终,在经过多轮审核和修改之后,Linux 内核 5.15 合并了 Paragon 提供的 NTFS3 内核驱动,它拥有更高的性能和更多的特性。

  • 该驱动程序实现了对 NTFS 文件系统中的正常、稀疏和压缩文件的读/写支持。
  • 支持本地日志回放。
  • 支持已挂载的 NTFS 卷的 NFS 导出。
  • 支持文件和文件夹的权限管理。

使用 ntfs3 驱动替换 ntfs-3g 挂载 windows NTFS 分区

如何使用 NTFS3 驱动挂载 NTFS 卷

使用 NTFS3 驱动挂载时使用的文件系统类型是 ntfs3

手动挂载

以前使用 NTFS-3g 驱动的挂载方式是:

# mount -t ntfs-3g /dev/sdxY /mnt

现在只需要将 ntfs-3g 替换为 ntfs3 即可:

# mount -t ntfs3 /dev/sdxY /mnt

-t 指出文件系统类型,/dev/sdxY 是你的 NTFS 卷(分区)的路径,可以使用 lsblk 命令查看。/mnt 是挂载的目标文件夹。

如果需要指定挂载参数,可使用 -o 指定参数,如:

# mount -t ntfs3 -o iocharset=utf8,umask=22,prealloc /dev/sdxY /mnt

这里的 iocharset=utf8,umask=22,prealloc 挂载参数,详见后文解释。

开机自动挂载

如需在开机时自动挂载,可编辑 /etc/fstab 文件,添加如下行:

UUID=**** /data ntfs3 iocharset=utf8,umask=0,prealloc 0 0

其中 UUID=**** 是指定卷(分区)的 UUID。使用 UUID 的好处在于它们与磁盘挂载顺序无关。如果你在 BIOS 中改变了你的存储设备顺序,或是重新拔插了存储设备,或是一些 BIOS 可能会随机地改变存储设备的顺序,那么用 UUID 来表示指定卷(分区)会更有效。可以使用 blkid 命令查看 UUID

/data 是挂载位置。本示例的位置是 /data,你需要提前创建这个文件夹。

后面的选项都是挂载参数,参见后文介绍。

最后两个 0 0 ,表示是否备份和是否检查。0 0 表示不备份、不检查。

挂载参数说明

参数解释
iocharset=name此选项告知驱动程序如何解释路径字符串,并将其转换为 Unicode 或返回。如果未设置此选项,将使用默认代码页。示例:iocharset=utf8
uid=挂载用户 ID
gid=挂载组 ID
umask=控制装载 NTFS 卷后创建的文件/目录的默认权限。
dmask=fmask 只适用于文件,dmask 只适用于目录,而不是指定同时适用于文件和目录的 umask
fmask=见上
noacsrules“无访问规则”装载选项将文件/文件夹的访问权限设置为 777,所有者/组设置为 root。此装载选项吸收所有其他权限。文件/文件夹的权限更改将报告为成功,但仍将保持 777。所有者/组更改将报告为成功,但他们将保留为 root 用户。
nohiddenLinux 下不会显示具有 Windows 特定隐藏(FILE_ATTRIBUTE_HIDDEN)属性的文件。
sys_immutable具有 Windows 特定系统(FILE_ATTRIBUTE_SYSTEM)属性的文件将标记为系统不可变文件。
discard支持 TRIM 命令以提高删除操作的性能,建议将其用于固态驱动器(SSD)。
force即使卷被标记为脏,也强制驱动程序装载分区。不建议使用。
sparse创建稀疏的新文件。
showmeta使用此参数可显示已装入 NTFS 分区上的所有元文件(系统文件)。默认情况下,所有元文件都是隐藏的。
prealloc当写入时文件大小增加时,为文件过度预分配空间。减少对不同文件执行并行写入操作时的碎片。
acl支持 POSIX ACL(访问控制列表)。如果内核支持,则有效。不要与 NTFS ACL 混淆。指定为 acl 的选项支持 POSIX acl。

NTFS3 的优点

NTFS3 是内核态的驱动,ntfs3 比 ntfs-3g 无论是速度还是负载都要好上不少。

已经有诸多网友做过测试:

除了性能更好以外,NTFS3 还支持挂载用户和文件权限管理等功能。具体使用方法可以自行学习 giduid 以及 umask 的用法。

另外 NTFS3 还支持 NTFS 的 prealloc 特性,可以大幅减少文件碎片的产生。

关于 NTFS3 驱动无人维护的问题

Paragon 于 2020 年在 GNU 通用许可证下发布了 NTFS3 驱动程序,在开源后的一年里,NTFS3 的驱动经过了多轮审查和修改,用来提高代码质量。直到 2021 年合并进入内核主线。

但是自从该驱动 2021 年在 Linux 5.15 中最终被主线化以来,至今为止,在接近一年的时间里,还没有任何重大的错误修复被送入驱动。

有人推测是该驱动的维护者 Konstantin Komarov 身处俄罗斯,受到俄乌战争影响的原因。

随后包括 Linus Torvalds 在内的诸多程序员都对此事表达了关切,并且愿意参与到贡献中来。

现在,我们看到 Paragon 软件公司的 Konstantin Komarov 在因休息和其他事务而离开后,又重新活跃在内核邮件列表中。Komarov 在 2022 年 6 月 3 日为 Linux 5.19 的合并窗口提交了一批 NTFS3 的修正。

我相信 ntfs3 未来会越来越好。并且目前,ntfs3 已经是 Linux 中最好用 NTFS 驱动了,我觉得你也不妨尝试一下。


作者简介:一个喜欢瞎鼓捣的医学生


via: https://www.insidentally.com/articles/000029/

作者:insidentally 编辑:wxy

本文由贡献者投稿至 Linux 中国公开投稿计划,采用 CC-BY-SA 协议 发布,Linux中国 荣誉推出

Shell 是类 Unix 系统中超级好用的工具,而 Zsh 是 shell 中的佼佼者,但是现在网上一搜索 Zsh 的配置方案,遍地都是的互相复制粘贴的 oh-my-zsh 配置方案。事实上 oh-my-zsh 并不好用,严重拖慢了 Zsh 的速度,反而让你的工作并不高效。现在将我自己的使用方案分享给大家,教大家配置一个高效好用的 Zsh。

安装 Zsh

我笔记本电脑使用的是 ArchLinux,服务器使用的是 Ubuntu。主要介绍这两个发行版的配置方法,红帽系的发行版请自行尝试。

我个人喜欢尽量从发行版的源里安装。从源安装具有方便,稳定,容易维护等优点。

在 ArchLinux 安装 Zsh

终端里面输入:

sudo pacman -Sy zsh

在 Ubuntu 安装 Zsh

终端里面输入:

sudo apt-get update
sudo apt-get install zsh

安装插件

我只需要两个插件:

  • zsh-autosuggestions:这个是自动建议插件,能够自动提示你需要的命令。
  • zsh-syntax-highlighting:这个是代码高亮插件,能够使你的命令行各个命令清晰明了。

还有一个主题:

  • zsh-theme-powerlevel10k 这个主题提供漂亮的提示符,可以显示当前路径、时间、命令执行成功与否,还能够支持 git 分支显示等等。

同样是尽可能从源里面安装。

Ubuntu 20.10 的源里面是 powerlevel9k,配置好后实际使用体验和 powerlevel10k 差别不大。

在 ArchLinux 安装插件和主题

终端里面输入命令:

sudo pacman -S zsh-autosuggestions zsh-syntax-highlighting zsh-theme-powerlevel10k zsh-completions

在 Ubuntu 安装插件和主题

终端里面输入命令:

sudo apt-get install zsh-autosuggestions zsh-syntax-highlighting zsh-theme-powerlevel9k

这样插件和主题就安装好了。

更改默认 shell,并配置插件和主题

安装好了之后就是启用 Zsh,并且配置插件和主题了。

更改默认 shell

终端输入命令:

chsh -s /usr/bin/zsh

ArchLinux 和 Ubuntu 都是同样的操作,然后注销并重新登录,就启用了 Zsh。第一次进入 Zsh 会自动出现一个配置界面,这个界面可以根据需要自定义 Zsh。

在这里输入 1 就可以进入配置界面了。

配置界面中各个菜单代表的意思分别是:

  • 1:设置命令历史记录相关的选项
  • 2:设置命令补全系统
  • 3:设置热建
  • 4:选择各种常见的选项,只需要选择“On”或者“Off”
  • 0:退出,并使用空白(默认)配置
  • a:终止设置并退出
  • q:退出

这里根据提示,然后按照你自己的喜好配置就可以了。配置好后,会在你的用户目录下生成 .zshrc 文件。然后我们要去这个文件中启用插件和主题。

配置插件和主题

Zsh 的配置文件是 ~/.zshrc 文件,这个文件在你的用户目录下 ~/。删掉了这个文件,再次进入 Zsh,又会触发 Zsh 的配置界面。

在 ArchLinux 启用插件和主题

打开 ~/.zshrc 文件,将以下行代码添加到其中:

source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
在 Ubuntu 启用插件和主题

打开 ~/.zshrc 文件,将以下行代码添加到其中:

source /usr/share/powerlevel9k/powerlevel9k.zsh-theme
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

这样就成功的启用了插件和主题,插件不需要额外的配置就很好用,有额外配置需求的可以自行研究。

powerlevel10k 主题在首次进入时,会触发一个配置界面。

然后根据提示和你的喜好一步步完成配置即可。

这里可以选择你喜欢的提示符。

配置完成后就可以愉快的使用啦!