请输入您要查询的百科知识:

 

词条 存储技术原理分析:基于Linux 2.6内核源代码
释义

基本信息

出版社: 电子工业出版社; 第1版 (2011年9月1日)

平装: 768页

正文语种: 简体中文

开本: 16

ISBN: 7121144328, 9787121144325

条形码: 9787121144325

商品尺寸: 25.8 x 20 x 3.8 cm

商品重量: 1.5 Kg

品牌: 电子工业出版社发行部

ASIN: B005KL8IS0

内容简介

《存储技术原理分析:基于Linux 2.6内核源代码》通过对Linux 2.6内核源代码的分析,详细讨论存储技术的内在实现原理。分为三条主线:解释PCI设备、SCSI设备以及块设备的发现过程;跟踪存储I/O路径,即用户对文件的读/写请求怎么通过中间各个层次,最终到达磁盘介质;此外,还简要介绍主机适配器、块设备驱动以及文件系统等编程框架。

书中将设计一些主要的场景,跟踪实现的各个层次,对其中的主要函数进行代码级的讲解。在分析每个模块时,会给出整体框架、主要数据结构之间的关系,并列出各个域的详细含义。

采用这种方式,我们希望读者能对存储相关概念(如RAID、快照等)的内在实现有具体的了解,也试图帮助读者理解Linux内核设计和开发的一些思想,为进一步分析其他模块(如进程管理、内存管理等)起借鉴作用。

读者对象:《存储技术原理分析:基于Linux 2.6内核源代码》适合作为高校计算机相关专业本科生和研究生学习操作系统的辅助和实践教材,也适合作为Linux爱好者学习内核的参考书籍。同时,它也是存储从业工程师深入理解存储架构,以及软件开发工程师掌握软件架构的有效工具。

编辑推荐

《存储技术原理分析:基于Linux 2.6内核源代码》通过分析Linux内核源代码,讲解存储、网络和虚拟机的相关技术,您将从中领悟到:设备发现过程了解操作系统如何发现PCI设备、SCSI设备、块设备,并和驱动绑定起来;存储l,O路径了解用户对文件的读/写请求怎么通过I/O路径,最终到达磁盘介质上;内核编程模式理解PCI- SCSIHBA驱动、块设备驱动,以及文件系统等编程框架。

作者简介

敖青云,博士,2001年毕业于上海交通大学计算机科学及工程系。毕业后一直从事存储及相关产品的研发工作,主要研究方向为开源技术、操作系统、存储及虚拟机技术等。现居上海。

目录

第一部分 存储技术

第1章 存储技术概论2

1.1 存储系统元素2

1.1.1 磁盘驱动器2

1.1.2 存储设备4

1.1.3 服务器部件7

1.1.4 存储软件9

1.2 存储相关技术10

1.2.1 备份技术10

1.2.2 快照技术13

1.2.3 连续数据保护技术21

1.2.4 RAID技术22

1.2.5 “多路径”技术36

1.2.6 虚拟化技术39

1.3 网络存储结构40

1.3.1 直接连接存储40

1.3.2 网络连接存储40

1.3.3 存储区域网络41

1.4 存储I/O通道41

1.4.1 存储I/O物理通道42

1.4.2 存储I/O逻辑通道43

1.4.3 虚拟机I/O逻辑通道44

1.5 存储应用举例45

1.5.1 同时提供文件服务和块服务45

1.5.2 按需扩容、随需取用延缓企业投资45

1.5.3 计算与存储分离便于故障恢复和系统升级45

1.5.4 为高可用性集群提供共享存储46

1.5.5 利用快照技术恢复被病毒破坏的数据47

1.5.6 基于文件的数据备份和远程镜像方案47

1.5.7 利用PXE和iSCSI实现远程引导和映像恢复48

1.5.8 虚拟机故障的检测及迁移49

第二部分 设备

第2章Linux驱动模型52

2.1 概述52

2.2 引用计数53

2.3 内核对象及集合55

2.3.1 创建或初始化内核对象58

2.3.2 将内核对象添加到sysfs文件系统59

2.3.3 创建、初始化、添加内核对象集63

2.3.4 发送内核对象变化事件到用户空间63

2.4 sysfs文件系统69

2.4.1 构建内核对象、对象属性和对象关系的内部树70

2.4.2 对sysfs文件的读/写转换为对属性的show和store操作73

2.4.3 为具体内核对象定义属性的规范流程77

2.5 kobject编程模式80

2.6 驱动模型对象81

2.6.1 总线类型82

2.6.2 设备86

2.6.3 驱动100

