6.2.?类型

6.2.1. 全局共享的类型
6.2.2. 在MRC和OSD之间共享的类型
6.2.3. 异常
6.2.4. 目录服务接口
6.2.5. 元数据和副本目录接口
6.2.6. 对象存储设备接口

6.2.1.?全局共享的类型

全局共享数据结构在interfaces / types.idl中定义。

struct UserCredentials

如果使用UXFS身份验证,则在ONC RPC opaque_auth正文中发送用户信息。 userID和groupID的外观取决于客户端中使用的转换本地uid / gid的策略。

user_id

全局唯一的用户ID

group_ids

全局唯一groupID列表(必须至少包含一个条目)

Password

某些操作所需的管理员密码(以明文形式)(例如mkvol)

6.2.2.?在MRC和OSD之间共享的类型

主要在MRC和OSD之间共享的类型在interfaces / mrc_osd_types.idl中定义。

struct NewFileSize

如果文件大小已更改,则由OSD响应文件修改操作发送。客户端可以缓存这些更新,并在更新功能时将其发送到MRC,在fsync / flush和close上。客户端只需要发送从OSD接收的给定文件的最新记录。最近意味着:(size_in_bytes’> size_in_bytes AND truncate_epoch’== truncate_epoch) OR (truncate_epoch’ > truncate_epoch)。客户端应使用从OSD接收的NewFileSize记录更新其本地文件大小缓存。 客户端应该使用stat上的本地缓存文件大小而不是MRC的结果来确保本地进程看到自己的修改。

size_in_bytes

新文件大小(以字节为单位)

truncate_epoch

截断执行此操作的时期(由MRC排序更新)

struct OSDtoMRCData

OSD发送给客户端的数据,预计将其传递给MRC。 当数据应该传递给MRC时,取决于caching_policy。

caching_policy

描述了如何允许客户端缓存数据(何时将其发送到MRC)

data

明确的数据

struct StripingPolicy

描述如何将副本(文件的一个副本)拆分为对象。

policy

描述了用于在OSD之间分配对象的方案,例如, RAID0用于简单的循环切片

stripe_size

以千字节为单位的对象大小必须> = 4

width

用于切片的OSD数量必须> = 1

struct Replica

描述文件的单个副本。

striping_policy

用于此副本的切片策略

replication_flags

值取决于复制策略,例如 表示完整或懒惰的副本

osd_uuids

有序(!)保存文件对象的OSD列表

struct XLocSet

描述完整文件以及所有副本(副本)以及它们如何保持一致。

replicas

文件副本列表(即副本结构列表)

version

在列表的每次修改时由MRC递增。 OSD用于拒绝使用过期列表的客户端

repUpdatePolicy

用于保持副本同步的策略

read_only_file_size

文件的大小(以字节为单位),仅用于只读复制

struct XCap

由MRC发布的安全令牌,授权客户端对OSD上的文件执行操作。

file_id

可以使用该功能的文件

access_mode

为客户端授权的POSIX访问模式(例如,只读,删除,写入,截断)

expires_s

能力变为无效时的绝对时间戳(自纪元以来的秒数)

client_identity

由MRC设置的客户端标识,当前是客户端的IP地址

truncate_epoch

文件的当前截断时期

server_signature

MRC用于验证XCap的功能的签名。 使用MRC和OSD配置中指定的共享密钥创建签名

struct FileCredentials

包含文件的XLocSet和XCap的记录。 大多数OSD操作都需要。

Xlocs

the XLcSet

xcap

能力

sequence<FileCredentials> FileCredentialsSet

由MRC用于不返回或最多返回一个FileCredentials记录。

struct OSDWriteResponse

记录包含文件大小更新和OSDtoMRCData。 从所有数据修改操作返回。

new_file_size

如果文件大小已更改,则不包含任何记录或至多一条记录

opaque_data

包含0个或更多记录

6.2.3.?异常

可以与RPC连接引发的异常在interfaces / exceptions.idl中定义。

exception ProtocolException

抛出ONC RPC错误(例如GARBAGE_ARGS)。

accept_stat

ONC RPC accept_stat值

error_code

如果POSIX有错误的话

stack_trace

可选,仅用于调试

exception errnoException

由MRC抛出以指示POSIX错误。

error_code

