/vdfs

virtual disk file system 虚拟磁盘文件系统

Primary LanguageC++

vdfs

这是一个虚拟磁盘文件系统管理程序。

主要的功能是用一个二进制文件模拟一张磁盘,在上面实现了基本的文件系统操作和一个简单的shell交互,可以将宿主机的文件存入或读取出来。

基本信息

vdfs所管理的磁盘大小为约为2MB(实际大小为2113.5KB),分布情况如下

                 VDFS磁盘分布信息
---------------------------------------------------------
     | SB SuperBlock   : 一个扇区(0号)
Info | IB InodeBitmap  : 一个扇区(1号)
     | DB DataBitmap   : 一个扇区(2号)
---------------------------------------------------------
     | Inodes       : 128个扇区(共1024个Inode,1024/8=128个扇区)
Data |
     | FileData     : 4096个扇区(大小 2M, 共 2*1024*1024/512=4096个扇区)
---------------------------------------------------------

0  1  2  3          131                            4227        扇区号
+---------------------------------------------------+
|  |  |  |           |                              |
|SB|IB|DB|  Inodes   |           Data               |
|  |  |  |           |                              |
+---------------------------------------------------+
 1  1  1     128                 4096                          扇区数量

构建

cd build
make clean
make

运行

make完成后build目录下会生成一个名为vdfs的可执行文件,可运行之。

cd build
./vdfs

使用

运行后会启动一个简易的shell,可以输入命令来执行,输入help来获取帮助信息,输入help 命令名获取命令的详细使用方法说明。

目前支持的命令有:

Command         Description
-------         -----------
exit            保存所有更改并退出shell
help            打印命令帮助信息
mount           加载虚拟磁盘文件
eject           卸载当前虚拟磁盘文件
mkfs            将磁盘格式化
ls              列出路径下的文件
cd              修改当前路径
cat             输出文件内容
save            将文件保存至虚拟磁盘
load            将文件从虚拟磁盘中取出
mkdir           在虚拟磁盘中创建目录
rm              将文件从虚拟磁盘中删除

更详细的使用方法请观看:使用方法asciinema演示

TODO

  • [] 进行更完善的测试工作
  • [] 进一步完善缓存等部分以减少I/O
  • [] 运行错误处理规范化
  • [] 支持更大的磁盘文件