2.6.4 类105

2.6.5 接口107

2.7 驱动模型编程模式108

第3章PCI子系统110

3.1 概述110

3.2 PCI子系统对象115

3.2.1 pci_bus:PCI总线116

3.2.2 pci_dev:PCI设备117

3.3 PCI核心初始化121

3.4 配置访问方法124

3.4.1 机制#1方式126

3.4.2 PCIBIOS方式128

3.4.3 配置访问接口133

3.5 PCI总线扫描133

3.5.1 PCI总线编号范例133

3.5.2 PCI总线扫描流程137

3.6 PCI中断路由160

3.6.1 中断路由初始化165

3.6.2 查找中断路由表166

3.6.3 查找中断路由驱动167

3.6.4 分配ISA IRQ号171

3.7 PCI资源分配177

3.7.1 PCI资源分配范例178

3.7.2 PCI资源分配流程181

3.8 PCI设备驱动编程模式193

3.8.1 定义PCI驱动结构194

3.8.2 定义支持设备ID列表194

3.8.3 实现probe回调方法196

3.8.4 实现remove回调方法198

3.8.5 实现其他回调方法199

3.8.6 注册与注销PCI驱动199

第4章SCSI子系统201

4.1 概述201

4.2 SCSI子系统对象202

4.2.1 scsi_host_template:SCSI主机适配器模板203

4.2.2 Scsi_Host:SCSI主机适配器207

4.2.3 scsi_target:SCSI目标节点210

4.2.4 scsi_device:SCSI逻辑设备211

4.2.5 scsi_cmnd:SCSI命令215

4.3 SCSI子系统初始化216

4.4 添加适配器到系统216

4.5 SCSI设备探测222

4.5.1 探测流程入口224

4.5.2 探测逻辑单元232

4.5.3 添加SCSI设备237

4.6 SCSI磁盘驱动241

4.6.1 同步执行部分244

4.6.2 异步执行部分247

4.6.3 重新校验磁盘249

4.6.4 让磁盘转起来251

4.7 SCSI命令执行254

4.8 SCSI错误恢复259

4.8.1 命令进入错误恢复261

4.8.2 错误恢复线程执行262

4.8.3 发送错误恢复命令275

4.9 SCSI低层驱动编程模式279

4.9.1 定义主机适配器模板279

4.9.2 完善探测回调处理逻辑279

4.9.3 实现queuecommand回调函数279

4.9.4 实现中断处理函数283

4.9.5 实现其他回调函数283

4.9.6 模块加载和卸载283

第三部分 存储I/O

第5章 块I/O子系统286

5.1 概述286

5.2 块I/O子系统对象287

5.2.1 gendisk:通用磁盘289

5.2.2 hd_struct:分区291

5.2.3 block_device:块设备292

5.2.4 request_queue:请求队列293

5.2.5 request:块设备驱动层请求296

5.2.6 bio:通用块层请求298

5.3 添加磁盘到系统300

5.3.1 分配通用磁盘描述符300

5.3.2 添加到sysfs文件系统302

5.3.3 获取磁盘块设备描述符305

5.3.4 打开磁盘块设备描述符306

5.3.5 重新扫描磁盘分区310

5.3.6 设备号映射机制314

5.4 请求处理过程 315

5.4.1 上层向块I/O子系统提交请求315

5.4.2 构造、排序或合并请求320

5.4.3 SCSI策略例程逐个处理请求327

5.4.4 为请求构造SCSI命令334

5.4.5 为SCSI命令准备聚散列表343

5.4.6 派发SCSI命令到低层驱动349

5.5 I/O调度算法352

5.5.1 为请求队列建立关联的I/O调度队列356

5.5.2 判断bio是否可以被合并到request 356

5.5.3 将请求添加到I/O调度队列或请求队列359

5.5.4 从I/O调度队列派发请求到请求队列362

5.6 请求处理完成366

5.6.1 低层驱动调用完成回调函数366

5.6.2 引发块I/O子系统的软中断368

5.6.3 调用请求队列的软中断回调369

5.6.4 调用上层的完成回调函数383

5.7 屏障I/O处理386

5.7.1 屏障I/O接口386

5.7.2 添加屏障请求388

5.7.3 处理屏障请求389

5.7.4 完成屏障请求393

5.8 完整性保护396

5.8.1 数据完整性对象397

5.8.2 为块设备注册完整性能力400

5.8.3 为bio准备完整性元数据402

5.8.4 校验完整性元数据406

5.8.5 修正bio基准标签408

5.9 磁盘类设备驱动编程模式411