如果POSIX有错误的话

error_message

可选,信息

stack_trace

可选,仅用于调试

exception RedirectException

由DIR,MRC和OSD抛出,以将客户端重定向到另一个服务。使用例如 用于主从复制以将客户端定向到当前主服务器。

to_uuid

服务联系

exception ConcurrentModificationException

如果在此期间其他服务修改了记录,则由DIR抛出。

stack_trace

可选,仅用于调试

exception InvalidArgumentException

如果输入值不可接受,则由DIR抛出。

error_message

描述正确值的错误消息。

6.2.4.?目录服务接口

目录服务接口在interfaces / dir_interface.idl中定义。

struct AddressMapping

将服务UUID映射到协议,主机名/ IP和端口。 服务可以具有针对不同网络的多个映射(例如,在具有私有IP地址的集群内)。 目前,match_network仅支持“*”,表示所有网络都匹配。

uuid

服务的UUID

version

记录的版本,由DIR用于检测并发修改

protocol

服务使用的协议

address

文本形式的可解析主机名或IP地址

port

服务监听的端口

match_network

将来必须使用的

ttl_s

以秒为单位的生存时间,表示该记录在从DIR重新获取之前可以缓存多长时间

sequence<AddressMapping> AddressMappingSet

UXFS的未来版本将支持多网络设置,以便在群集中常见的共享公共/私有网络环境中简化UXFS的使用。

struct Service

有关在DIR注册的服务的信息。

uuid

服务的UUID

version

记录的版本,由DIR用于检测并发修改

type

服务类型

name

人类可读的服务名称;对于卷:唯一的卷名称

last_updated_s

最后一次的时间戳(以纪元为单位的秒数)服务在DIR更新了它的条目。 用作粗粒(快速处理?)心跳信号

data

取决于服务的附加数据的映射(例如,卷的MRC或OSD的可用空间)

void UXFS_address_mappings_get(string uuid, out AddressMappingSet address_mappings )

获取uuid指定的服务的地址映射。

uuid

服务的UUID

out address_mappings

如果不存在映射,则为空,否则为一个(或多个)记录

void UXFS_address_mappings_remove( string uuid )

从DIR中删除地址映射。

uuid

服务的UUID

uint64_t UXFS_address_mappings_set(AddressMappingSet address_mappings)

更新服务的地址映射。

address_mappings

新的映射。 所有记录中的UUID必须相同。 对于新映射或从DIR最后一次读取获得的版本,版本必须为0

returns

新版本的映射

throws ConcurrentModificationException

如果在读取和更新记录之间更新了记录(版本增加了DIR)

void UXFS_checkpoint( )

强制DIR创建Redis检查点。 此操作不会阻止,异步创建检查点。 必须通过UXFS身份验证发送管理员密码。

uint64_t UXFS_global_time_s_get( )

从纪元开始,以秒为单位返回DIR上的当前系统时间。 用于将MRC和OSD同步到全局UXFS系统时间。 DIR系统应使用例如精确时钟与精确时钟同步。NTP。

returns

自UNIX时代以来的系统时间(秒)

void UXFS_service_get_by_type(uint16_t type, out ServiceSet services )

获取在DIR注册的特定类型的所有服务。

type

返回的服务类型

out services

所有匹配的服务

void UXFS_service_get_by_uuid(string uuid, out ServiceSet services)

获取具有特定UUID的服务的服务信息。

uuid

服务的UUID

out services

一条记录,如果服务已注册,否则为空列表

void UXFS_service_get_by_name(string name, out ServiceSet services)

获取具有特定名称的服务的服务信息。

name

服务的名字

out services

一条记录,如果服务已注册,否则为空列表

uint64_t UXFS_service_register(Service service)

在DIR更新服务注册。 更新服务的last_update_s字段。

service

服务的数据。 UUID必须是服务的UUID,新服务的版本必须为0,或者最后从DIR读取的版本必须为0

returns

新版本的映射

throws

ConcurrentModificationException - 如果在读取和更新记录之间更新了记录(版本增加了DIR)

void UXFS_service_deregister(string uuid)

从DIR中删除服务的服务注册表项。

uuid

服务的UUID

void UXFS_service_offline(string uuid)

将last_update_s字段设置为0,表示该服务已脱机。

