HarmonyOS开发实战:分布式文件系统-hmdfs

csdn推荐

分布式文件系统提供跨设备的文件访问能力,适用于如下场景:

hmdfs 在分布式软总线动态组网的基础上,为网络上各个设备结点提供一个全局一致的访问视图,支持开发者通过基础文件系统接口进行读写访问,具有高性能、低延时等优点。

其包括如下几个核心模块:

约束 接口支持情况

分布式文件管理当前不支持或有限支持如下 VFS 系统调用:

规格 环境约束 说明 安装

说明:如果碰到步骤未成功执行,可参考后面常见问题进行解决。

完整地使用分布式文件系统,需要安装hmdfs和filemanagement_dfs_service两个软件包。使用以下命令安装:

sudo dnf install hmdfs filemanagement_dfs_service

安装 hmdfs 文件系统。安装 hmdfs 之后会提供一个hmdfs.ko文件,其存放在/lib/modules/$(uname -r)/hmdfs目录下,需要插入该 ko 来安装 hmdfs 文件系统:

cd /lib/modules/$(uname -r)/hmdfs
insmod hmdfs.ko

注意: 如果 /lib/modules/$(uname -r)/hmdfs/ 目录下没有 hmdfs.ko 文件,是因为 hmdfs 工程构建时依赖的内核版本和当前运行环境内核版本不一致,可以在 /lib/modules 其他内核版本目录下查找 hmdfs.ko 文件

配置

后续有服务启动依赖libsec_shared.z.so这个动态库,而在 openEuler 下这个动态库叫做libboundscheck.so(由libboundscheck软件包提供),因此需要在/usr/lib64下软链接出一个libsec_shared.z.so:

ln -s /usr/lib64/libboundscheck.so /usr/lib64/libsec_shared.z.so

配置每个设备的 SN 号。目前softbus_sever等服务获取设备的udid还是使用/etc/SN文件中设置的 SN 号,因此需要在每台 openEuler 设置不同的 SN 号。

echo "111" > /etc/SN # 注意:不同设备设置不同的数值

使用

分布式文件系统的使用分为两块:挂载 hmdfs 目录和启动 distributed_file_daemon 服务。注意:以下步骤需要在每台 openEuler 设备下执行。

挂载 hmdfs 目录

挂载 hmdfs 目录,可以直接使用mount命令进行挂载,保持 OpenHarmony 的目录结构一样,挂载/data/service/el2/100/non_account到/mnt/hmdfs/100/non_account。

mkdir -p /data/service/el2/100/non_account
mkdir -p /mnt/hmdfs/100/non_account
sudo mount -t hmdfs -o merge,local_dst="/mnt/hmdfs/100/non_account" "/data/service/el2/100//non_account" "/mnt/hmdfs/100/non_account"

挂载之后,可以使用df -h命令查看新增了挂载的目录,并且挂载目录下会有device_view和merge_view两个目录:

├── device_view
│   └── local
└── merge_view

启动 dfs_service 服务

安装filemanagement_dfs_service及其依赖的软件包后,相关的可执行二进制会存放在/system/bin/目录下,库文件会存放在/system/lib64下。

启动dfs_service分布式文件服务:

cd /system/bin
./start_services.sh dfs

停止dfs_service分布式文件服务:

cd /system/bin
./stop_service.sh dfs

功能使用

每台 openEuler 设备启动完 distributed_file_daemon 之后,可以在挂载的/mnt/hmdfs/100/non_account下看到远端设备的目录(示例是只有两台 openEuler 设备互联):

├── device_view
│   ├── fceda1e26c36d1dd0ba65c00d71c1ab619fcf088ad2adf33cd1e2f396dc70ee2
│   └── local
└── merge_view

⽬录下会有两个⽂件视图:device_view 是分设备的视图,local 是本地⽂件视图,另外⼀个是远端设备的⽂件视图;merge_view 是合并视图,多个设备的⽂件都在这⼀个⽬录。

后续需要跨设备进行⽂件操作,只需要操作 device_view 下⾯远端设备⽬录下的⽂件即可。

常见问题

文章来源:https://blog.csdn.net/m0_64422261/article/details/140085390



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容