有关 Linux 的 mnt 和 ntfs/zfs 等文件系统

2023-01-29 17:15:10 +08:00
 LeeReamond

在考虑 linux 和 windows 互相挂载的事。虽然是科班毕业,但是对文件系统了解大概也就是索引和实际储存这样,其实不是很了解。

想到一个问题就是,比如 linux mnt 了一个 windows 的硬盘,实际效果是文件在两个操作系统中都能编辑和操作,但是这个文件实际上是储存在 linux 的文件系统下的还是 win 的文件系统下的?

1097 次点击
所在节点    程序员
8 条回复
tuwulin365
2023-01-29 17:25:30 +08:00
不是同一个文件系统,谁挂载就是谁的吗?
leoleoasd
2023-01-29 17:32:11 +08:00
文件系统本身取决于创建分区(格式化)的时候选的文件系统
leoleoasd
2023-01-29 17:32:32 +08:00
如果在 linux 下创建的,大概率是 ext4 之类的;如果是 windows 应该就是 ntfs
leoleoasd
2023-01-29 17:32:59 +08:00
https://github.com/maharmstone/btrfs
以及有个有趣的项目可以看看,只是不一定稳定
ashuai
2023-01-29 17:35:30 +08:00
用 smb 共享稳一点,文件是存在硬盘上,权限上来说谁是 host 谁说了算
libook
2023-01-29 17:44:59 +08:00
你是双操作系统吗?同时只有一个操作系统在运行,公用同一个硬盘?


文件系统只是一个管理数据的标准,比如 NTFS 就是文件系统,你使用 NTFS 标准格式化一块硬盘,那么这块硬盘的文件系统就是 NTFS 。操作系统会实现对文件系统的操作功能,比如 Linux 下的 NTFS-3G 就是一款按照 NTFS 标准来操作数据的软件。
所以不存在“这个文件实际上是储存在 linux 的文件系统下的还是 win 的文件系统下的”这种说法,你当前是什么操作系统就是由什么操作系统操作的,只不过使用了实现了特定文件系统操作功能的软件。


比如你在 Linux 操作系统上使用 NTFS-3G 提供的操作功能来操作一块格式化为 NTFS 文件系统的硬盘。那么可以说数据是存储在一块 NTFS 文件系统的硬盘上的,使用 Linux 操作系统上的 NTFS-3G 软件包来操作数据。
lxdlam
2023-01-29 17:46:20 +08:00
文件系统是对底层物理数据存储的抽象,本质上是一种协议,这些 section 上的数据可以用这种协议解释。在不同系统上使用同种协议可以挂载同一个区块,最终写完了都在同一个物理区块上,那么换到其他系统(甚至直接 `dd` 到一个 image )上打开,只要协议一样,读取到的内容是一致的。

而 OS 本身跟文件系统是半解耦的:本质来说,OS 跟文件系统应该是完全解耦的,你也可以在 Linux 上使用 NTFS 。但是对于现在用的比较多的三大 OS ,都对自己常用的文件系统有特定支持(例如 Windows 的 Bitlocker 对 NTFS 支持最好,一些比较有意思的扩展特性例如 Alternative Data Streams 可能其他平台的 ntfs 实现不包含),所以本质上来说跟 OS 关系大也不大。

所以,文章的问题可以回答为:
- 保存在物理区块上,跟操作系统无关。
- 在不同操作系统下,只要有协议的实现或者兼容层,读写应该不会有太大问题。
- 现代 OS 对自己常用的文件系统可能大多有扩展,对于这些扩展,在其他平台的兼容实现上可能有问题。
feng0vx
2023-01-30 12:51:44 +08:00
两个系统都在做读写,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/911394

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX