700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux分区_解决Linux下挂载的NTFS分区(Windows分区)只读问题。

linux分区_解决Linux下挂载的NTFS分区(Windows分区)只读问题。

时间:2022-05-27 16:05:00

相关推荐

linux分区_解决Linux下挂载的NTFS分区(Windows分区)只读问题。

今天又依靠自(谷)己(歌)解决了一个不大不小的问题——Linux下挂载的NTFS分区下的文件(夹)只能读取不能写入的问题。

其实类似问题大约两年多之前就出现过,当时解决了。昨天又出现了。和两年多前出现的问题很像,都是挂载在Linux系统下的NTFS分区不可写入,但又有所区别。通过谷歌搜索关键词,最终也解决了。下面我就把解决的方法说一下,也包括两年前出现的类似问题和解决方法。

一,我的系统和分区情况:

Linux系统是Arch Linux,桌面环境为KDE5/Plasma;Windows系统就是Win10,没有截图。

通过lsblk命令,可以看到我的电脑中有三块硬盘,sda、sdb和sdc,其中分区sda1、sda5以及sdb5分别挂载于/mnt/win10、/mnt/tools和/mnt/data上。这三个分区都是NTFS分区。如果进入win10系统,那个sda1分区就是windows下的C盘(系统盘)。

二、NTFS分区的权限

这三个NTFS分区都是利用配置文件/etc/fstab进行自动挂载 ,可以看到,在<options>中,都是rw,users(rw:以读写模式挂载;users:允许用户组users中所以用户挂载)

用ls -l命令也可以看到,/mnt下的这三个挂载点文件夹也都有rwx(读、写、执行)权限,包括所有者、所属组和其他用户。

三、两年之前()的问题和解决办法

虽然我在linux下自动挂载了三个windows分区,但实际上从Linux系统中读写这三个分区下文件的情况不算太多(频度约2-3次/月,当然每次可能都读写多个文件),不过一直也没什么问题。至到两年多之前的某一次,我发现我不能向这三个分区中的任意一个(包括这些分区下的文件夹和子文件夹)写入数据了(例如新建文件或保存修改等)。依照使用的软件不同,会分别报告“保存错误”、“只读系统”、“无法保存”或“没有权限”等等。我当时也是查看了fstab文件和权限,发现并没有什么变化,去百度也并没有得到理想的答案。就直接去archlinuxcn的IRC频道(#archlinux-cn@freenode)请教,很快就有大佬告诉我,很可能是因为我的windows系统是休眠状态或者选择了“快速启动”模式(默认选择)造成的。

休眠是不可能的,因为我从来也不去用这个功能,但“快速启动”模式我当时倒是第一次听说。不过据IRC上的大佬们说,在快速启动模式下,关机时windows会将硬盘分区写保护,所以再进入Linux后,也就无法向这些分区写入数据了。明白之后,我进入Windows系统,关闭了“快速启动”后,问题得以解决。我也知道为什么这个问题直到才出现——因为我那时候刚升级到Win10,之前用的还是winxp,并没有这个模式

附:关闭win10快速启动的方法:

依次单击:windows徽标(开始)->设置->系统->电源和睡眠->其他电源设置->选择电源按钮的功能。打开如上图对话框。

将“关机设置”下面的“启用快速启动(推荐)”前的勾取消掉(单击复选框),如上图红框所示。然后点击下方“保存修改”按钮。如果复选框是灰色不可用状态,单击上方的“更改当前不可用的设置”(上图红线所示)即可。

四、昨天发现的问题和解决方法

自从两年前关闭了win10的快速启动,NTFS分区不可写的问题就解决了。然而就在昨天,我又一次需要修改保存NTFS分区下的文件时,又出现了“只读系统”和“没有写权限”的问题。不过这一次我发现,只有sda1分区(就是安装了windows系统的那个分区)出现这个问题,其他两个分区仍然正常。这次我用google搜索了这个问题,首先得到的信息是因为windows休眠或非正常关机。虽然我知道肯定不会是休眠,但距上次在windows系统下关机,已经过去大约一个月了,我实在想不起来上次是不是非正常关机了。

于是我重启电脑进入win10,顺便看一看快速启动模式是否因为系统升级而又被自动选上了(当然并没有),之后确定是正常关机。然而重新回到Arch Linux下,问题依旧。

继续google,得到一个解决方法:先卸载分区

sudo umount /mnt/win10

(将/mnt/win10换成你自己的挂载点)

然后利用ntfsfix命令修复对应的分区

sudo ntfsfix /dev/sda1

(将/dev/sda1换成你自己的设备名)

我尝试了一下,并没有成功

~ $ sudo ntfsfix /dev/sda1[sudo] yang 的密码:Mounting volume... Windows is hibernated, refused to mount.FAILEDAttempting to correct errors...Processing $MFT and $MFTMirr...Reading $MFT... OKReading $MFTMirr... OKComparing $MFTMirr to $MFT... OKProcessing of $MFT and $MFTMirr completed successfully.Setting required flags on partition... OKGoing to empty the journal ($LogFile)... OKWindows is hibernated, refused to mount.Remount failed: Operation not permitted

之后再挂载sda1时,提示:

~ $ sudo ntfs-3g /dev/sda1 /mnt/win10Windows is hibernated, refused to mount.The disk contains an unclean file system (0, 0).Metadata kept in Windows cache, refused to mount.Falling back to read-only mount because the NTFS partition is in anunsafe state. Please resume and shutdown Windows fully (no hibernationor fast restarting.)

它让我重新打开并完全关闭Windows系统(不要休眠或使用快速启动)。问题就是我已经这么做了啊,这不还是不行嘛。

然后我又一次打开了google搜索,并且不再只搜索中文网页了,终于在google和一本1992年出版的《英汉小词典》的帮助下,我找到了解决方法:

在ntfs-3g中有一个参数:remove_hiberfile。在ntfs-3g的手册中是这么解释这个参数的:

remove_hiberfileWhen the NTFS volume is hibernated, a read-write mount is deniedand a read-only mount is forced. One needs either to resume Windowsand shutdown it properly, or use this option which will remove theWindows hibernation file. Please note, this means that the savedWindows session will be completely lost. Use this option under yourown responsibility.

大致意思就是:当NTFS分区休眠了,就会禁止读写模式挂载,必须以只读模式挂载。要么重新进入Windows并正确关闭它,要么用这个参数删掉Windows的休眠文件。请注意,这意味已经(在休眠时)保存的Windows会话将全部丢失。用这个参数后果自负。(不要在意我的翻译,毕竟是靠那本《英汉小词典》完成的,大致能表达意思就行)

不过因为我根本没有利用Windows的休眠功能保存什么会话,所以无所谓“completely lost”了呗。当然要用一下

sudo umount /mnt/win10sudo ntfs-3g -o remove_hiberfile /dev/sda1 /mnt/win10

问题解决!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。