模拟linux文件系统的设计及实现_Linux存储栈模块及功能

580bc0a4d19581c5eabc803eec872fc3.png

VFS的主要操作对象与结构包括:file,inode,superblock,dentry。

superblock表示被挂载的文件系统实例,包含存储设备、inode指针、块大小、superblock操作、文件系统类型、文件系统信息等。一般它是存储于硬盘中的文件系统控制块。

inode具体文件的相关信息,包含它在具体文件系统内的inode编号,在用户控件用命令'ls -i'查看。

dentry是文件系统中目录与文件的映射关系。

块设备

通用块设备层会处理所有与块设备相关的请求,如将数据拷贝到内存、管理逻辑卷LVM、I/O请求调度等。Linux内核中与块设备相关的元素有sector(扇区)、block(块)、segment(段)、page(页),它们一起被用于描述内核通用块设备层。其中sector代表存储控制器每次能读写的最小数据单位(512B),I/O调度器和具体设备驱动也能以sector为单位进行数据操作。block是文件系统存储文件数据块的最小单位,通常由多个sector组成。segment是一个内存页,它包含多个block。page是存储cache中由多个segment组成的最小数据单位。

块设备驱动Linux存储栈中,实际物理设备之上就是真正的块设备驱动了,它从上层调度器获得I/O请求后开始向存储设备读写数据。SCSI设备驱动由上中下3层实现,上层驱动用于和通用块设备层交互,下层控制具体的存储设备,中间层类似网络路由功能,它将受到的请求按照一定规则传递到不同的设备节点实现诸如容错等额外功能。

虚拟机硬盘存储

*虚拟机存储*指的是模拟器本身可以加载的各种形式的存储。比如:NAS,SAN,iSCSI,SCSI,多路径(/dev/mapper中的所有卷)、rbd(ceph块存储Rados Block Device,需QEMU支持)、sheepdog、Glusterfs卷、zfs卷等。可以看出,libvirt/QEMU本身支持很多种类型的外部存储,它们最终映射到QEMU后就是各种格式的虚拟硬盘,比如常见的qcow2、raw。

虚拟硬盘镜像是模拟器直接用作虚拟机硬盘的文件,它将内容按照一定格式进行存储。

镜像格式:raw、qcow、qcow2、vmdk、vhdx等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模拟Linux文件系统。在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以模拟Linux文件系统,具体要求如下: (1) 要求盘块大小1k 正规文件 (2) i 结点文件类型 目录文件 (共1byte) 块设备 管道文件 物理地址(索引表) 共有13个表项,每表项2byte 文件长度 4byte 。联结计数 1byte (3)0号块 超级块 栈长度50 空闲盘块的管理:成组链接 ( UNIX) 位示图法 (Linux) (4)每建一个目录,分配4个物理块 文件名 14byte (5)目录项信息 i 结点号 2byte (6)结构: 0#: 超级块 1#-20#号为 i 结点区 20#-30#号为根目录区 3. 该管理程序的功能要求如下: (1) 能够显示整个系统信息,源文件可以进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) 建立文件(需给出文件名,文件长度)。 (7) 打开文件(显示文件所占的盘块)。 (8) 删除文件:删除指定文件,不存在时给出出错信息。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 空闲盘块的管理:Linux位图法 (3) 结构:超级块, i结点区, 根目录区 3. 该simdisk管理程序的功能要求如下: (1) info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) newfile …: 建立文件。 (7) cat …: 打开文件。 (8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统模拟Linux文件系统间的文件拷贝,host文件系统的文件命名为…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统中的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy D:\data\sample\test.txt /test/data 或者:simdisk copy D:sample\test.txt /test/data (9) del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10) check: 检测并恢复文件系统:对文件系统中的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值