NTFS-3G (简体中文)

From ArchWiki
Revision as of 09:12, 14 March 2019 by Fengchao (talk | contribs) (Update translation.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
翻译状态: 本文是英文页面 NTFS-3G翻译,最后翻译时间:2019-03-14,点击这里可以查看翻译后英文页面的改动。

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。

安装

安装位于官方软件仓库的软件包 ntfs-3g

手动挂载

你有两个选择。传统方法是:

# mount /dev/your_NTFS_partition /mount/point

挂载类型 ntfs-3g 不需要显式指定。 mount 命令默认会调用 /usr/bin/mount.ntfs ,它在安装了 ntfs-3g 之后被符号连接到 /usr/bin/ntfs-3g

第二个选择是直接调用 ntfs-3g

# ntfs-3g /dev/your_NTFS_partition /mount/point

其他可用参数请查看ntfs-3g(8)

格式化

警告: 和以前一样,再次检查设备路径。
# mkfs.ntfs -Q -L diskLabel /dev/sdXY
Note: -Q 选项不向驱动器填充0且不检查坏扇区,以加快格式化速度。

配置

你的 NTFS 分区可以被配置成自动挂载,或者预先配置好来安装你想要的方式挂载。配置可以在文件系统配置文件 fstab 中指定或者使用 udev 规则。

默认配置

使用默认配置会在启动时挂载 NTFS 分区。使用这种方法,如果挂载位置的父文件夹有合适的用户或组权限,用户或组就可以读写这个分区。

把以下内容写入/etc/fstab:

# <file system>   <dir>		<type>    <options>             <dump>  <pass>
/dev/NTFS-part  /mnt/windows  ntfs-3g   defaults		  0       0

Linux权限兼容

Linux系统通常将目录的权限设为755,将文件的权限设为644。如果您经常使用NTFS分区,建议保留这些权限。下面的示例将上述权限分配给普通用户:

# 安装具有 linux 兼容权限的内部 Windows 分区,即权限755用于目录(dmask=022)和权限644用于文件(fmask=133)
/dev/NTFS-partition  /mnt/windows  ntfs-3g uid=username,gid=users,dmask=022,fmask=133 0 0

允许组/用户

/etc/fstab中,您还可以指定其他选项,如允许访问(读取)分区的用户。例如,您允许users组中的人员具有访问权限:

/dev/NTFS-partition  /mnt/windows  ntfs-3g   gid=users,umask=0022    0       0

默认情况下, 上述命令仅为root用户启用写支持。若要为其他用户启用,必须显示指定应授予写入权限的用户。使用uid参数加您的用户名以启用用户写支持:

/dev/NTFS-partition  /mnt/windows  ntfs-3g   uid=username,gid=users,umask=0022    0       0

如果您在一个单用户计算机上运行,您可能希望自己拥有该文件系统并授予所有可能的权限:

/dev/NTFS-partition  /mnt/windows  ntfs-3g   uid=username,gid=users    0       0

基本的 ntfs-3g 选项

对大多数人来说,上面的设置已经足够了。这是一些其他的对于不同的Linux文件系统的通用选项。完整列表参见这里

umask
umask 是一个嵌入的 shell 命令,可以自动设置新创建的文件的权限。对于 Arch Linux,对于 root 和 user 默认的 umask 是 0022。设为 0022 将使新目录有目录权限755,新文件有权限644。你可以在这里查看更多关于 umask 权限的信息:。
noauto
如果设置了 noauto/etc/fstab 中的 NTFS 条目不会在启动时自动挂载。
uid
用户 id 号码。这允许指定用户具有完全的访问权限。你的uid可以用 id 命令获得。
fmask and dmask
umask 类似但是分别定义的是文件和目录的权限。
windows_names
prevents files, directories and extended attributes to be created with a name not allowed by windows.

允许用户挂载

默认情况下,ntfs-3g需要 root 权限以装载文件系统, 即使在/etc/fstab中有“user”选项。有关详细信息,请参阅 ntfs-3g-faq。仍然需要 fstab 中的用户选项。

Note:
  • ntfs-3g包没有内置FUSE支持。使用ABS重新构建包 或安装ntfs-3g-fuseAUR
  • 卸载权限似乎存在问题,因此如果需要卸载文件系统,则仍需要 root 权限。您还可以使用fusermount -u /mnt/mountpoint来卸载文件系统并避免使用root权限。此外, 如果在/etc/fstab中使用users(复数)而不是user选项,您可以使用mountumount命令装卸载文件系统。

缩放NTFS分区

Note: 对重要数据请提前做好备份!

大多数已购买的系统已经有Windows安装在其上,有些人希望在进行 Arch Linux 安装时不要完全擦除它。因此,在某些方面,调整现有 Windows 分区的大小以为 Linux 分区腾出空间是很有用的。这经常通过Live CD或可引导的USB闪存驱动器完成。

对于Live CD,典型的创建过程是下载ISO文件,刻录到CD,然后从它启动。InfraRecorder是一个免费(通过GPL3)的Windows上的CD/DVD刻录应用程序,这是很合适的方法。如果您想要使用可引导的USB驱动器,请参阅USB flash installation media中创建可引导的USB驱动器的方法。

有许多可引导的CD/USB映像可用。此列表不是详尽无遗的, 但是是个很好的开始:

  • GParted — 为x86计算机设计的小型GNU/Linux发行版。允许你使用最新版GParted应用的所有功能。不包括额外的软件包System Rescue CD,并且磁盘加密可能不受支持。
http://gparted.sourceforge.net/ ||
  • Parted Magic — 非常好的完整的硬盘管理解决方案。使用分区编辑器可以调整大小、复制和移动分区。您可以增长或收缩您的 C: 驱动器,为新操作系统创建空间。尝试从丢失的分区中进行数据抢救。
http://partedmagic.com/ ||
  • SystemRescueCD — 良好的工具, 并在大多数情况下无缝工作。一旦启动, 运行 GParted, 其余应该是相当明显的。
http://www.sysresccd.org/ ||

请注意, 调整 NTFS 分区大小的重要程序包括 ntfs-3g 和类似于 (G)parted 或 fdisk 的实用程序,由util-linux包提供。除非您是高级用户,否则最好使用像 GParted 这样的工具来执行任何调整大小操作,以尽量减少由于用户错误而导致数据丢失的可能性。

如果您的系统上已经安装了 Arch Linux,并且只想调整现有 NTFS 分区的大小,则可以使用 parted 和 ntfs-3g 包来完成。或者,在安装 GParted 包后, 可以使用 GParted GUI。

疑难解答

损坏的NTFS文件系统

如果NTFS文件系统有错,ntfs-3g会以只读方式挂载它。要修复NTFS系统,启动Windows并使用它的磁盘检查程序,chkdsk。考虑到 ntfsfix 只能修复一些错误,如果失败,chkdsk 可能会成功。

想要修复 NTFS 文件系统,该设备必须已经被卸载。例如,想要修复 /dev/sda2 中的 NTFS 文件系统:

# umount /dev/sda2
# ntfsfix /dev/sda2
Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
NTFS volume version is 3.1.
NTFS partition /dev/sda2 was processed successfully.
# mount /dev/sda2

如果顺利的话,该分区已经可以写入了。

元数据保存在Windows中,拒绝挂载

当与Windows 8 或 10双引导时,试图挂载一个可见的Windows可能会出现如下错误:

The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sdc1': Operation not permitted
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully (no hibernation or fast restarting), or mount the volume
read-only with the 'ro' mount option.

问题是因为Windows 8中引入"快速启动"特性。启用快速启动后,所有分区的元数据的一部分被还原到它们在以前关闭的状态。因此,在 Linux 上所做的更改可能会丢失。这会发生在任何选择"关闭"或"休眠" NTFS 分区的Windows 8 或 10 下。然而,通过选择"重新启动",离开 Windows 是看似安全的。

要启用对其他操作系统的系统分区写入,请确保禁用快速重启。通过以管理员身份执行命令:

powercfg /h off

你可以在 控制面板 >硬件与声音> 电源选项 > 系统设置 > 当电源键按下时做什么, 去掉勾选启用快速启动

Deleting Windows hibernate metadata

As an alternative to above clean shutdown method, there is a way to completely destroy NTFS metadata that was saved after hibernating. This method is only feasible if you're not able or unwilling to boot into Windows and shut it down completely. This is by placing remove_hiberfile option when you're mounting your NTFS file system using ntfs-3g.

# mount -t ntfs-3g -o remove_hiberfile /dev/your_NTFS_partition /mount/point
Warning: Please note that this method means that the saved Windows session will be completely lost. Use this option under your own responsibility.

挂载失败

如果你按本指南内容操作也无法挂载你的 NTFS 分区,可以尝试一下在 fstab 中的所有 ntfs 分区里加上 UUID。参见 示例[broken link: invalid section].

参见