Some concepts need to be understood:
BD(block device): I/O设备大致分为两类:块设备和字符设备。块设备将信息存储在固定大小的块中,每个块都有自己的地址。数据块的大小通常在512字节到32768字节之间。块设备的基本特征是每个块都能独立于其它块而读写。磁盘是最常见的块设备。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备一般的访问方式。
另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。
这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入“fox”这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是“f”,然后是“o”,最后是“x”,最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显然它是一个块设备。
VBD(virtual block device):in the eyes of virtual machine, vbd is the only device which can be read.
VDI(vitual disc image):
A virtual disk image is a file on a physical disk, which has a well-defined, published or proprietary, format and is interpreted by a Virtual Machine Monitor as a hard disk. IT administrators and software developers administer them through offline operations using built-in or third-party tools. In terms of naming, a virtual disk image for a certain Virtual Machine monitor has a specific file type extension, e.g., .vmdk for VMware VMDK, .vhd for Xen and Microsoft Hyper-V, .vdi for Oracle VM VirtualBox, etc.
The relations between VDI and VBD?
Ps: ·ISO-9660:
这是国际标准化组织(ISO)于1985年颁布的通用光盘文件系统。目前它是得到最广泛支持的光盘文件系统,能被所有的CD-ROM和操作系统识别。它支持8.3格式的文件名,不支持长文件名。支持DOS,Windows9x/NT,OS/2,Linux,MAC OS等操作系统。
·Joliet:
这是由Microsoft公司制定的光盘文件系统。它是ISO-9660的扩展集。它兼容ISO-9660光盘文件系统,可以在DOS,Windows等操作系统下使用。支持长文件名(最大64个字符)和中文文件名,目前Joliet文件系统的应用也非常广泛。
·Romeo:
这是由著名的Adaptec公司制定的光盘文件系统。但它只支持Windows9x/NT操作系统,不支持DOS及其它操作系统。Romeo支持长文件名(最大128个字符)和中文文件名。它的应用不如前两种光盘文件系统广泛。
·UDF:
这是国际标准化组织于1996年制定的通用光盘文件系统。它采用标准的包刻录技术来简化刻录机的使用。UDF文件系统使用户可以象操作硬盘那样来使用 CD-RW。采用UDF文件系统的光盘只能在具有MulitRead功能的CD-ROM上读取。对不支持MulitRead功能的CD-ROM来说,需要相关软件的支持才能读取UDF文件系统。UDF文件系统支持Windows9x/NT,OS/2,Linux,MAC OS等操作系统。
·Overburn:
这种文件系统的光盘容量可以超过640MB,最大可以达到1GB。但采用这种文件系统刻录的光盘兼容性较差,在CD-ROM上读取时需要相应的软件支持。
PBD(physical block device)
VIF(virtual interface)
VIP
PIF(physical intetrface)
Others:
NFS: NFS 就是 Network FileSystem 的縮寫,最早之前是由 Sun 這家公司所發展出來的。 他最大的功能就是可以透過網路,讓不同的機器、不同的作業系統、可以彼此分享個別的檔案 (share files)。所以,您也可以簡單的將他看做是一個檔案伺服器 (file server) 呢!這個 NFS 伺服器可以讓您的 PC 來將網路遠端的 NFS 主機分享的目錄,掛載到本地端的機器當中, 在本地端的機器看起來,那個遠端主機的目錄就好像是自己的一個磁碟分割槽一樣 (partition)!
PRC: RPC 最主要的功能就是在指定每個 NFS 功能所對應的 port number ,並且回報給用戶端,讓用戶端可以連結到正確的埠口上去。 那 RPC 又是如何知道每個 NFS 的埠口呢?這是因為當伺服器在啟動 NFS 時會隨機取用數個埠口,並主動的向 RPC 註冊,因此 RPC 可以知道每個埠口對應的 NFS 功能,然後 RPC 又是固定使用 port 111 來監聽用戶端的需求並回報用戶端正確的埠口, 所以當然可以讓 NFS 的啟動更為輕鬆愉快了!
注:所以你要注意,要啟動 NFS 之前,RPC 就要先啟動了,否則 NFS 會無法向 RPC 註冊。 另外,RPC 若重新啟動時,原本註冊的資料會不見,因此 RPC 重新啟動後,他管理的所有程式都需要重新啟動以重新向 RPC 註冊。
我們現在知道 NFS 伺服器在啟動的時候就得要向 RPC 註冊,所以 NFS 伺服器也被稱為 RPC server 之一。 那麼 NFS 伺服器主要的任務是進行檔案系統的分享,檔案系統的分享則與權限有關。 所以 NFS 伺服器啟動時至少需要兩個 daemons ,一個管理 client 端是否能夠登入的問題, 一個管理 client 端能夠取得的權限。如果你還想要管理 quota 的話,那麼 NFS 還得要再載入其他的 RPC 程式就是了。我們以較單純的 NFS 主機來說:
rpc.nfsd:
這個 daemon 主要的功能就是在管理 Client 是否能夠登入主機的權限啦,其中還包含這個登入者的 ID 的判別喔!
rpc.mountd
這個 daemon 主要的功能,則是在管理 NFS 的檔案系統哩!當 Client 端順利的通過 rpc.nfsd 而登入主機之後,在他可以使用 NFS 伺服器提供的檔案之前,還會經過檔案使用權限 (就是那個 -rwxrwxrwx 與 owner, group 那幾個權限啦) 的認證程序!他會去讀 NFS 的設定檔 /etc/exports 來比對 Client 的權限,當通過這一關之後 Client 就可以取得使用 NFS 檔案的權限啦! (註:這個也是我們用來管理 NFS 分享之目錄的使用權限與安全設定的地方哩!)
rpc.lockd (非必要)
這個玩意兒可以用在管理檔案的鎖定 (lock) 用途。為何檔案需要『鎖定』呢? 因為既然分享的 NFS 檔案可以讓用戶端使用,那麼當多個用戶端同時嘗試寫入某個檔案時, 就可能對於該檔案造成一些問題啦!這個 rpc.lockd 則可以用來克服這個問題。 但 rpc.lockd 必須要同時在用戶端與伺服器端都開啟才行喔!此外, rpc.lockd 也常與 rpc.statd 同時啟用。
rpc.statd (非必要)
可以用來檢查檔案的一致性,與 rpc.lockd 有關!若發生因為用戶端同時使用同一檔案造成檔案可能有所損毀時, rpc.statd 可以用來檢測並嘗試回復該檔案。與 rpc.lockd 同樣的,這個功能必須要在伺服器端與用戶端都啟動才會生效。
Link: http://linux.vbird.org/linux_server/0330nfs.php
Ps: 文件系统 类型名称 用途
Second Extended filesystem ext2 最常用的Linux文件系统
Three Extended filesystem ext3 ext2的升级版,带日志功能
Minix filesystem minix Minix文件系统,很少用
RAM filesystem ramfs 内存文件系统,速度超快
Network File System(NFS) NFS 网络文件系统,由SUN发明,主要用于远程文件共享
DOS-FAT filesystem msdos ms-dos文件系统
VFAT filesystem vfat Windows95/98采用的文件系统
NT filesystem ntfs Windows NT采用的文件系统
HPFS filesystem hpfs OS/2采用的文件系统
/proc filesystem proc 虚拟的进程文件系统
ISO 9660 filesystem iso9660 大部份光盘所用的文件系统
UFS filesystem ufs Sun OS所用的文件系统
Apple Mac filesystem hfs Macintosh机采用的文件系统
Novell filesystem ncpfs Novell服务器所采用的文件系统
SMB filesystem smbfs Samba的共享文件系统
XFS filesystem xfs 由SGI开发的先进的日志文件系统,支持超大容量文件
JFS filesystem jfs IBM的AIX使用的日志文件系统
ReiserFS filesystem reiserfs 基于平衡树结构的文件系统
Mount(挂载): 在windows操作系统中,挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。这个操作可以通过“计算机管理”中的“磁盘管理”来进行。第三方软件,如磁盘分区管理软件、虚拟磁盘软件等,通常也附带挂载功能。在linux操作系统中, 挂载是一个非常重要的功能,使用非常频繁。它指将一个设备(通常是存储设备)挂接到一个已存在的目录上。(这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。) 需要理解的是,linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个大的文件目录。我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上,然后通过访问这个目录来访问存储设备。
When os read the device , does it have to mount the device?
Pool: host,storage,network
RELATIONS SNAPSHOT |
BD, CD |
NFS, PRC |
Why we define new interface?