5.9.1 定义磁盘类设备私有数据结构411

5.9.2 定义和实现块设备操作表411

5.9.3 分配和初始化磁盘类设备相关结构411

5.9.4 为磁盘类设备准备请求队列并添加通用磁盘到系统412

第6章Multi-Disk(MD)模块413

6.1 概述413

6.2 RAID模块对象414

6.2.1 mddev_t:RAID设备414

6.2.2 mdk_rdev_t:成员磁盘418

6.2.3 mdk_personality:MD个性419

6.3 MD模块初始化420

6.4 MD设备创建423

6.4.1 从用户空间打开MD设备424

6.4.2 用户空间发送ioctl创建MD 428

6.4.3 自动检测和运行RAID 439

6.5 MD设备请求执行439

6.6 MD个性化编程模式440

6.6.1 定义私有数据结构441

6.6.2 声明个性化结构442

6.6.3 实现个性化方法442

6.6.4 实现模块加载和卸载方法445

6.7 RAID0模块445

6.7.1 为RAID0设备构造条带区域446

6.7.2 查找包含给定偏移的条带区域451

6.7.3 映射到成员设备及其扇区偏移451

6.8 RAID5模块452

6.8.1 RAID5模块对象452

6.8.2 请求执行过程459

6.8.3 同步和恢复过程507

第7章Device Mapper模块509

7.1 概述509

7.2 Device Mapper对象510

7.2.1 dm_table:映射表结构512

7.2.2 dm_target:映射目标结构513

7.2.3 mapped_device:映射设备结构514

7.2.4 dm_dev:低层设备结构515

7.2.5 target_type:映射目标类型516

7.3 Device Mapper模块初始化518

7.4 映射设备的创建519

7.4.1 分配映射设备描述符521

7.4.2 加载映射表526

7.4.3 恢复映射设备532

7.5 映射设备的请求执行536

7.5.1 添加到延迟链表537

7.5.2 分割与处理bio 539

7.6 内核复制线程549

7.6.1 准备复制任务551

7.6.2 任务处理流程553

7.7 Device Mapper目标类型编程模式556

7.7.1 定义私有数据结构557

7.7.2 声明目标类型结构557

7.7.3 实现目标类型方法557

7.7.4 实现模块加载和卸载方法558

7.8 条带映射模块558

7.8.1 构造函数559

7.8.2 析构函数562

7.8.3 映射函数562

7.8.4 end_io函数563

7.9 快照映射模块563

7.9.1 快照映射对象564

7.9.2 快照源构造569

7.9.3 快照构造570

7.9.4 快照源读/写577

7.9.5 快照读/写585

7.9.6 例外仓库588

第8章 文件系统593

8.1 概述593

8.2 文件系统对象595

8.2.1 file_system_type:文件系统类型596

8.2.2 super_block:VFS超级块597

8.2.3 inode:VFS索引节点602

8.2.4 dentry:VFS目录项610

8.2.5 vfsmount:文件系统装载612

8.3 装载文件系统614

8.3.1 mount系统调用的处理流程618

8.3.2 构建子文件系统装载实例621

8.3.3 关联文件系统的超级块实例623

8.3.4 调用回调函数填充超级块626

8.3.5 装载到全局文件系统树630

8.4 路径查找632

8.4.1 路径查找入口635

8.4.2 逐个分量解析637

8.4.3 解析单个分量642

8.4.4 上溯通过装载点645

8.4.5 下溯通过装载点646

8.4.6 处理符号链接646

8.5 打开文件651

8.5.1 open系统调用的处理流程653

8.5.2 解析路径最后一个分量658

8.5.3 填充文件描述符的内容662

8.6 读文件665

8.6.1 read系统调用的处理流程670

8.6.2 基于缓冲页面构造I/O请求683

8.6.3 直接针对页面构造I/O请求690

8.6.4 从文件块编号推导磁盘块编号696

8.7 写文件700

8.7.1 write系统调用的处理流程700

8.7.2 通知为缓冲写请求作准备707

8.7.3 通知数据已复制到缓冲区712

8.8 冲刷文件715

8.8.1 BDI相关对象715

8.8.2 注册后备设备信息719

8.8.3 forker线程执行流程721

8.8.4 flusher线程执行流程723

8.8.5 同步相关系统调用749

8.9 块设备文件761

8.9.1 块设备的主inode和次inode 762

8.9.2 对块设备文件的操作转换为对块设备的操作764

8.9.3 对块设备文件的读/写作用于块设备之上767

8.10 文件系统编程模式767

主要参考文献769

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2024/12/23 5:09:34