uuid

服务的UUID

void UXFS_shutdown( )

关闭DIR服务。必须通过UXFS身份验证发送管理员密码。

6.2.5.?元数据和副本目录接口

MRC接口在interfaces/xtreemfs/MRC.proto中定义。

rpc fsetattr(fsetattrRequest) returns(emptyResponse)

设置打开文件的属性

rpc ftruncate(XCap) returns(XCap)

截断打开的文件

rpc getattr(getattrRequest) returns(getattrResponse)

返回文件或目录的属性

rpc getxattr(getxattrRequest) returns(getxattrResponse)

返回文件或目录的扩展属性

rpc link(linkRequest) returns(timestampResponse)

创建到文件的硬链接

rpc listxattr(listxattrRequest) returns(listxattrResponse)

返回文件或目录的扩展属性列表

rpc mkdir(mkdirRequest) returns(timestampResponse)

创建新目录

rpc open(openRequest) returns(openResponse)

创建新文件或打开现有文件以获取文件凭据

rpc readdir(readdirRequest) returns(DirectoryEntries)

返回一个目录中所有嵌套文件和目录的列表

rpc readlink(readlinkRequest) returns(readlinkResponse)

返回符号链接的目标路径

rpc removexattr(removexattrRequest) returns(timestampResponse)

从文件或目录中删除扩展属性

rpc rename(renameRequest) returns(renameResponse)

重命名文件或目录

rpc rmdir(rmdirRequest) returns(timestampResponse)

删除空目录

rpc setattr(setattrRequest) returns(timestampResponse)

设置文件或目录的属性

rpc setxattr(setxattrRequest) returns(timestampResponse)

设置文件或目录的扩展属性

rpc statvfs(statvfsRequest) returns(StatVFS)

返回有关已装入卷的信息

rpc symlink(symlinkRequest) returns(timestampResponse)

创建指向文件或目录的符号链接

rpc unlink(unlinkRequest) returns(unlinkResponse)

移除文件的链接,如果没有更多链接,则删除文件。

rpc access(accessRequest) returns(emptyResponse)

检查对文件或目录的访问

rpc xtreemfs_checkpoint(emptyRequest) returns(emptyResponse)

在MRC上强制执行数据库检查点

rpc xtreemfs_check_file_exists(xtreemfs_check_file_existsRequest) returns(xtreemfs_check_file_existsResponse)

检查是否存在某一组文件

rpc xtreemfs_dump_database(xtreemfs_dump_restore_databaseRequest) returns(emptyResponse)

将mrc数据库转储到mrc主机上的转储文件中

rpc xtreemfs_get_suitable_osds(xtreemfs_get_suitable_osdsRequest) returns(xtreemfs_get_suitable_osdsResponse)

返回给定文件副本的合适OSD列表

rpc xtreemfs_internal_debug(stringMessage) returns(stringMessage)

用于内部调试

rpc xtreemfs_listdir(xtreemfs_listdirRequest) returns(xtreemfs_listdirResponse)

返回所有的dir

rpc xtreemfs_lsvol(emptyRequest) returns(Volumes)

返回mrc上所有卷的列表

rpc xtreemfs_mkvol(Volume) returns(emptyResponse)

创建新卷

rpc xtreemfs_renew_capability(XCap) returns(XCap)

更新现有的扩展有效期的能力

rpc xtreemfs_replication_to_master(emptyRequest) returns(emptyResponse)

从主节点复制

rpc xtreemfs_replica_add(xtreemfs_replica_addRequest) returns(emptyResponse)

向文件中添加副本

rpc xtreemfs_replica_list(xtreemfs_replica_listRequest) returns(Replicas)

列出文件的所有副本(已弃用)

rpc xtreemfs_replica_remove(xtreemfs_replica_removeRequest) returns(FileCredentials)

从文件中删除副本

rpc xtreemfs_restore_database(xtreemfs_dump_restore_databaseRequest) returns(emptyResponse)

从mrc主机上的转储文件还原mrc数据库

rpc xtreemfs_restore_file(xtreemfs_restore_fileRequest) returns(emptyResponse)

恢复在OSD上存在孤立对象的MRC上的文件

rpc xtreemfs_rmvol(xtreemfs_rmvolRequest) returns(emptyResponse)

