我想知道存储设备上的文件系统是否是操作系统的一部分?
我认为不是。相反,它是存储设备的一部分,并且存在于任何OS外部,尽管它是由OS创建的。我的理解正确吗?
但是在Wikipedia中:
大多数文件系统都是文件系统,因为文件系统是任何现代操作系统的组成部分。
对于LVM,它是否是操作系统的一部分?如果是,那么基于LVM构建的虚拟文件系统是否是操作系统的一部分?
我想知道存储设备上的文件系统是否是操作系统的一部分?
我认为不是。相反,它是存储设备的一部分,并且存在于任何OS外部,尽管它是由OS创建的。我的理解正确吗?
但是在Wikipedia中:
大多数文件系统都是文件系统,因为文件系统是任何现代操作系统的组成部分。
对于LVM,它是否是操作系统的一部分?如果是,那么基于LVM构建的虚拟文件系统是否是操作系统的一部分?
Answers:
文件系统本身(由存储表示形式上的信息的物理顺序表示)独立于OS。该操作系统包含一个驱动程序,可使其与文件系统一起使用。某些文件系统可能只有一个可以与之通信的操作系统,并且该操作系统已对该文件系统进行了硬编码(请考虑Novell NetWare的原始文件系统)。但这并不能阻止一些有进取心的人为另一个操作系统编写这样的驱动程序。
LVM不是文件系统,而是卷管理器。像文件系统一样,卷管理器也依赖于存储在逻辑存储表示中的数据来进一步定义如何访问该存储以访问其他逻辑卷。对于LVM,Linux和BSD可以为各自的LVM实现使用相同的存储格式。
Windows卷管理器是动态磁盘,一些有进取心的人们创建了Linux驱动程序来访问它们。
如果要使用一组磁盘,请安装某种Linux,使用LVM对其进行设置,在逻辑卷上安装多个ext3
文件系统,然后将驱动器放入FreeBSD机器中,以便FreeBSD机器能够读取磁盘。 。大概。这是因为FreeBSD的驱动程序了解LVM和ext3的物理布局,并实现了必需的OS内存和与之交互所需的访问结构。
解释存储布局所需的驱动程序几乎总是“在OS中”,但是实际的存储布局本身并不被认为是。
我在ServerFault上回答了这个问题。这又是答案:
这里的问题是“文件系统”一词。在POSIX / Unix / Linux世界中,它用来表示几种不同的事物。
/
由操作系统内核植根于应用程序软件,并呈现给应用程序软件。以此含义,例如,人们谈论具有“单个文件系统树 ” 的POSIX操作系统。 /usr
文件系统 ”。/proc
”。维基百科的散文是#1。实际上,这是操作系统的一部分,因为它是所提供的操作系统,并且特定于操作系统的抽象被提供给在操作系统上运行的应用程序软件。
含义#2不属于操作系统。一个或多个操作系统能够理解的碟上数据结构。特别是,用于LVM的磁盘上数据结构提供了将一个或多个DASD分割为一个或多个卷的方法。它们本身不是操作系统的一部分。(但是,同样,“LVM”具有多重含义,并且可以指的是在操作系统中尽可能多的LVM驱动程序和实用工具,因为它可能意味着上盘的数据结构,这些驱动程序和实用操作。例如:“我跑了LVM从救援光盘。”)
含义3是特定于操作系统的文件系统驱动程序提供的特定于操作系统的抽象。实际上,文件系统驱动程序是操作系统的一部分,尽管它们通常是独立的,并且与操作系统内核分开。
没有“操作系统”的正式定义。有些人用来维持“操作系统”和“文件管理API”是相同的,而OS除了提供命令分析器外别无其他。(毕竟,这是MS-DOS最初所做的全部。)
我一直坚持认为DOS不是真正的操作系统-操作系统的工作是对硬件进行抽象和虚拟化,以及管理硬件资源。DOS基本上没有做任何事情。
至于文件系统是操作系统的一部分还是“存储设备”的一部分,则在很大程度上取决于您所说的“文件系统”。存在物理布局,例如软盘或CD上的布局,并且存在文件系统FUNCTION,这取决于是否具有一些智能实体(CPU或某种类型的外围处理器)来废除磁盘上的内容并返回它作为有意义的字节序列。布局可能符合某些标准,因此您可以例如在一个设备上刻录CD,然后在另一台设备上读取/播放CD。问题是此布局是“文件系统”,还是“系统”是否驻留在足够聪明的设备中以读取/写入布局。
在大多数计算机环境中,人们使用术语“文件系统”来指代允许您读写文件的API,以及在某些操作系统的控制下运行的实现这些API的CPU和外围设备的组合-该术语通常不指介质或单个介质的物理格式,无论是否可移动。
MSDOS.SYS
,命令行外壳是COMMAND.COM
。
磁盘驱动器和类似磁盘驱动器的设备是“哑巴”。您要求它提供LBA,它可以将包含的512、2048或4096字节还给您。反之亦然。
文件系统层可让您说出“我想要c:\ users \ public \ documents \ whatever.doc”并对其执行流操作(打开,读取,写入,查找,关闭)-从名称可寻址的位置转换为一系列读取/写入LBA的请求。
因此,文件系统层有两个方面,一方面与类似磁盘驱动器(或块)的设备进行通信,另一方面与操作系统进行通信。这是对操作系统的特殊性起作用的地方。通常,文件系统的块设备端是设备驱动程序,而操作系统端是应用程序可以使用的API。但是这些只是接口,并不一定要影响文件系统层的基础操作。
所有文件系统都会导致在文件数据之外写入和读取其他数据,以便跟踪有关文件的信息,即记录权限,属性等。
引导存在一些麻烦,因为操作系统文件存储在文件系统中,但是如果文件系统层尚未处于活动状态,如何加载它们呢?Linux使用初始的ram磁盘或通过将文件系统代码作为内核的一部分来构建来解决此问题。Windows通过使Windows引导程序能够读取FAT和NTFS分区来解决此问题。引导加载程序可能很笨拙,就像大多数经典的BIOS引导加载程序一样,它们仅加载LBA 0并执行它,并期望代码随后能够拾取,或者相当智能并具有自己的小型文件系统层,例如UEFI,U-boot等。
LVM不是文件系统。它需要一个或多个块设备,并将其抽象到另一个“虚拟”块设备中(其中/dev/mapper
-任何东西/dev/mapper
都是虚拟块设备)。您将文件系统放在LVM之上,就像您将文件系统放在分区的之上一样。LVM是一个或多个设备驱动程序与文件系统之间的另一层,将对虚拟块设备上的LBA的读取和写入转换为一个或多个其他块设备。是的,LVM可以是虚拟块设备,您可以将它们级联。