自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Python之iter

Python的迭代器iter:iter函数返回一个迭代器对象。第一个参数的含义取决于第二个参数是否存在。如果没有第二个参数,参数o必须是collection对象或是支持sequence协议。否则会引起TypeError错误。如果存在第二个参数,该参数是哨兵,那么参数o必须是可调用对象。这种情况下,当每次调用next方法时,迭代器都会不调用o,直到遇见哨兵,触发StopIteration。i

2016-08-03 20:34:47 905 1

原创 Nginx+uWSGI+Swift

nginx+uWSGI配置遇到upstream prematurely closed connection while reading response header from upstream错误的解决方法:1、使用配置文件,不要直接在命令行中运行uWSGI;2、添加plugins=python到uWSGI的配置文件中;

2016-07-26 10:42:08 619

原创 《Python核心编程》第二版--第四章 Python对象

4.1 Python 对象所有的Python 对像都拥有三个特性:身份,类型和值。身份:每一个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数id()来得到。类型:用内建函数type()查看Python 对象的类型,type()返回的是对象而不是简单的字符串值:对象表示的数据项4.2 标准类型数字(分为几个子类型,其

2016-07-25 11:05:03 396

原创 《Python核心编程》第二版--第三章 Python基础

3.1 语句与语法井号(#)表示之后的字符为 Python 注释换行 (\n) 是标准的行分隔符(通常一个语句一行)反斜线 ( \ ) 继续上一行分号 ( ; )将两个语句连接在一行中冒号 ( : ) 将代码块的头和体分开语句(代码块)用缩进块的方式体现不同的缩进深度分隔不同的代码块Python 文件以模块的形式组织3.2 变量赋值Python 的赋值语句不会返回值

2016-07-25 10:30:28 554

原创 linux内核之块设备四---deadline调度算法

总体来讲,deadline算法对request进行了优先权控制调度,主要表现在如下几个方面:1)读写请求分离,读请求具有高优先调度权,除非写请求即将被饿死的时候,才会去调度处理写请求。这种处理可以保证读请求的延迟时间最小化。2)对请求的顺序批量处理。对那些地址临近的顺序化请求,deadline给予了高优先级处理权。例如一个写请求得到调度后,其临近的request会在紧接着的调度过程

2016-07-23 13:11:58 3667

原创 linux内核之块设备三---块设备排入bio请求

该接口作为通用的块设备处理bio请求的方式,主要思路是尽可能的合并bio到请求request中,如果可能进一步将连续的request合并;如果不能合并bio,则新建请求,初始化后,plug互斥方式:加锁,请求队列的锁涉及到不同的调度算法:将新建的请求添加到调度器的调度队列,由unplug触发调度器,进而将请求按照特定的调度算法将请求派发到请求队列的派发队列。/*块设备排入bio请求*/

2016-07-23 13:10:32 4888

原创 linux内核之块设备二---真正派发请求request

触发请求request派发的时机:重新申请一个请求失败时将一个带有unplug标记的bio添加到请求队列时将请求添加调度器的调度队列,达到了unplug阈值时unplug定时时间到,周期性前三个调用__generic_unplug_device,最后一个调用generic_unplug_device互斥机制:加锁,请求队列的锁在初

2016-07-23 13:09:38 3997

原创 linux内核之块设备一---通用块层bio处理