删除卷

rpc xtreemfs_shutdown(emptyRequest) returns(emptyResponse)

终止MRC

rpc xtreemfs_update_file_size(xtreemfs_update_file_sizeRequest) returns(timestampResponse)

更新文件大小并指示文件已关闭

rpc xtreemfs_set_replica_update_policy(xtreemfs_set_replica_update_policyRequest) returns(xtreemfs_set_replica_update_policyResponse)

在由文件ID标识的文件上设置副本更新策略(仅限特权用户!)

rpc xtreemfs_set_read_only_xattr(xtreemfs_set_read_only_xattrRequest) returns(xtreemfs_set_read_only_xattrResponse)

设置由文件ID标识的文件的只读属性(仅限特权用户!)

rpc xtreemfs_get_file_credentials(xtreemfs_get_file_credentialsRequest) returns(FileCredentials)

返回由文件ID标识的文件的一组文件凭据(capability+xloclist)(仅限特权用户!)

rpc xtreemfs_get_xlocset(xtreemfs_get_xlocsetRequest) returns(XLocSet)

返回指定文件的当前xlocset

rpc xtreemfs_update_file_size_batch(xtreemfs_update_file_size_batchRequest) returns(timestampResponse)

在批处理模式下更新文件的大小

rpc xtreemfs_update_redis_node(DisNode) returns(redisResponse)

更新redis的节点信息

rpc uxfs_get_fileIds(get_fileIds_Request) returns(get_fileIds_Response)

根据OSD的UUID返回当前OSD上存在的文件ID和文件大小

rpc uxfs_get_file_credentials_batch(get_file_credentials_batchResponse) returns(get_file_credentials_batchResponse)

批处理获取文件凭据

rpc uxfs_set_xlocList(successfile) returns(isSuccessMessage)

设置文件的xlocList数据

上述接口中用到的message如下:

message Stat

单个文件或目录的属性信息

posix属性

required fixed64 dev

设备的编号,由卷id的哈希表示

required fixed64 ino

inode号;由文件id表示

required fixed32 mode

posix访问模式

required fixed32 nlink

硬链接计数

required string user_id

所属用户id

required string group_id

所属组id

required fixed64 size

文件大小

required fixed64 atime_ns

访问时间

required fixed64 mtime_ns

数据修改时间

required fixed64 ctime_ns

索引节点更改时间

required fixed32 blksize

块大小;由分片大小表示

UXFS特定属性

optional fixed64 etag

stat对象的标识标记

required fixed32 truncate_epoch

截断epoch

optional fixed32 attributes

win32特定属性

message DisNode

redis节点信息

required string address

服务ip地址

required fixed32 port

服务端口

message redisResponse

更新redis节点信息接口的响应

required string resolve

是否更新成功

message DirectoryEntry

单个的文件或文件夹数据

required string name

文件或子目录名称

optional Stat stbuf

包含关联的stat信息

message DirectoryEntries

目录项列表

repeated DirectoryEntry entries

重复的目录条目

message XAttr

文件或目录的扩展属性

required string name

属性名

optional string value

属性值

optional bytes value_bytes_string

属性值的byte值

message volume

有关卷的信息

required AccessControlPolicyType access_control_policy

分配给卷的访问控制策略

required StripingPolicy default_striping_policy

分配给卷的默认分片策略

required string id

卷id

required fixed32 mode

根目录的初始访问模式

required string name

卷名

required string owner_group_id

拥有卷的组ID(即卷的根目录)

required string owner_user_id

拥有卷的用户ID(即卷的根目录)

repeated KeyValuePair attrs

卷的可选配置属性

optional fixed64 quota

可选卷配额

message volumes

卷的列表

repeated Volume volumes

重复的Volume消息体

message StatVFS

有关文件系统(即装入的卷)的信息

posix属性

required fixed32 bsize

块的大小(字节)

required fixed64 bavail

文件系统中非特权用户可用的块数

optional fixed64 bfree

文件系统中的可用块数

required fixed64 blocks

文件系统中的块总数

required string fsid

卷ID

required fixed32 namemax

最大文件名长度

UXFS特定属性

required AccessControlPolicyType access_control_policy

卷的访问控制策略

required StripingPolicy default_striping_policy

卷的默认分片策略

