
存储
文章平均质量分 56
3333333_
大部分都是记录云笔记,有时候复制过来就挺乱的,而且可能复制1年或者几个月前记录的。随缘吧。
展开
-
6、rados put调试 调用栈分析学习ceph16.2.13
ceph put 调用栈学习原创 2023-05-13 17:15:31 · 573 阅读 · 0 评论 -
1、ceph16.2.12 ceph-mon调试启动过程
>调用global_pre_init结束------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------如果子进程创建失败,则会输出错误信息并退出程序。原创 2023-05-04 10:08:37 · 373 阅读 · 0 评论 -
ceph client 访问
创建池的时候 PG和OSD关系已经存在了。原创 2023-03-07 17:37:18 · 165 阅读 · 0 评论 -
ceph自己群介绍与pg介绍
ceph原创 2023-02-13 23:05:01 · 161 阅读 · 0 评论 -
RDMA学习
因为我们把传输协议卸载到了硬件网卡,但是一旦网络中发生了丢包,我们的硬件网卡目前是不太能够高效的丢失恢复的。不止数据中心,还有一些高性能存储,高性能计算,对网络的要求,已经不是简单的毫秒级了,现在都要求微妙级了,极低的延时,同时又希望当传输大数据量的时候也能维持一个高的存储。go-back-N这种机制,也就意味着,一旦网络中发生丢包,那么这个RDMA其实就做了很多无用功,吞吐量会降低很多,反而享受不到之前追求的性能,所以RDMA在部署的时候还是需要底层有一个无丢失的网络来发挥它最大的性能优势。原创 2023-02-13 23:03:50 · 500 阅读 · 0 评论 -
RDMA和DPDK学习比较
RDMA通过kernel-bypass和协议栈offload两大核心技术,实现了远高于传统TCP/IP的网络通信性能。网卡硬件收发包并进行协议栈封装和解析,然后将数据存放到指定内存地址,而不需要CPU干预。DPDK是用户层通过设备映射获取数据包->进入用户层协议栈->逻辑层->业务层;协议栈卸载到硬件(协议栈硬件offload)DPDK是网络层,硬件终端->放弃中断流程。原创 2023-02-13 23:03:00 · 1288 阅读 · 0 评论 -
s3fs-fuse使用SMB、NFS、FTP挂载
SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。客户端连接后,只能看到bk1这个目录 ,看不到bk1里面的内容。客户端连接后,就正常。原创 2023-02-13 23:01:31 · 1376 阅读 · 0 评论 -
s3f3 shell 自动挂载桶并进行SMB
s3f3 shell 自动挂载桶并进行SMB/FTP/NFS共享。其中 share_bk1 时下图红色标记部分。验证samba是否共享成功。原创 2023-02-13 23:00:35 · 321 阅读 · 0 评论 -
ubuntu编译安装s3fsfuse
【代码】ubuntu编译安装s3fsfuse。原创 2023-02-13 22:59:00 · 154 阅读 · 0 评论 -
s3fsfuse调试
这里由于是调试fuse操作,所以使用attach process的方式调试,方式参照《vscode使用attach process调试进程》这篇笔记。s3fs_create(跟goofys一样创建一个0大小的空文件)readdir后面有5次 s3fs_getattr。libfuse.so里面代码暂时不知道怎么跳进去。所以我这里挨个点进定义的首行代码打上断点。s3fs_write (写入文件内容)一、测试ll /mnt/s3。原创 2023-02-13 22:58:29 · 251 阅读 · 0 评论 -
fuse学习1
内核的 fuse 文件系统只有一份,用于承接 vfs 请求,封装成 FUSE 协议包,走 /dev/fuse 建立起来的通道转发用户态。用户态的任务就是把 FUSE 协议包解析出来并且处理,然后把请求响应按照 FUSE 协议封装起来,走 /dev/fuse 通道传回内核,由 vfs 传回用户。推荐一个 Go 的 FUSE 库:bazil/fuse,这是一个纯 Go 写的 FUSE 协议解析库,作用和 libfuse 这个纯 c 语言写的库作用完全一样。就是连接内核 fuse 和用户态文件系统的纽带;原创 2023-02-13 22:57:26 · 483 阅读 · 0 评论 -
Fuse学习
在fuse出现以前,Linux中的文件系统都是完全实现在内核态,编写一个特定功能的文件系统,不管是代码编写还是调试都不太方便,就算是仅仅在现有传统文件系统上添加一个小小的功能,因为是在内核中实现仍需要做很大的工作量。fuse内核模块:实现了和VFS的对接,实现了一个能被用户空间进程打开的设备,当VFS发来文件操作请求之后,将请求转化为特定格式,并通过设备传递给用户空间进程,用户空间进程在处理完请求后,将结果返回给fuse内核模块,内核模块再将其还原为Linux kernel需要的格式,并返回给VFS;原创 2023-02-13 22:56:24 · 123 阅读 · 0 评论 -
filestash初识
然后就查阅了相关信息,在git上找到,可以通过在docker容器 里面编译。将上面docker启动后里面的静态文件拷贝出来。只要public目录。后来研究了下,docker里面只是编译好的文件。拷贝到main.go添加行指定的目录下面。自己本地装好像只支持docker。然后就可以本地启动了。原创 2023-02-13 22:55:32 · 178 阅读 · 0 评论 -
juicefs源码1
因此,你会发现在对象存储平台的文件浏览器中找不到存入 JuiceFS 的源文件,存储桶中只有一个 chunks 目录和一堆数字编号的目录和文件。不要惊慌,这正是 JuiceFS 高性能运作的秘诀!从命名规则里面也能看出,数据是支持按partition进行分区存储的,也就是说最终存储数据的bucket可以是多个,这样有助于提高并发能力,特别是AWS S3每个bucket是有TPS性能上限的。补充一下源码中,每个blocks的命名规则定义,也就是最终存储在对象存储系统中的对象key名称。原创 2023-02-12 22:06:53 · 274 阅读 · 0 评论 -
juicefs debug ls看源码
-------------------juicefs pkg/meta/redis.go结束----------------------------------------juicefs fuse.go开始----------------------------------------go-fuse库开始----------------------------------------go-fuse库结束--------------------juicefs代码(fuse.go)::ReleaseDir。原创 2023-02-12 22:05:12 · 216 阅读 · 0 评论 -
juicefs debug echo看源码
创建完inode继续执行juicefs代码(base.go)::Create->fh = v.newFileHandle(inode, attr.Length, flags)创建完元数据后继续执行juicefs代码(base.go)::Create->m.of.Open(*inode, attr)juicefs代码(base.go)::Create->v.UpdateLength(inode, attr)juicefs代码(base.go)::Create->m.of.Open(*inode, attr)原创 2023-02-12 22:02:42 · 228 阅读 · 0 评论 -
juicefs debug mount启动看源码
------------------------------------NewReloadableStorage结束--------------------------------------------------------------------------接续进入mount.go------------------------------------这里是S3,其实会调用 pkg/object/s3.go里面的newS3,创建s3client。通过多个init()函数首先注册各种元数据组件。原创 2023-02-12 21:59:36 · 226 阅读 · 0 评论 -
linux安装goofys
Client cache(在内存中),缓存读写的数据。对于Cache Consistency的解决办法:Flush-on-close(或close-to-open)consistency;文件关闭时,把缓存的已修改的文件数据,写回NFS Server。然后每次在使用缓存的数据前,必须检查是否过时。方法是用 GETATTR请求去poll(轮询),获得最新的文本属性;可以多节点挂载,缓存采用close-to-open模式。/opt/goofys 是挂载目录。不会自动同步,当你打开目录时会同步。原创 2023-02-12 21:54:34 · 546 阅读 · 0 评论 -
goofys+NFS练手
2、从共享方式那里看看,NFS创建文件调用的是POSIX的MkNode,那有没有共享服务创建文件调的不是这个接口,掉的接口Goofys支持。fuses是没有完全兼容POSIX,然后NFS共享goofys挂载的对象目录到另外一个服务器后,在另外一个服务器,写文件会报错,读可以。1、从源头做起,找个完全兼容POSIX的对象共享挂载服务,juicefs官方写的是完全兼容。只安装 nfs-utils 即可,rpcbind 属于它的依赖,也会安装上。然后NFS共享到B服务,在B服务器上读是可以的,写就报上面的错。原创 2023-02-12 21:53:37 · 354 阅读 · 0 评论 -
s3fsuse+NFS练手
echo "/mnt/s3fs 192.168.1.0/24(fsid=0,rw,no_all_squash,sync)" >> /etc/exports 任意IP echo "/mnt/s3fs *(fsid=0,rw,no_all_squash,sync)" >> /etc/exports。修改 /etc/exports,添加共享目录。客户端-192.168.1.231。刷新配置使得修改立刻生效。原创 2023-02-12 21:51:37 · 170 阅读 · 0 评论 -
goofys源码
goofys原创 2023-02-12 21:49:08 · 76 阅读 · 0 评论 -
goofys debug ls看源码
fuse库(file_system.go)::GetInodeAttributesOp (这一步,在终端ls显示了结果)fuse库(file_system.go)::ReadDir (是 ReadDirOp)fuse库(file_system.go)::ReleaseDirHandlerOp。fuse库(file_system.go)::ReadO(得到对应的fuse操作)fuse库(file_system.go)::ReadDirOp (第二次)goofys代码(goofys.go)::ReadDir。原创 2023-02-12 21:48:25 · 152 阅读 · 0 评论 -
goofys debug echo看源码
存储 goofys原创 2023-02-12 21:46:11 · 92 阅读 · 0 评论 -
S3 API Reference 调研
例如,如果前缀是notes/并且分隔符是斜杠 ( /) notes/summer/july,则公共前缀是 notes/summer/。在计算返回次数时,所有汇总到公共前缀中的键都算作一次返回。此示例说明了请求中前缀和分隔符参数的使用。在计算返回次数时,所有键(最多 1,000 个)汇总到一个公共前缀中算作一次返回。CommonPrefixes包含前缀和分隔符指定的字符串之间的所有键(如果有)键。在S3中没有“文件夹”和“文件”,有“桶”和“对象”示例请求:使用前缀和分隔符参数列出键。原创 2023-02-11 16:49:14 · 354 阅读 · 0 评论 -
aws s3 测试
【代码】aws s3 测试。原创 2023-02-11 16:47:43 · 416 阅读 · 0 评论 -
aws s3 使用对象锁定
对象锁定仅应用于单个对象版本。如果您将对象放入具有默认保留期限的存储桶,并且您没有为该对象明确指定保留期限,Amazon S3 创建的对象将具有与存储桶默认设置匹配的保留期限。与之相似,如果您在对象版本的保留期限生效时删除依法保留,该对象版本将一直受保护,直至保留期限过期。然后,Amazon S3 将默认保留模式和期限应用于放入存储桶中的新对象版本,并拒绝任何放置包含保留模式和设置的对象的请求。当您对对象版本施加保留期限时,Amazon S3 会在该对象版本的元数据中存储时间戳,以指示保留期限的到期时间。原创 2023-02-11 16:43:49 · 573 阅读 · 0 评论 -
minio 兼容postman
如果是postman传过去heder里面会有Postman-Token这个key。这样在开启browser功能时,不会认为postman请求是browser请求。这样就兼容了postman代替mc发送请求。原创 2023-02-11 16:41:46 · 779 阅读 · 0 评论 -
minio ListObjectVersions调研
【代码】minio ListObjectVersions调研。原创 2023-02-11 16:40:16 · 261 阅读 · 0 评论 -
使用TLS安全的访问Minio服务https访问minio
/certgen -host "127.0.0.1,192.168.1.10" (这里指定回环IP和本机IP)生成的证书未添加到根证书,https请求未携带数字证书会导致在SDK请求的时候出现如下错误。发现是GO1.15 X509 被砍了(不能用了) ,需要用到SAN证书。可以访问minio页面,但是登录不上。其他系统添加证书到根证书请看。发现这个可以生成SAN证书。再次启动minio就可以了。看了下minion官方。生成后启动minio。原创 2023-02-11 16:39:35 · 1665 阅读 · 0 评论 -
MinIO判断请求来源
MinIO原创 2023-02-11 16:29:13 · 105 阅读 · 0 评论 -
minio admin 接口 postman 测试
MinIO原创 2023-02-11 16:29:45 · 898 阅读 · 0 评论 -
Minio fsv1调研
最终调fs-v1.go中的GetObjectInfo()->getObjectInfo(ctx, bucket, object, pReader, opts)->fsMeta.ReadFrom(ctx, rlk.LockedFile)->fsMeta.ToObjectInfo(bucket, object, fi)创建对象会调用minio的api-router.go中的 PutObject [api.PutObjectHandler]endpoint只有一个就直接使用disk。原创 2023-02-11 16:35:56 · 417 阅读 · 0 评论 -
Minio解密逻辑
MinIO 存储原创 2023-02-11 16:25:40 · 236 阅读 · 0 评论 -
minio存储类型 归档管理页面_软件定义存储,看这一篇就够了
存储原创 2023-02-10 22:18:39 · 802 阅读 · 0 评论 -
mc admin接口
minio原创 2023-02-10 22:16:06 · 348 阅读 · 3 评论 -
minio文档说明
最近由于国内现在开始进行:“国产可替代”,我们在中国国内的业务受到影响,在文档上的更新和支持国内已经没有专门的翻译服务了。建议您以国际站的英文文档为准。国际站的中文文档很多也没有进行更新和存在错误。原创 2023-02-10 22:14:36 · 620 阅读 · 0 评论 -
minio 推荐配置参数
硬盘:用于高密度的SATA / SAS HDD和用于高性能的NVMe SSD(每个服务器最少8个驱动器)。CPU:双Intel®Xeon®可扩展GoId CPU(每个插槽至少8个内核)。网络:25GbE用于高密度,100GbE NIC用于高性能。内存:128GB内存。原创 2023-02-10 22:13:23 · 1936 阅读 · 0 评论 -
minio源码追踪
minio原创 2023-02-10 22:13:21 · 209 阅读 · 0 评论 -
minio可用存储空间
让我们以在16个盘的MinIO部署中存储100M文件为例,来了解数据和奇偶校验盘数量的不同组合是如何影响可用存储空间的。如果你使用8个数据盘和8个奇偶校验盘,文件空间使用量约为两倍, 即100M文件将占用200M空间。但是,如果你是用10个数据盘和6个奇偶校验盘,则同样的100M文件大约需要160M的空间。如果你是用14个数据盘和2个奇偶校验盘,100M文件仅仅需要约114M空间。以下是一张16盘的MinIO部署,数据/奇偶校验盘数量和相应的 近似 存储储空间使用情况列表。原创 2023-02-10 22:12:25 · 4255 阅读 · 0 评论 -
1、安装记录FastDFS
【代码】1、安装记录FastDFS。原创 2023-02-10 22:10:44 · 196 阅读 · 0 评论