通用块层bio处理的接口generic_make_requestvoid generic_make_request(struct bio *bio){ if (current->bio_tail) { /* make_request is active */ *(current->bio_tail) = bio; bio->bi

2016-07-23 13:08:28 4128

原创 soft raid5阅读笔记之十四--resync和recovery的区别

在raid456三种情况下,根据mdadm是否添加--force参数,分为resync和recovery两种操作:resync:同步操作,是将数据块读出计算出校验和后存放到校验块中的过程(会读取所有的磁盘);recovery:相当于坏掉一块磁盘后raid的修复操作(读取N-1块磁盘,然后计算出第N个磁盘的值,写入第N个磁盘的过程);针对三种不同的级别,两者的区别如表所示:

2016-07-23 13:01:54 2718

原创 soft raid5阅读笔记之十三--异或操作

linux 软RAID中的异或操作,主要目录在/crypto目录下1、xor.c:主要是同步的异或操作的文件core_initcall(calibrate_xor_blocks):定义了初始化的优先级别为core(优先级为1);calibrate_xor_blocks()函数:是系统初始化时调用的创建xor模块的初始化函数;该函数的流程:分配一个两个内存页;选择异或块操

2016-07-23 13:00:47 937

原创 soft raid5阅读笔记之十二--DMA相关

1、异步传输描述符(linux/dmaengine.h):struct dma_async_tx_descriptor { dma_cookie_t cookie; /*本次传输的跟踪cookie,如果本次传输位于独立的链表,则设置为-EBUSY*/ enum dma_ctrl_flags flags; /* not a 'long' to pa

2016-07-23 12:58:45 1894

原创 soft raid5阅读笔记之十一--RAID6

1、校验和检查,如果不一致,则通过计算获取正确值,再写入到磁盘中,这里只根据状态设置相应的标志位,以便后续的操作:static void handle_parity_checks6(raid5_conf_t *conf, struct stripe_head *sh, struct stripe_head_state *s,

2016-07-23 12:53:50 1173

原创 soft raid5阅读笔记之十--状态标志

mddev->recovery标志位:MD_RECOVERY_NEEDED://可能需要修复操作,在md_check_recovery中根据不同的状态,再设置mddev->flags标志位:MD_CHANGE_DEVS=0;//MD设备状态 发生改变,在reshape/写失败/md_do_sync时会设置MD_CHANGE_CLEAN=1;//dirty

2016-07-23 12:53:03 594

原创 soft raid5阅读笔记之九--MD中的superblock

本节开始讨论一下MD设备中的superblock操作,关于superblock的说明如下(/include/linux/raid/md_p.h):/** RAID superblock.** The RAID superblock maintains some statistics on each RAID configuration.* Each real device in the

2016-07-23 12:49:13 1583

原创 soft raid5阅读笔记之八--磁盘扩展(reshape)

我们先来看看如何使用raid的reshape功能,在网上查资料说必须在有spare备用磁盘且必须指定backup备份文件的条件下,才可以进行磁盘扩展reshape,下面是我的使用记录:1、如果磁盘没有spare备用磁盘则提示如下错误:2、未指定backup备份文件,在superblock1.2版本下,可以正确扩展磁盘:从上面的使用可以看出,在superblock

2016-07-23 12:46:16 1895

原创 soft raid5阅读笔记之七--MD中的bitmap

本节主要介绍MD中的bitmap的机制,该机制主要用于减少不必要的同步操作。在真正的数据IO写操作之前先将该chunk对应的bitmap内存中的bit位设置为1,写入磁盘文件bitmap文件中,而在真正的数据写完成之后,再将bitmap文件中的bit位清零。这样,在进行一次IO写操作中,就多了两次磁盘的写操作,势必影响IO的效率,因此,在linux内核中,关于这部分做了两个方面的优化:1)批量写入

2016-07-23 12:40:30 1581

转载 soft raid5阅读笔记之七--MD中的bitmap(网上资料)

在RAID1,RAID5等存在数据冗余的磁阵结构中,数据的完整性要求冗余的数据和原始数据的信息要保证一致。磁阵的写操作是一个过程,这个过程中发生异常,可能导致冗余数据和原始数据不一致,例如磁盘更换,写盘失败,系统掉电等。    在系统要尽快使数据恢复一致,以使得磁阵后续可以正常工作,磁阵从数据不一致状态恢复的过程就是同步。假设系统重新上电后,如何知道哪些数据出于不一致状态呢?如果没有其他信

2016-07-21 20:52:52 1410

原创 soft raid5阅读笔记之六--修复

上一篇中提到了resync和recovery的区别,这篇主要来看看raid5对于修复的处理流程。首先先将mddev->recovery的一些状态做一些介绍:#define MD_RECOVERY_RUNNING 0 //resync或是recovery正在运行#define MD_RECOVERY_SYNC 1

2016-07-21 20:49:32 2411

原创 soft raid5阅读笔记之五--同步

resync:由成员磁盘计算出校验磁盘的过程,即初始化时需要同步;recovery:当成员磁盘出现故障,由其它的磁盘和校验盘进行计算获得该故障磁盘数据的过程;md_ioctl()函数中对SET_DISK_FAULTY的处理会调用set_disk_faulty()函数,该函数的参数:mddev:指向md设备的描述符指针;dev:md设备的设备号。从函数名可以看出,该函数是要设

2016-07-21 20:45:11 3047

原创 soft raid5阅读笔记之四--读成员磁盘错误的处理

在读取成员磁盘的过程中,可能会出错,错误来自于底层报告的错误,进而将该成员磁盘标记为故障磁盘。这部分从raid5_end_read_request()函数说起。static void raid5_end_read_request(struct bio * bi, int error){     struct stripe_head *sh = bi->bi_privat

2016-07-20 17:36:27 1416

原创 soft raid5阅读笔记之三--写数据流程

2016-07-20 17:35:32 1200

原创 soft raid5阅读笔记之二--读数据流程

2016-07-20 17:32:49 917 1

原创 soft raid5阅读笔记之一--数据结构

1、raid5私有数据结构定义为raid5_conf_t:struct raid5_private_data {     struct hlist_head     *stripe_hashtbl;     //所有的stripe_head通过hash连接件链入哈希表的哈希表头     mddev_t               *mddev;                //管理M

2016-07-20 17:31:58 1100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除