required fixed64 etag

statvfs对象的标识标记

required fixed32 mode

卷根目录的访问模式

required string name

卷名

required string owner_group_id

拥有卷的组ID(即卷的根目录)

required string owner_user_id

拥有卷的用户ID(即卷的根目录)

enum Setattrs

枚举类型,属性名

SETATTR_MODE

访问模式

SETATTR_UID

用户ID

SETATTR_GID

组ID

SETATTR_SIZE

长度

SETATTR_ATIME

访问时间

SETATTR_MTIME

修改时间

SETATTR_CTIME

索引节点更改时间

SETATTR_ATTRIBUTES

其余属性

message fsetattrRequest

设置打开文件的文件属性

required Stat stbuf

包含要更新的属性的缓冲区

required fixed32 to_set

setAttrs的位置,指示要更新的属性

required XCap cap

mrc在打开文件时返回的功能

message getattrRequest

请求文件或目录的属性

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required fixed64 known_etag

一个标识标记,指示属性的最后一个已知版本

message getattrResponse

返回文件或目录的属性

optional Stat stbuf

属性对应的消息体

message getxattrRequest

请求文件或目录的扩展属性

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required string name

要检索的属性的名称

message getxattrResponse

返回文件或目录的属性值

required string value

属性值

optional bytes value_bytes_string

属性值的byte数组数据

message linkRequest

创建现有文件的新硬链接

required string volume_name

卷名

required string target_path

应该创建链接的文件的路径,相对于卷根

required string link_path

新链接的路径,相对于卷根

message listxattrRequest

请求文件或目录的扩展属性列表

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required bool names_only

表示不应返回属性值的标志

message listxattrResponse

返回文件或目录的扩展属性列表

repeated XAttr xattrs

重复的属性信息的消息体XAttr

message mkdirRequest

创建新目录

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required fixed32 mode

新建目录的初始访问方式

message openRequest

创建文件或打开文件并请求文件凭据

required string volume_name

卷名

required string path

相对于卷根的文件路径

required fixed32 flags

动作标志

required fixed32 mode

创建的文件的初始访问模式

required fixed32 attributes

win32特定属性的初始集

optional VivaldiCoordinates coordinates

客户端的可选vivaldi cooridents集,可用于排序副本列表

message openResponse

返回一组文件凭据

required FileCredentials creds

文件凭据

required fixed32 timestamp_s

已更新的时间戳

message readdirRequest

请求目录的内容

required string volume_name

卷名

required string path

相对于卷根目录的目录路径

required fixed64 known_etag

一个标识标记,指示目录的最后一个已知版本

required fixed32 limit_directory_entries_count

返回的目录条目的最大数目

required bool names_only

一个标志,表示只返回嵌套文件和目录的名称,不返回属性

required fixed64 seen_directory_entries_count

以前调用已经返回的目录项数

message readlinkRequest

请求符号链接的目标路径

required string volume_name

卷名

required string path

指向符号链接的路径,相对于卷根

message readlinkResponse

返回符号链接的目标路径

repeated string link_target_path

返回的符号链接的目标路径

message removexattrRequest

从文件或目录中删除扩展属性

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required string name

要删除的属性的名称

message renameRequest

更改文件或目录的路径名

required string volume_name

卷名

required string source_path

要更改的文件或目录的路径名

required string target_path

文件或目录的新路径名

message renameResponse

返回重命名操作的结果

required fixed32 timestamp_s

1970年以来更新文件和目录时间戳的服务器时间戳(秒)

optional FileCredentials creds

一组可选的文件凭据,其中可能包含删除给定目标路径上的前一个文件的功能

message rmdirRequest

删除空目录

required string volume_name

卷名

required string path

要删除的目录的路径

message setattrRequest

更改文件或目录的属性

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required Stat stbuf

包含要更新的属性的缓冲区

required fixed32 to_set

setAttrs的位图,指示要更新的属性

enum XATTR_FLAGS

枚举类型,setxattr请求的标志

XATTR_FLAGS_CREATE

创建

XATTR_FLAGS_REPLACE

替换

message setxattrRequest

设置文件或目录的扩展属性

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required string name

要设置的扩展属性的名称

required string value

要设置的扩展属性的(新)值

optional bytes value_bytes_string

