Volume是学名。windows的标准叫法。API的很多名字是带Volume的。就是文件浏览器里看到的各种盘。
注:volume:[ˈvɒljuːm],体积; 容积,容量; 量,额; 大量,许多; 唱片; 一套录音磁带; 音量,响度; (成套书籍中的)一卷,一册; 书; 卷,合订本; 最大音量;
Driver是小名,是用户之间交流的叫法。有的叫D盘,D槽,一个意思。
Volume是一个逻辑概念。Partition是物理概念。
一个硬盘,就是一个存储数据的载体。在这个载体上分成几大部分,每一部分就是一个分区。
磁盘有一个驱动管着。分区又有一个驱动管着。
Volume是一个逻辑概念,也有一个驱动管着。一个Volume,可以是只有一个分区,也可以跨好几个分区,甚至跨好几个磁盘的分区。因为常见的是一个volume对应一个分区,所以慢慢的习惯了叫D分区。
Volume的逻辑概念是什么呢?就是对上层提供了一个可以存储数据的逻辑载体。
上层是谁?文件系统。文件系统通过对Volume的读写,来管理自己的数据。
volume的读写,委托给底层的分区。分区委托给磁盘。
对使用windows的用户来说,C,D,E,是一个可以存储读取文件的入口。文件内容需要载体存放。载体可以各种各样。经由入口,可以找到内容所在的真正载体:网上邻居;各种网盘;真正的硬盘分区;U盘;甚至可以是一个虚拟盘;某目录;磁带;……
比如C:\123.txt,表示在C:对应的载体里,从根目录开始寻找文件123.txt,找到后就可以读取内容。那么C:在哪里呢?在对应的载体上面。
为了解决这种载体差异,抽象出volume的概念。
volume就是一种逻辑存储设备,是一种逻辑上的存储数据的载体。在其上,利用文件系统格式,可以存储文件,目录等内容。
文件系统是其上层。底下是真正可以存储数据的设备、网络存储器等。
对最上层的用户来说,看到的是一个一个的文件。文件里有一个一个的字节。
文件是被文件系统管理的。文件系统就是在整个volume这个载体上铺了一层自己的布局,有自己的格式。文件系统知道123.txt这个文件存在这个载体上的哪一个位置。
volume是逻辑块设备,就是一次性读写成块的数据,比如512bytes.
文件系统的文件读写是字符,可以一个byte一个byte的读写。
应用程序一般是按文件来读写数据的。
应用程序使用文件访问API来读写数据。比如ReadFile,read,fopen等。
应用API到内核之后,请求交给了文件系统,文件系统就通过块读写请求,发到volume。volume再将请求发向自己的底层。底层可能就只有一个分区,那volume将读写动作发到这个分区;底层可能是两个分区,则volume需要计算每个分区需要读写的位置。RAID的软件实现,一般就在volume层完成。
转自:https://www.zhihu.com/question/274882278/answer/377314693