南京酷派软件技术有限公司 江苏南京 210000
摘要:随着5G、Wi-Fi、AI以及云存储技术快速发展,支持5G和WiFi功能的终端设备越来越多,应用场景也越来越丰富。本文提出一种扩展用户终端存储空间的设计,将存储在终端设备中的数据通过AI策略上传到云端,用户需要浏览数据时实时通过5G或者WiFi从云端下载到终端,解决终端设备存储空间不足的问题。
关键词:5G ,存储, 云, AI
引言:随着安装到终端的应用软件包越来越大(各类应用经过迭代,功能越来越多,多媒体文件分辨率越来越高)、应用软件使用过程中生成的用户数据越来越多(终端使用时间越来越长,生产的用户数据也越来越多,以微信为例,使用一年后,其占用的存储空间竟高达20G)、各类应用软件的数量越来越多(终端安装的应用越多,就会占用更多的存储空间),用户都会面临终端使用过程中存储空间不足问题。设备存储空间不足会给用户带来不好的体验。如设备频繁出现卡顿、Crash、发烫、无法安装新的应用、无法正常使用应用等。
现有解决设备存储空间不足的方案有:用户直接花高价钱购买大内存设备,但随着使用时间增长,还是不可避免上面问题。用户可以定期备份本地资料到PC或者网盘,再删除本地资料以节省空间。但是,当用户需要用到这些资料时,只能重新下载到设备上,费时费力。支持SD卡的设备,用户可能会选择使用SD卡来存储更多的资料,但是,SD卡存在读取速度慢、易损坏、易丢失的明显缺点。要彻底解决终端存储空间不足,同时又不影响用户体验,需要解决两个关键点:文件存到哪儿和怎样随时快速访问文件。
(1)上层应用不关心文件到底存在哪儿。通过改造文件系统,将文件保存在什么地方这件事对上层应用透明,存储介质可以分布在手机或云端,上层应用不需要做任何修改适配。
(2)用户感知不到访问的是云端文件还是本地文件。用户通过5G或者WiFi高速率网络下载云端文件跟从本地读取文件体验上无差异,用户感知不到文件来源于云端还是本地。
(3)后台智能决策可以上传到云端的文件和时间。AI算法结合文件属性和本地存储空间,智能化决策什么时间、哪些文件上传到云端,释放本地存储空间,整个过程用户无感知。
(4)多设备共享云端文件。用户使用手机或者平板,登录同一个云端账号,就可以下载云端文件到本地。如果手机丢失了,用户只要换个手机,登录云端账号,就可以下载之前手机保存到云端的所有数据,如照片、视频、微信记录、联系人等,没有丢失数据的顾虑。
整个框架设计包括文件系统、文件管理控制中心、AI策略管理三部分,设计保持Android上层以及原生文件系统不动,保证系统的稳定性以及对上层应用的兼容性。
图1 整体框架设计
2.1文件系统设计和实现
本设计自研一套云文件系统,命名为CoolFS,实现文件操作的所有功能,并支撑云存储。CoolFS文件系统与内核其他模块解耦,以一个独立的目录呈现,减少原生kernel代码改动,保证系统稳定性。CoolFS采用shadow file的特殊设计。文件上传至云端后,设备端把文件truecate设置成0 size,没有删除文件。然后通过inline xattr方式存储原始的attr属性。设备端文件没有真实的用户数据,只是一个空文件,称为shadow file。上层应用读取文件时,根据路径访问到Kernel层的VFS,会先调用CoolFS Manager模块,判断从哪个磁盘读取文件:如果文件在本地磁盘,调用文件系统 sdcardfs,再到Local Disk读取文件。访问本地文件走图中蓝色路径,这是原生kernel逻辑。如果文件在云端磁盘,访问云端文件数据,走图中红色路径,如图中①②打开文件时,对shadow file执行原生kernel lookup流程,得到inode知道该文件存储在云端,并将struct file、struct dentry、struct inode的operations替换成CoolFS的函数指针值。③read读取云端文件数据时,首先执行原生kernel的流程在page cache中查找,该文件第一次操作时没有数据,就执行khttp接口从云端获取。Cloud Adapter将CoolFS的文件操作封装成HTTP网络协议包,通过5G或者WiFi网络发送到云端。总体方案达成之后,应用既不知道有CoolFS的存在,也不知道文件数据是从哪里获取的。
2.2文件系统管理模块
文件系统管理模块有三部分工作:文件属性维护、上传文件到云端以及从云端读取文件。文件属性维护主要包括VFS Adaper、DataBase和CoolFS Translation Layer。VFS Adaper适配原生内核,做到对原生文件系统无感知,即对上层屏蔽底层的细节;DataBase记录云端文件列表、文件真实属性;CoolFS Translation Layer根据数据库信息,决定访问本地磁盘还是云端,搬迁数据统一入口,搬移后文件属性维护。接受AI模块指令,通过File Migration实现将需要上传到云端的文件从Local Disk传到Cloud Disk上,并记录被搬迁的文件路径和文件属性到DataBase中。从DataBase中读文件信息,检查文件在哪个磁盘,如果在Cloud Disk,则调用CoolFS读取文件以及文件属性、权限等。
2.3AI策略管理模块
定期扫描本地磁盘以及本地磁盘剩余空间不足时执行扫描磁盘文件,根据AI规则决定搬迁哪些文件到云端。例如本地磁盘空间不足30%、磁盘中有超过半年没被访问过的文件,都可以作为上传策略,AI算法设置固定时间或者触发条件,获取本地文件固定时间或者本地文件属性和剩余存储空间等参数,执行扫盘策略,与CoolFS Manager交互,告知搬迁哪些文件,控制CoolFS行为。CoolFS实时记录每个文件的AI指标,定期存入inline扩展属性。用户态通过标准接口getxattr获取属性值。属性值一直增长,被读取后自动清0,此机制用于实现断点读取功能,即android daemon不需要一次性读取所有的文件属性,可根据系统空闲状态、网络状态决定一次上传多少文件。
下面讲述具体设计实例。首先设计需要上传到云端的文件策略:长时间不使用的文档、视频、图片、音频、压缩包等大文件,例如音视频时长大于1个月、文件大小大于1MB、超过1个月未使用的APP等。然后执行上传到云端流程,上传到云端后,本地保存文件信息。文件被上传后,本地删除源文件,使用inode和metadata扩展属性来记录该文件。比如搬迁手机中图片文件:/storage/emulated/0/DCIM/Camera/IMG_20231207_102510.jpg,该文件的信息有:文件名和文件类型File: IMG_20231207_102510.jpg;文件大小Size 1.5M: 1616831;占用的block数目Blocks: 3160,IO Blocks: 512;普通文件类型regular file;
Device: 43h/67d;节点Inode: 28508;文件被链接数Links: 1;访问权限Access: (0660/-rw-rw----);用户信息Uid: (0/root);用户组Gid:9997/everybody;最后一次读取的时间Access: 2023-12-07 10:25:11.496000011 +0800;最后一次修改数据的时间
Modify: 2023-12-07 10:25:11.504000011 +0800;删除这个文件后,本地磁盘会用一个inode节点来记录该文件的信息,然后用扩展属性来记录文件在哪里。没有被上传的文件,就没有扩展属性。本地有inode记录,就能知道有IMG_20231207_102510.jpg这个文件在云端,否则本地文件系统不知道有这个文件的存在。
能够上传到云端的文件类型有图片、视频、文档、压缩包、APP等。图片搬迁时本地会保存缩略图,上层app调用到VFS,会先判断5G或者WiFi是否可用,如果没有网络,就直接从本地磁盘中读取缩略图。如果网络正常,则先读取扩展属性,访问CoolFS,通过http访问到云端磁盘。视频搬迁后,保存文件信息,同时生成一帧的封面。视频上传到云端后,云端会转换成流媒体视频,这样本地相册点击视频播放的时候,以流媒体的形式播放的,播放完也会保存到本地,无需等待从云端下载完整视频后才能观看,保证了无感体验。文档、压缩包等非多媒体文件上传后,保存文件信息,但网络不可用时获取不到文档或压缩包。上传很久不使用的APP,本地桌面保留APP图标,当用户点击APP时,下载到本地磁盘,没有安装过程。考虑网速和本地磁盘读取速度差异,方案设计成APP下载到本地磁盘,而不是直接运行在云端,这样APP运行起来就不会卡顿。 后续方案可以设计成APP直接运行在
应用本设计的终端,进入设备存储空间页面,可以展示本地磁盘已用空间和保存在云端的每种类型的文件数据大小。后续可以设计成云手机,APP和数据库都在云端运行。
智能终端都有一块物理连接的存储芯片,日常使用的文件会存储在物理芯片中。而云端存储是通过网络连接,将数据存在远端的芯片,借助5G的高速率,让用户访问远端存储芯片跟本地存储芯片体验无差异。本方案结合5G、云存储、AI技术,智能上传终端数据到云端,减少终端本地磁盘空间占用,有效降低了终端设备硬件成本,解决了用户使用终端设备过程中面临存储不足的痛苦。用户需要数据时通过5G或者WiFi实时从云端下载到本地,满足用户流畅体验。存储在云端的数据关联用户ID,用户可以使用相同ID登录手机、平板、手表等不同设备,共享云端数据。即使终端丢失,也无丢失数据的烦恼。需要读写文件系统的应用,都可以使用该方案,契合5G高速网络的应用场景落地。
参考文献
1.张书宁《文件系统技术内幕:大数据时代海量数据存储之道》电子工业出版社 2022.1
2.斯图尔特·罗素彼得·诺维格《人工智能:现代方法》人民邮电出版社 2022.12
3.虞卫东 《深入浅出 HTTPS:从原理到实战》 电子工业出版社 2022.1
4.Jim SalterUnderstanding Linux filesystems:ext4 and beyond|Opensource.com
2018.2
5.王永俊 李静 《云存储实战》 机械工业出版社 2017.9