(新)字节值

required fixed32 flags

指示属性是创建还是替换

message statvfsRequest

请求有关已装入卷的信息

required string volume_name

卷名

required fixed64 known_etag

一个标识标记,指示目录内容的最后一个已知版本

message symlinkRequest

创建指向文件的符号链接

required string volume_name

卷名

required string target_path

相对于卷根目录,应该创建链接的文件的路径

required string link_path

新链接的路径

message unlinkRequest

删除文件或目录

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

message unlinkResponse

返回取消链接操作的结果

required fixed32 timestamp_s

1970年以来更新文件和目录时间戳的服务器时间戳(秒)

optional FileCredentials creds

一组可选的文件凭据,其中可能包含删除给定目标路径上的前一个文件的功能

enum ACCESS_FLAGS

枚举类型,访问标志

ACCESS_FLAGS_F_OK

存在性

ACCESS_FLAGS_X_OK

执行权限

ACCESS_FLAGS_W_OK

写入权限

ACCESS_FLAGS_R_OK

读取权限

message accessRequest

检查是否授予对文件或目录的访问权限

required string volume_name

卷名

required string path

相对于卷根目录的文件或目录路径

required fixed32 flags

应该检查访问的标志;请参阅enum ACCESS_FLAGS

message xtreemfs_check_file_existsRequest

检查文件是否存在接口的请求参数

required string volume_id

卷名

repeated string file_ids

文件id列表

required string osd_uuid

osd的uuid

message xtreemfs_check_file_existsResponse

检查文件是否存在接口的响应参数

required bool volume_exists

卷是否存在

enum FILE_STATE {

枚举类型,文件状态

DELETED

删除

REGISTERED

注册

ABANDONED

放弃

}

repeated FILE_STATE file_states

文件状态

message xtreemfs_dump_restore_databaseRequest

重载数据库

required string dump_file

保存数据库数据的文件路径

message xtreemfs_get_suitable_osdsRequest

为文件的新副本请求合适的OSD列表

optional string file_id

文件ID

optional string path

文件的路径

optional string volume_name

卷名

required fixed32 num_osds

筛选和排序策略忽略的有效组中所需的OSD数

message xtreemfs_get_suitable_osdsResponse

返回合适的OSD列表

repeated string osd_uuids

重复的osd的uuid

message timestampResponse

包含时间戳的响应消息

required fixed32 timestamp_s

1970年以来更新文件和目录时间戳的服务器时间戳(秒)

message stringMessage

包含一个字符串消息的消息体

required string a_string

字符串

message xtreemfs_listdirRequest

返回所有dir接口的请求参数

required string path

相对于卷根目录的文件或目录路径

message xtreemfs_listdirResponse

返回所有dir接口的响应参数

repeated string names

重复的名称

message xtreemfs_replica_addRequest

向文件中添加副本

optional string file_id

文件ID

optional string path

文件的路径

optional string volume_name

卷名

required Replica new_replica

要添加的副本

message xtreemfs_replica_listRequest

请求文件的所有副本的列表(已弃用)

optional string file_id

文件ID

optional string path

文件的路径

optional string volume_name

卷名

message xtreemfs_get_xlocsetRequest

请求文件的xlocse

optional string file_id

文件ID

optional string path

文件的路径

optional string volume_name

卷名

optional XCap xcap

有效的xcap

message xtreemfs_replica_removeRequest

从文件中删除副本

optional string file_id

文件ID

optional string path

文件的路径

optional string volume_name

卷名

required string osd_uuid

要删除的副本的头osd的uuid

message xtreemfs_restore_fileRequest

通过创建新的元数据对象还原带有孤立文件内容的文件

required string file_path

还原文件的路径

required string file_id

文件ID

required fixed64 file_size

文件大小

required string osd_uuid

osd的uuid

required fixed32 stripe_size

文件的分片大小

message xtreemfs_rmvolRequest

删除卷

required string volume_name

卷名

message xtreemfs_update_file_sizeRequest

更新打开文件的大小

required XCap xcap

打开文件时返回的功能

required OSDWriteResponse osd_write_response

从包含新文件大小的OSD接收的OSDWriteResponse

optional bool close_file

表示文件应该关闭的标志

optional VivaldiCoordinates coordinates

