网络存储
文章平均质量分 79
zhaqiwen
这个作者很懒,什么都没留下…
展开
-
Linux SCSI子系统
M. Tim Jones, 顾问工程师, Emulex Corp.2007 年 12 月 06 日Small Computer Systems Interface (SCSI) 是一组标准集,它定义了与大量设备(主要是与存储相关的设备)通信所需的接口和协议。 Linux® 提供了一种 SCSI 子系统,用于与这些设备通信。Linux 是分层架构的一个很好的例子,它将高层的驱动器转载 2012-10-04 19:09:20 · 1250 阅读 · 0 评论 -
LINUX SCSI I/O分析
概述LINUX 内核中 SCSI 子系统由 SCSI 上层,中间层和底层驱动模块 [1] 三部分组成,主要负责管理 SCSI 资源和处理其他子系统,如文件系统,提交到 SCSI 子系统中的 IO 请求。因此,理解 SCSI 子系统的 IO 处理机制对理解整个 SCSI 子系统就显的十分重要,同时也有助于理解整个 LINUX 内核的 IO 处理机制。本文从 SCSI 设备访问请求的提交,SCSI转载 2012-12-11 21:30:35 · 10707 阅读 · 1 评论 -
iSCSI技术白皮书
一、前言ISCSI(INTERNET SCSI)是由Internet Engineering Task Force(IETF)开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的传递,同时也促进了数据的远距离管理。由于其出色的数据传输能力,ISCSI协议被认为是促进存储区域网(SAN)市场快速发展的关键因素之一。因转载 2012-12-12 10:29:58 · 3022 阅读 · 0 评论 -
open-iscsi源码分析 -- 进程通信
前面分析了open-iscsi主要有一个守护进程iscsid,即通过本地socket和用户其他进程通信,比如iscsiadm管理执行任务时,需要和iscsid通信,iscsi的底层驱动则通过netlink和iscsid通信,而用户态其他进程还通过共享内存和iscsid日志守护进程通信。所以在iscsi服务启动后,我们会发现在系统中有两个名为iscsid的进程,其中一个为日志守护进程,另一个转载 2012-12-11 22:16:42 · 2493 阅读 · 0 评论 -
open-iscsi源码分析 -- 日志处理
在iscsid主函数中有: log_pid = log_init(program_name, DEFAULT_AREA_SIZE, daemonize ? log_do_log_daemon : log_do_log_std, NULL); 初始化日志系统,现在进入log_init函数,对open-iscsi的日志处理方式进行详细分析: /*转载 2012-12-11 22:13:37 · 2012 阅读 · 0 评论 -
open-iscsi源码分析 -- iscsid
最近用到open-iscsi作用initiator,遇到很多问题,就打算粗率对open-iscsi的源码进行一个分析。 open-iscsi的组成和用法就不讲了,源码包中的README说得非常清楚,主要分为驱动和用户态两部分,用户态又分为服务守护进程和管理程序,必须先加载驱动,守护进程才能启动成功,最后才是运行iscsiadm进行一些常规管理。 今天首先对open-is转载 2012-12-11 22:11:52 · 3548 阅读 · 0 评论 -
open-iscsi源码分析 -- list-head分析
list-head结构在linux内核中用得非常多,这是一个双向链表结构,可以灵活嵌入其他数据结构中,对于建立链表非常方便。在Linux内核中,由于很多数据结构都需要连成一个链表进行管理,所以有了list-head将链表的管理独立出来,所以在内核编程不需要自己实现list-head的一些管理函数,可以直接调用。 在open-iscsi用户态编程时,将这个文件从内核中拷贝出来了:转载 2012-12-11 22:18:13 · 1031 阅读 · 0 评论 -
open-iscsi源码分析 -- 流程详细分析
在iscsid.c文件的main函数中,有:sysfs_init();这个函数主要是获取系统sys目录://获取sys目录int sysfs_init(void){const char *env;/*从环境变量中获取sys路径*/env = getenv("SYSFS_PATH");if (env) {strlcpy(sysfs_path转载 2012-12-11 22:15:24 · 2729 阅读 · 0 评论 -
Linux I/O调度
Linux I/O调度一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成. 2) 每个块设备都有它自己的队列. 3) I/O调度程序负责维护这些队列的顺序,以更有效地利用介质.I/O调度程序将无序的I/O操作变为有序的I/O操作. 4) 内核必须首先确定队列中一共有多少个请求,然后才开始进转载 2012-12-11 20:31:44 · 1010 阅读 · 0 评论 -
open-iscsi源码分析 -- 会话建立
前面可以看出,处理控制中心还是iscsid守护进程,其他进程都是向它发出服务请求,然后它做出响应,而它完成一些操作又是向底层驱动发出指令。在前面的源码中可以发现,重要是一个mgmt_ipc_functions的函数指针数组是一个操作函数集合,其中的函数分别处理不同的服务,服务id就是它在函数指针数组中的索引。/*不同任务id对应的处理函数地址*/static mgmt_ipc_fn_t转载 2012-12-11 22:20:15 · 2394 阅读 · 0 评论