![Yikun Jiang](/assets/img/avatar_default.png)
1. Add computing offloading code 2. Add script.md 3. Add virsh_demo.xml Change-Id: Id9ef883e2f0eb727eb5448b9d1c47767f46b1021 Signed-off-by: Yikun Jiang <yikunkero@gmail.com>
70 lines
2.1 KiB
Markdown
70 lines
2.1 KiB
Markdown
# qtfs
|
||
|
||
## 介绍
|
||
|
||
qtfs是一个共享文件系统项目,可部署在host-dpu的硬件架构上,也可以部署在2台服务器之间。以客户端服务器的模式工作,使客户端能通过qtfs访问服务端的指定文件系统,得到本地文件访问一致的体验。
|
||
|
||
qtfs的特性:
|
||
|
||
+ 支持挂载点传播;
|
||
|
||
+ 支持proc、sys、cgroup等特殊文件系统的共享;
|
||
|
||
+ 支持远程文件读写的共享;
|
||
|
||
+ 支持在客户端对服务端的文件系统进行远程挂载;
|
||
|
||
+ 支持特殊文件的定制化处理;
|
||
|
||
+ 支持远端fifo、unix-socket等,并且支持epoll,使客户端和服务端像本地通信一样使用这些文件;
|
||
|
||
+ 支持基于host-dpu架构通过PCIe协议底层通信,性能大大优于网络;
|
||
|
||
+ 支持内核模块形式开发,无需对内核进行侵入式修改。
|
||
|
||
## 软件架构
|
||
|
||
软件大体框架图:
|
||
|
||
![qtfs-arch](./figures/qtfs-arch.png)
|
||
|
||
## 安装教程
|
||
|
||
目录说明:
|
||
|
||
+ **qtfs**: 客户端内核模块相关代码,直接在该目录下编译客户端ko。
|
||
|
||
+ **qtfs_server**: 服务端内核模块相关代码,直接在该目录下编译服务端ko和相关程序。
|
||
|
||
+ **qtinfo**: 诊断工具,支持查询文件系统的工作状态以及修改log级别等。
|
||
|
||
+ **demo**、**test**、**doc**: 测试程序、演示程序以及项目资料等。
|
||
|
||
+ 根目录: 客户端与服务端通用的公共模块代码。
|
||
|
||
首先找两台服务器(或虚拟机)配置内核编译环境:
|
||
|
||
1. 要求内核版本在5.10或更高版本。
|
||
2. 安装内核开发包:yum install kernel-devel。
|
||
|
||
服务端安装:
|
||
|
||
1. cd qtfs_server
|
||
2. make clean && make
|
||
3. insmod qtfs_server.ko qtfs_server_ip=x.x.x.x qtfs_server_port=12345 qtfs_log_level=WARN
|
||
4. ./engine 4096 16
|
||
|
||
客户端安装:
|
||
|
||
1. cd qtfs
|
||
2. make clean && make
|
||
3. insmod qtfs.ko qtfs_server_ip=x.x.x.x qtfs_server_port=12345 qtfs_log_level=WARN
|
||
|
||
## 使用说明
|
||
|
||
安装完成后,客户端通过挂载把服务端的文件系统让客户端可见,例如:
|
||
|
||
mount -t qtfs / /root/mnt/
|
||
|
||
客户端进入"/root/mnt"后便可查看到server端的所有文件,以及对其进行相关操作。
|