客户机的vivaldi坐标(例如,用于在文件关闭时在特定位置创建副本)

message xtreemfs_update_file_size_batchRequest

在批处理模式下更新文件大小

repeated xtreemfs_update_file_sizeRequest size_batch

批处理更新的文件大小数据

message xtreemfs_set_replica_update_policyRequest

按id设置文件的副本更新策略

required string file_id

文件ID

required string update_policy

新的副本更新策略

message xtreemfs_set_replica_update_policyResponse

设置新副本时返回旧副本更新策略

required string old_update_policy

旧副本更新策略

message xtreemfs_set_read_only_xattrRequest

按id设置文件的只读标志

required string file_id

文件ID

required bool value

要设置的只读标志

message xtreemfs_set_read_only_xattrResponse

设置只读标志时的返回消息

required bool was_set

是否设置成功

message xtreemfs_get_file_credentialsRequest

获取文件的凭据

required string file_id

文件ID

message get_fileIds_Request

根据osd的uuid获取当前osd上所有文件的文件id的请求参数

required string osd_uuid

osd的uuid

message FileIdAndFileData

文件id和文件数据消息体

required fixed64 fileId

文件id

required fixed64 fileSize

文件大小

required fixed32 fileMTime

修改时间

required string volumeId

文件对应的卷id

message get_fileIds_Response

根据osd的uuid获取当前osd上所有文件的文件id的响应消息

repeated FileIdAndFileData file_id_and_data

重复的FileIdAndFileData 消息体

message get_file_credentials_batchRequest

批量获取文件的凭据的请求参数

repeated string file_id

批量的文件id

message get_file_credentials_batchResponse

批量获取文件的凭据的响应消息

repeated KeyValueToGetFileCredentialsBatch fileCredentials

批量的KeyValueToGetFileCredentialsBatch 消息体

message KeyValueToGetFileCredentialsBatch

获取文件的凭据的消息体

required string file_id

文件id

required FileCredentials fileCredentials

文件凭据消息体

6.2.6.?对象存储设备接口

OSD接口在interfaces / osd_interface.idl中定义。

struct InternalGmax

由OSD发送以确定条带文件的实际文件大小。

epoch

OSD知道文件的最新截断时期

last_object_id

OSD已知的最后一个对象编号

file_size

本地已知的文件大小

struct ObjectData

由OSD发送以确定条带文件的实际文件大小。

data

对象数据(文件内容)

checksum

校验和数据

zero_padding

零附加到数据(填充对象,POSIX稀疏文件语义)

invalid_checksum_on_osd

如果OSD检测到磁盘数据损坏,则为true

exception OSDException

所有OSD操作都会抛出。

error_code

请参阅类org.UXFS.osd.ErrorCodes以获取错误代码列表

error_message

可选的,可读的错误消息

stack_trace

可选,仅用于调试

void read(FileCredentials file_credentials, string file_id, uint64_t object_number, uint64_t object_version, uint32_t offset, uint32_t length, out ObjectData object_data)

读取对象。

file_credentials

文件的XLocSet和性能

file_id

文件ID

object_number

请求的对象(第一个对象是0)

object_version

供将来使用

offset

对象内的偏移量

length

要读取的字节数(偏移量+长度必须为小于对象大小)

out object_data

从磁盘读取的对象数据。 如果返回较少的数据(数据+零填充),则表示EOF

void truncate(FileCredentials file_credentials, string file_id, uint64_t new_file_size, out OSDWriteResponse osd_write_response)

将文件截断为指定的长度。 客户端必须具有有效截断的功能。 对于在多个OSD上切片的文件,此操作必须在头部OSD处执行,头部OSD是复制品OSD列表中的第一个OSD。

file_credentials

文件的XLocSet和性能

file_id

文件ID

new_file_size

文件的新大小(以字节为单位)

out osd_write_response

应传递给MRC的信息

void unlink(FileCredentials file_credentials, string file_id)

删除文件的所有对象。 如果文件当前处于打开状态(正在使用中),则关闭时将删除对象。 此操作立即返回,OSD异步删除对象。 客户端必须具有有效删除的功能。 对于在多个OSD上切片的文件,此操作必须在头部OSD处执行,头部OSD是复制品OSD列表中的第一个OSD。

file_credentials

