摘要:
最近实验室搞了一些列讲座,阿福师兄关于文件系统的讲座帮我弄清楚了一些以前不清楚的问题,以问答的形式对文件系统常见的问题进行了总结。 Q: 文件系统如何看待底层物理块设备?
Ÿ 文件系统把块设备简单的看做线性的组合,即对文件系统而言,块设备是一系列可以读写的块。文件系统不需要知道这些物理设备的实际布局及如何读写,这些是设备驱动的工作。 Q: 跟文件系统相关的系统调用主要有那些?
Ÿ 打开文件o... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(374)
评论(0)
推荐(0)
摘要:
院里请李德仁院士做讲座,慕名去听了一下,主题是从数字地球到智慧地球,通过这场讲座,我更加深刻的认识到了应用决定一切这个道理了,简要的谈一下我的理解。 第一次听到以应用为核心这个观点是在《计算机系统设计》课堂上,王芳老师提到“上层应用需求决定顶层系统架构”,我对这句话影响很深,联系到我读的一些文章,以及我了解的一些系统实例,无一不符合该观点。windows与linux的设计思想为什么不同,究其本... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(439)
评论(0)
推荐(0)
摘要:
fuse处理请求的整个流程如下图所示,以unlink操作为例进行说明。其中“>”表示调用,”<”表示返回,[]表示调用中所做的工作。本人结合fuse的源代码,对整个流程进行了分析。 fuse通过fuse_session_loop(或对应多线程的方法)来启动fuse守护程序,守护程序不断的从/dev/fuse上读取请求,并处理。 代码片段1
int fuse_session_loop(st... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1529)
评论(0)
推荐(1)
摘要:
fuse为开发者提供了两组接口,分别是fuse_lowlevel_ops以及fuse_operations,开发者只需要实现这两组接口的一种即可实现一个用户空间文件系统。 struct fuse_lowlevel_ops的成员如下所示,其中init方法在其它所有方法之前调用,用于初始化文件系统,fuse已经实现,destroy则是在文件系统被卸载时做一些清理工作。用于大多数请求的参数都是fuse... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1241)
评论(0)
推荐(1)
摘要:
对fuse提供的两个选项direct_io及big_writes困惑已久,以前对内核完全不了解,看不懂fuse内核模块的代码,这两天把fuse的代码重新过了一遍,把整个机制弄清楚了,很多细节方面的东西还在学习中。 指定direct_io挂载文件系统时,系统调用到了fuse层后,会跳过页高速缓存,当指定了direct_io后,读写系统调用会使用fuse_direct_io_file_operati... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(2350)
评论(0)
推荐(0)
摘要:
RPC的xdr(外部数据表示)是为了编码(解码)C语言定义的数据,从而使得RPC传输的数据平台无关性。
xdr对C语言常见的类型编码规则在之前已经说过了,参见http://blog.chinaunix.net/u2/87570/showart_2159266.html,对于说明书test.x定义的定义,最终会被rpcgen翻译成支持C语言支持的类型定义,之后test.x就没有任何作用了。 如在... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1756)
评论(0)
推荐(0)
摘要:
测试例子: #include <stdio.h>void print(char *arr){printf("%#x %#x %#x\n", &arr, arr, arr[0]);}int main(){char arr[5] = "abcd";printf("%#x %#x %#x\n", &arr, arr, arr[0]);print(arr);return 0;}
输出: ... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(192)
评论(0)
推荐(0)
摘要:
以前用iozone简单测了下ext3及dnfs的性能,用磁盘测试工具测了一下硬盘的性能。前者在http://blog.chinaunix.net/u2/87570/showart_1944522.html【A】中做了分析;后者在http://blog.chinaunix.net/u2/87570/showart_2191188.html【B】中做了分析。 A中的数据当时让我很吃惊,为什么读写的... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(1096)
评论(0)
推荐(0)
摘要:
为什么需要iSCSI ? 1. 解决了SCSI协议在设备数目和连接距离上的限制;
2. 为SAN提供了一种高性价比的传输协议;
3. 与各种存储管理结合起来,提供灵活的备份、镜像、灾难恢复以及次级存储解决方案; 什么是iSCSI ? iSCSI是由IEETF开发的网络存储标准,目的是为了用IP协议将存储设备连接在一起。通过在IP网上传送SCSI命令和数据,ISCSI推动了数据在网际之间的... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(834)
评论(0)
推荐(0)
摘要:
等待队列是linux里的一个重要数据结构,包括之前分析的fuse中也用到等待队列以实现阻塞IO,等待队列实际上是一个循环链表,需要等待某个条件的进程在相应的等待队列上睡眠,但等待条件变为真时,进程被唤醒。
主要的数据结构在include/linux/wait.h中声明及定义:
等待队列头的结构如下:
struct __wait_queue_head { spinlock_t lock; //用于... 阅读全文
posted @ 2013-04-19 14:05
ydzhang
阅读(299)
评论(0)
推荐(0)
浙公网安备 33010602011771号