美文网首页
挂载与存储

挂载与存储

作者: 大海无垠_af22 | 来源:发表于2018-11-10 16:59 被阅读0次

            nextcloud的数据组织结构是一个虚拟的文件系统。这个系统的根目录下存在两种目录,一种是用户目录,以用户ID为名,另一种是应用数据目录,如插件的数据目录appdata_{instanceid}.这里的instanceid来自于配置文件中的instanceid值,又如外部存储插件目录files_external。

    nextcloud支持多种存储,如本地文件系统、对象存储、ftp、owncloud等,这些存储类型需要提供基本的目录、文件的读写创建删除功能。在这个基础之上,nextcloud允许对基本存储进行包裹。包裹的基类是OC\Files\Storage\Wrapper\Wrapper,基本的包裹类有Availability(检查存储有效性)、Encoding(应对非utf8编码)、Encryption(加密)、Jail(使用子目录作根目录)、PermissionsMask、Quota。

    最基本的存储类型是Local,即本地文件系统存储,该存储以配置文件中指定的数据目录为根路径。最常用的包裹类存储是Home,这是每个用户的存储,其实是对主存储的子目录的包装。

    存储的信息存放在表oc_storages中,简单的示例如下所示。在下图中,本地文件系统的Local类型存储作为基本存储,每个用户使用一个包装之后的存储,如root用户的home::root。下图中还有一个外部存储,使用的S3对象存储,id是amazon::bktnextcloud,表明使用桶bktnextcloud存储数据。

    oc_storages示例

    nextcloud每个存储实例会挂载到虚拟文件系统的一个目录上。默认的,Local存储挂载到根目录,Home存储挂载到用户目录下。挂载的信息存储到表oc_mounts中。

    示例如下。ID为home::root的存储挂载/root目录下,对应的是用户root。

    oc_mounts示例

    注意的上图中的id=4的挂载。这其实是个分享,root用户把root子目录分享给用户user,在user下的绝对路径是/user/files/root,这个目录是虚构的,在/user/files/下是不存在的,但是在计算的时候会综合计算到这个分享。从这里可以看到,分享其实是一个子目录挂载的过程。一个用户将目录分享给另外一个用户,就是将自己的Home存储挂载到另一个用户下的分享路径上。

    相关文章

      网友评论

          本文标题:挂载与存储

          本文链接:https://www.haomeiwen.com/subject/lunzxqtx.html