全局共享数据结构在interfaces / types.idl中定义。
struct UserCredentials
如果使用UXFS身份验证,则在ONC RPC opaque_auth正文中发送用户信息。 userID和groupID的外观取决于客户端中使用的转换本地uid / gid的策略。
user_id
全局唯一的用户ID
group_ids
全局唯一groupID列表(必须至少包含一个条目)
Password
某些操作所需的管理员密码(以明文形式)(例如mkvol)
主要在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个或更多记录
可以与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
描述正确值的错误消息。
目录服务接口在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身份验证发送管理员密码。
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
文件凭据消息体
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身份验证数据中需要管理员密码。