文件的XLocSet和性能

file_id

文件ID

void write(FileCredentials file_credentials, string file_id, uint64_t object_number, uint64_t object_version, uint32_t offset, uint64_t lease_timeout, ObjectData object_data, out OSDWriteResponse osd_write_response)

写一个对象。

file_credentials

文件的XLocSet和性能

file_id

文件ID

object_number

要写的对象(第一个对象是0)

object_version

供将来使用

offset

对象内的偏移量

lease_timeout

供将来使用(自epoch以来,客户端租约超时的时间戳,以秒为单位)

object_data

要写入对象的对象数据;忽略zero_padding

ObjectData UXFS_check_object(FileCredentials file_credentials,string file_id, uint64_t object_number, uint64_t object_version)

与阅读相似。 OSD读取对象并验证校验和但不发送实际数据。 由文件系统清理程序用于检查数据完整性。

file_credentials

文件的XLocSet和性能

file_id

文件ID

object_number

请求的对象(第一个对象是0)

object_version

供将来使用

returns

零填充中对象的大小以及数据是否已损坏

InternalGmax UXFS_internal_get_gmax(FileCredentials file_credentials,string file_id)

返回本地已知的截断时期,对象数和文件的文件大小。 由OSD用于确定在多个OSD上切片的文件的文件大小。

file_credentials

文件的XLocSet和性能

file_id

文件ID

returns

OSD本地文件大小信息

uint64_t UXFS_internal_get_file_size(FileCredentials file_credentials, string file_id)

返回OSD上的实际文件大小。 对于在多个OSD上切片的文件,此操作必须在头部OSD处执行,头部OSD是复制品OSD列表中的第一个OSD。 由文件系统擦除工具使用。应该用于在将文件标记为只读之前更新文件大小。

file_credentials

文件的XLocSet和性能

file_id

文件ID

returns

文件的实际文件大小

void UXFS_internal_truncate(FileCredentials file_credentials,string file_id, uint64_t new_file_size,out OSDWriteResponse osd_write_response)

头部OSD用于截断所有OSD上的文件,以查找跨多个OSD切片的文件。 只能由OSD使用。

file_credentials

文件的XLocSet和性能

file_id

文件ID

new_file_size

文件的新大小(以字节为单位),文件被截断

out osd_write_response

应传递给MRC的信息

InternalReadLocalResponse UXFS_internal_read_local(FileCredentials file_credentials, string file_id, uint64_t object_number, uint64_t object_version, uint64_t offset, uint64_t length)

OSD用于从其他OSD获取复制文件的对象。 只能由OSD使用。 此方法不通过添加填充数据来遵循POSIX语义,而是从磁盘发送原始对象数据。

file_credentials

文件的XLocSet和性能

file_id

文件ID

object_number

请求的对象(第一个对象是0)

object_version

供将来使用

offset

对象内的偏移量

length

要读取的字节数

returns

来自磁盘的原始对象数据

void UXFS_cleanup_start(boolean remove_zombies, boolean remove_unavail_volume, boolean lost_and_found)

在OSD上启动清理过程。 清理过程将检查OSD磁盘上的所有文件(如果它们仍存在于MRC中)。 在UXFS身份验证数据中需要管理员密码。

remove_zombies

删除已在MRC上删除的文件

remove_unavail_volume

如果持有卷的MRC不可用,则删除文件(危险!)

lost_and_found

不要删除文件,而是在lost + found目录中重新创建它们

void UXFS_cleanup_stop( )

中止OSD清理过程。 在UXFS身份验证数据中需要管理员密码。

void UXFS_cleanup_status(out string status)

从清理过程返回一个人类可读的状态字符串。 在UXFS身份验证数据中需要管理员密码。

out statu

可读状态文本(英文)

void UXFS_cleanup_is_running(out boolean is_running)

检查清理过程是否正在运行。 在UXFS身份验证数据中需要管理员密码。

out is_running

如果进程正在运行,则为true

void UXFS_cleanup_get_results(out StringSet results)

返回清理过程中的消息列表。 在UXFS身份验证数据中需要管理员密码。

out results

消息列表

void UXFS_cleanup_shutdown( )

关闭OSD。 在UXFS身份验证数据中需要管理员密码。

XML 地图 | Sitemap 地图