设为首页 收藏本站
查看: 2087|回复: 0

[经验分享] 深入理解Lustre文件系统-第8篇 基础结构支持

[复制链接]

尚未签到

发表于 2015-9-10 11:27:13 | 显示全部楼层 |阅读模式
  此节探讨关于Lustre初始化、客户端注册、OBD设备管理等多个方面。
8.1   Lustre客户端注册
  Lustre客户端或者Lustre Lite以名字lustre注册为一个文件系统,文件系统类型定义为:
  structfile_system_type lustre_fs_type = {
  .owner = THIS_MODULE,
  .name = "lustre",
  .get_sb = lustre_get_sb,
  .kill_sb = lustre_kill_super,
  .fs_flags = FS_BINRARY_MOUNTDATA |FS_REQUIRES_DEV
  LL_RENAME_DOES_D_MOVE,
  };
  另外一个由lustre_register_fs()定义的函数只简单地调用内核函数:
  returnregister_filesystem(&lustre_fs_type);
  然后注册就结束了。这是当obdclass作为一个模块初始化的时候调用的。
  intinit_obdclass(void) {
  ...
  #ifdef __KERNEL__
  err = lustre_register_fs()
  #endif
  }
  查看class_obd.c里的更多细节。
8.2   超级块和索引节点注册
  这应该是一个相对简单的问题,但是可能是因为一些遗留的支持问题,Lustre跳过了几环(hoop)。
  当Lustre Lite以一个Linux模块初始化时,init_luster_lite()在super25.c做了定义。在诸如分配索引节点高速缓存的事情中,它(本质上)将*client_fill_super设置为ll_fill_super。
  在luster_fill_super()方法中,我们检查这是不是一个客户端模块。如果是,则调用(*client_fill_super)(sb),其中sb就是超级块。
8.3   ODB设备
  OBD设备用来在Lustre部件上提供一个抽象层,以使得能够应用一般化的操作,而不需要知道你正在处理的设备的特殊性。我们在第5节探讨了定义在其上的方法表。Lustre特提供了一些管理对象设备的一般性基础结构。核心的结构是obd_devices和exports。我们将细致地探讨它们。
  每个odb设备都赋值了一个整型数,最多能在一个给定的节点上创建MAX_OBD_DEVICES个obd设备。你能够通过一个整型数(obd_minor)、名字或者uuid找回一个obd设备。在内部,所有的obd设备都存储在一个数组中。然而找回一个obd设备的最好的方式是通过下面介绍的一些API。
  structobd_device *obd_devs[MAX_OBD_DEVICES]
  API可以粗略地分为四类:
  l 注册和注销一种设备类型
  l 分配和释放obd设备。obd_device_alloc()、obd_device_free()。
  l 创建和解除obd设备。你可以通过向class_newdev()给出字符串类型和字符串名字来创建新的odb设备。你可以通过给出指向obd_device的指针来解除一个obd设备。在两种情形下,它们都在内部调用分配和释放函数。
  l 搜索。你可以通过class_search_type()来通过类型进行搜索
  l 转化工具。
8.4   输入口和输出口
  对于两个互相交流的OBD设备A和B,它们需要一对输入口和输出库Aimport和Bexport。Aimport用来发送请求和接受回复,而Bexport则用来接收请求和发送回复。但是,这同样的一对不可以反过来使用:即你不能通过Bexport来发送一个请求。为了实现这一点,例如在发送AST的情况下,你需要一个所谓的“反向输入口”。本质上,反向输入口将Aimport和Bexport对转化为Aexport和Bimport对。在OBD设备上创建这种对的需求在Figure11中部分地给出了。
  注意图中的LOV、OSC和OST都被定义为ODB设备的一种。
DSC0000.gif

  本文章欢迎转载,请保留原始博客链接http://blog.iyunv.com/fsdev/article

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-111891-1-1.html 上篇帖子: 2012年总结 下篇帖子: 文件系统那些事-第4篇 并行文件系统之开源解决方案Lustre
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表