樱桃沟夹事

Timo's life

注:这个手册只是为了方便自己看而翻译,并不是官方的。其中省略了后面getting ext4 code的部分,官方手册请点https://ext4.wiki.kernel.org/index.php/Ext4_Howto

ext4-howto中文版

通用信息 ext4在Linux2.6.28作为了一个稳定版本的功能发布了,同时所有现代的发行版本都包含了它(有些还作为默认文件系统),所以你使用一个新的发行版本的话,也许你已经使用上了ext4,那就不需要改成ext4。

在生产环境中它是可以安全使用的,但是作为任何软件,它都是有bug的(在第一个稳定版本中都有可能被隐藏)。任何周知的严重的bug都会被迅速修复。如果你发现一个严重的bug,你可以联系ext4的开发者在ext4 mailing list(http://vger.kernel.org/vger-lists.html#linux-ext4)。他们通常也会上IRC(https://ext4.wiki.kernel.org/index.php/IRC)。 ext4的特点 兼容性 任何现有的ext3文件系统都可以用ext4重新mount,而不需要任何格式化改变。无论如何,我们都可以在只读模式下通过一串命令来升级ext3文件系统来利用ext4的一些特性。这就意味这你可以增加性能,存储限制和特性而无需重新format或者重新安装系统和软件环境,如果你在生产环境需要ext4的优势,你就可以升级你的文件系统。这个过程是安全的,并且对你的数据是没有风险的(当然,备份你的重要的数据是应该的,就算你没有升级文件系统也是应该的。但是这个升级在RHEL6中是没有售后服务的)。ext4只会对新的数据使用新的数据结构,而老的数据结构会继续保留,当需要时候也会进行对写它们。这就意味着,如果你升级到了ext4,那就就不能再退回到ext3了。 更大的文件系统和文件大小 现在,ext3支持最大16TB的文件系统大小和最大2TB的单个文件大小。ext4增加了48bit的block地址,所以它支持最大1EB的文件系统和最大16TB的单个文件大小。为什么是48bit而不是64bit呢?因为在让ext4支持64bit之前我们还有一些限制需要被修复,所以没有在ext4中被使用。ext4数据结构的设计已经在思想上确认了,所以未来ext4可能在一些点上会实现完整的64bit。1EB在那之前应该是足够的。 注意: 创建大于16TB的文件系统的代码已经在写这篇文章的时候有了。它将在未来会被发布。 1EB=1024PB 1PB=1024TB 1TB=1024GB 子目录扩展 在ext3中现在单个目录中最大的子目录数是32000个。ext4打破了这个限制,允许拥有无限制的子目录。 extents 传统的类Unix文件系统象ext3这样的都使用间接的block映射方式来保持每个block相对应的文件的数据的block的track。对于大文件这是低效的,特别是对大文件进行删除或者清空操作的时候,因为对每一个单一的block的入口都进行了映射,而大文件拥有很多block—>大量的映射,于是就有了缓慢的操作。现代文件系统使用了不同的方法叫作”extents“。一个extent本质上就是一串相邻的物理block。在本质上说“数据在后面n个block中”。比如,一个100MB的文件会被分配到单个那样大小的extent,来替代创建间接的25600个block映射(4KB每个block)。非常巨大的文件也会被分在多个extent中。extent提升了性能,也减少了磁盘碎片,所以extent促进了在磁盘上的保持连续layout。 多block分配 当ext3需要写数据到磁盘上,它的block分配器就会确定哪些空余的block可以被用作写入数据。但是ext3的block分配器在同一时间只能分配一个block。这就意味着如果系统需要写入100MB的数据,在写入的前一个点,它需要调用25600(100MB/4K)次block分配器。这样不仅是没有效率的,它不允许block分配器优化分配策略,因为它不知道有多少数据已经被分配掉的,它只知道单独的block是否被分配掉。ext4使用“multiblock allocator”(mballoc)在一次调用的时候就分配许多block,用来替代一次调用分配单独一个block,避免了一部分的负载压力。这种方法提升了性能,尤其在延迟分配和extent下会更有用。这个特性不影响磁盘的格式。而且ext4的block/inode分配器还有一些其他的提升,会在后面进行描述。 延迟分配 延迟分配(http://en.wikipedia.org/wiki/Allocate-on-flush)是一个性能特性(它不更改磁盘格式)在一些现代的文件系统中诸如XFS,ZFS,btrfs或者Reiserfs4等,它会尽可能延迟block的分配,相反的一些传统的文件系统(如ext3,ext2,Reiserfs3)都是尽可能快的进行分配block。比如当一个进程write(),文件系统的代码就会立刻根据数据将要分配的地方分配block,甚至数据当时还没有被在写到磁盘时它有时就会保存在cache内的数据。这种方法已经落后了。比如当一个进程连续的往一个文件里写入数据,连续不断的write()为数据分配block,但是它不知道文件是否持续增长。而延迟分配就在另一方面,当进行write()时它不会立刻分配block,事实上,它会一直延迟保存在cache中的文件的block的分配,直到它真的是要写入到磁盘上。这给了block分配器以机会来优化那些在老旧系统中所有没有的分配。延迟分配能跟先前两个提到的特性multiblock分配和extent下很好的运行,因为当文件最后写入到磁盘它需要分配到extents中,而这些extent已经通过multiblock分配器分配完成对应的block,这当中会有很大的工作负载。在一些工作负载中这样性能会更好,同时磁盘碎片也会大大改善。 快速fsck fsck是非常缓慢的操作,特别是第一步:检查文件系统中所有的inode。在ext4中,每一组inode表最后都会保存未使用的inode列表(为了安全还含有校验和),所以fsck就不需要检查那些inode。结果是完整的fsck的时间将会提升2到20倍,根据已使用的inode(http://kerneltrap.org/Linux/Improving_fsck_Speeds_in_Ext4)。当在fsck时候必须通告未使用inode的列表在不是ext4的时候。这就意味着当你必须运行fsck来获得未使用inode的列表时,只有下一次fsck运行的时候会更快(任何时候把ext3转成ext4必须先通过fsck)。还有个特性就是fsck加速“灵活的block组”–这个同样能加快文件系统操作。 日志校验 日志是磁盘使用率最高的部分,动了这个部分的block很有可能导致硬件故障。从有问题的日志中进行恢复只会导致更大的问题。ext4会校验这些日志数据来知道是否日志block是否已经失效还是有问题。日志校验还带来一个意外的好处:它把ext3中的2段提交变成了直接提交,在一些情况下对于文件系统操作加快了20%-故可靠性和性能同时都会提升。(注:日志校验提升性能的部分-异步日志记录现在已经被默认关闭,等将来它更可靠之后才会被默认开启) 无日志记录模式 日志记录通过不间断记录磁盘更改的日志来保证文件系统的完整性。当然,它会产生一些额外开销。一些人会有一些特殊的需求和工作需要关闭日志模式并牺牲完整性。在ext4中日志记录功能可以被关闭,能小小的提升性能。 在线磁盘整理 (这个功能已经开发完成,在未来的版本中会包含发布)。由于有延迟分配,extent,以及multiblock分配这些帮助了系统减少碎片,但是只要使用文件系统就会产生碎片。比如:你在一个目录下写3个文件接着写入到磁盘上。有一天你需要更新当中那个文件,使那个文件增加了1bit,然后没有足够的空间给它了。你不得不把多出的部分移动到通过查找的磁盘的其它地方,或者分配文件连续的其它地方,远离了原先的另外2个文件,当一个应用程序需要读取在这个目录下的所有文件就会通过查找来进行(一个文件管理器会对整个目录做一个缩略图)。另外,文件系统只关心确定的文件碎片类型,它不知道比如它必须保留所有相邻的启动相关的文件,因为它不知道哪些文件是启动相关的。为了解决这个问题,ext4将支持在线的磁盘碎片整理,同时e4defrag工具能够整理单个文件和整个文件系统。 inode相关的特性 更大的inode,纳秒级的时间戳,快速的扩展属性,inode预订。。。 更大的inode:ext3支持配置inode的大小(通过mkfs -I参数),但是默认的inode大小是128byte。ext4中将默认的变为256byte。这是为了迎合一些扩展的字段(象纳秒级的时间线或者inode版本),然后inode剩余的空间用作存储扩展属性。这导致访问这些属性更快,提升了那些用到这些扩展属性的应用程序的性能通过3-7次的一个因素。 inode预订存在于当一个目录被创建时都会预订一些inode,并期望在未来会被使用。这提升了性能,因为当一个文件在一个目录下被创建时它们会使用这些被预约的inode。因此文件被创建会删除会更有效率。 纳秒级的时间戳意味着inode信息象“modified time”将可以使用纳秒级别来代替ext3中的秒级别。 连续的预分配 这个特性,在最新的kernel版本中的ext4是可用的,它通过文件系统的glibc仿真实现,但是没有支持,它允许应用程序预分配磁盘空间:应用程序告诉文件系统预分配空间,然后文件系统会预分配必要的block和数据结构,但是这些都是没有数据在里面的直到将来应用需要写数据到里面。这就跟p2p应用程序会预分配自己接下来几个小时或几天的空间来用作下载,但是通过文件的一个通用API来实现会更有效率。这有许多种用途:首先避免应用程序(比如p2p应用程序)通过0来填充满一个文件是非常不经济的。第二会改善磁盘碎片情况由于block会在同时被连续的分配。第三确认应用程序将要需要的磁盘空间,这对于实时的应用程序是非常重要的,因为没有预分配文件系统就需要得到完整的重要操作。这个特性是可用的通过libc posix_fallocate()接口。 默认的隔离 这是一个提升文件系统完整性的一个选择,但是会牺牲一些性能(你可以通过”mount -o barrier=0”来关闭它,推荐你在进行压力测试的时候关闭它)。通过这篇LWN的文章(http://lwn.net/Articles/283161/):“文件系统代码必须在写提交日志记录之前先确认所有的事务信息已经产生在日志中了。仅仅根据正确的顺序写还是不够的;现在的驱动为了更好的性能都会包含大量的内部cache用来记录操作。所以文件系统必须在提交记录之前清楚地通知磁盘获得所有在存储上日志数据。如果提交的数据写别写入,那日志有可能是不完整的。内核的block I/O子系统通过使用隔离是能力解决这个问题的;在本质上,一个隔离就会禁止任何block的写入,直到所有隔离提交前的block都写入到存储上。通过使用隔离,文件系统可以确定在磁盘上数据结构在所有时候都仍旧一致的。” getting ext4 code 略…………

据说冯小刚自己最喜欢的片子是《一地鸡毛》这部10集电视连续剧,于是我就在优酷上看了下,发现还真是不错。

在94年的时候大学生还稀缺资源,自然进入中央各个部门当个小科员不成问题,但是那个时代做官可不怎么样,穷啊,全民都在做生意。

当初流行这句 “10亿人民9亿倒,还有1亿在思考。” 大家都在思考怎么经商来着。这就是为什么结局的时候小林幻想自己成为了一个擦车的。这在现在看来是不可思议的,可在当时这是十分正常,父母一辈好多人当初 都下海了。

俗话说“30年河东,30年河西。”看来这个世界啊就是到处转啊。

从经济学上看也是如此,如果一个人一直坚持一开始的选择,那他最后获得的收益往往是最高的,而对于那些中途改变自己的选择,那肯定是没多少收益的。

这种例子在现实生活中比比皆是,我们常说的“傻人有傻福”基本就是这个道理。

阅读全文 »

学习古文一定要懂古代汉语,特别是先秦的古文,

那文字的意思应该跟现在的差别很大,而唐宋之后的文字基本跟现在的差别就相对较少。 应该说我古文基础还可以,基本大体意思可以看明白,但是有时候精读的时候还是会有点问题。特别是相近的词进行辨析的时候。 在看了《古代汉语》之后算是有了一点点明白。下面我就根据书中的内容进行整理的,也备自己以后看书时候查验。 言 1 動詞: 說話,說。 論語中有“食不語,寢不言”。左傳中有“豈敢言病” 2名詞: 話,言論。 論語中“聽其言,觀其行” 語 1動詞: 談話  論語中有“食不語,寢不言”  李白有詩“不敢高聲語,恐驚天上人” 2讀yu,第四聲: 告訴。 左傳中“公語之故,且告之悔”。 3名詞:言論,話。 論語中“吾聞其語矣,未見其人也” 4名詞: 諺語,俗話。“語曰:‘脣亡則齒寒’” 这2个词都有动词“说话”和名词“言论”的意思。 “言”是自动地跟他人说话 “语”是指回答别人的問話,或是和人谈论一件事。 “言”“语”用作及物动词时,分别就更明显了。“言”一般能带事物的宾语(言病,言事),如果指人,只能是他指,而不能指说话的对方。“语”既能带指事物的并与,可以指谈话的对方。

买房真是一个辛酸的过程。到现在我还没买上。

关键是周围意见分歧还挺大。父母派基本觉得以后是下跌的趋势,而媳妇这一方觉得以后还是涨,毕竟是被涨怕了。但是综合考虑还是应该相信父母的意见,可要说服媳妇也是挺难的事情。可以后买房越来越难,所以一定要用好第一套房这个入场券啊。我知道对于一个女人来说,家就是她的全部。所以我发誓一定要让她住上大房子,不管是要奋斗多少年。 希望下一个情人节的时候能够跟媳妇住上新房子,大房子。 应该说北京的房价正在一步步趋同的过程,特别五环以内以及附近。3环左右的一些老楼也3W,清河,回龙观什么的也3W左右。那看来3环内老公房会越来越吃香的。看看小区里借房子的人越来越多。 买房子不光是看地段,也要看周边配套。按北京的道路交通来看,地铁是必须的了。不然你开车啥的根本算不准时间阿。而地铁是尽量选择南北或者东西贯通的,这样就算换乘也方便,而不要选择断头线,比如八通线,房山线这样的。 新房和二手房也是一个抉择的过程。新房交易成本低,但是北京新房估计没有适合刚需的,而且新房基本都是期房,不拖你个2,3年估计很难交房。而这2,3年的你的租房成本也必然要计算在内的。而二手房如果是5年以内的契税也是非常可观的。所以最好是5年-6年的房子是最好的,20年以上的房子估计连贷款也难办了。 同样一个小区的房子价格也会有1K-3K的差距的,这个主要是朝向和位置上。然后小户型的均价明显是比大户型的要高许多。而且越是新的房子,这个公摊面积越大。有些带电梯的公摊会达到30%。怪不得当初英国姥要在中国打官司呢,说买房全世界都按照使用面积来算的,为啥中国是建筑面积呢。 其实看房选房只是慢慢买房征程的第一步,后面还有好多好多的事情需要办理产调,看下房产证信息啥的,然后才是起草和签署合同,接着是付首付和契税,首付一般是要走第三方监管的,然后是贷款,有公积金和银行贷款2种,时间大概是20天左右,接着才是过户,最后才是放款和交房。天那,这个流程也太复杂了。怪不得大家都找中介呢。 而新房相对来说简单的多,主要是首付和贷款办理,买之前查验开发商各种资质和证件。主要还是合同内容,这个建议给身边懂法律的朋友看看,因为我发现我之前要定的那个新房楼盘的合同存在很大的问题,不知道住建委怎么让这样的合同审核通过的。一个住房买卖合同居然没有户型图以及响应的长宽以及位置信息,这种合同怎么可以签署呢? 看房还真是一个体力活,对于我这种劳动人民的儿子,只能是公交地铁加11路进行看房,一个中介接着一个中介,一个楼盘接着一个楼盘。双休日也不在是双休日了。

要创建ext4文件系统之需要运行

1
mkfs.ext4 /dev/device

默认的选项对于大部分使用情况都是最优化的。
具体的参数可以 man mkfs.ext4 获得

对于条带化块设备(如RAID5),条带的属性可以在文件系统创建的时候进行指定。在ext4中使用合适的条带化设置可以大幅的提升性能。

当在lvm或者磁盘卷上创建文件系统,mkfs.ext4选择一个最优的参数。这种参数可能对于一些可以导出参数信息到操作系统的硬件的RAID也是适用的。

对于特定的条带化参数,可以用mkfs.ext4的-E参数来指定
stride=stride-size
指定RAID的chunk大小

阅读全文 »

在RHEL6中ext4就会成为了默认的文件系统,

我想还是有必要了解个大概。 ext4文件系统是对于ext3文件系统的扩展。ext4已经是RHEL6的默认文件系统了。它能够支持最大16TB的单个文件和1EB的文件系统。它支持无限数量的子目录(而ext3是最多32000个子目录) 主要的特点: ext4使用extents(不像ext3和ext2那种block映射的模式),这提高了当使用大文件时候的性能和减少了大文件的元数据过载。另外,ext4标记那些未被分配的block group和相应的inode表,这样就可以当文件系统check的时候可以跳过它们不检查。这样就可以更快的检查文件系统,这个在越来越大的文件系统上是非常有用的。 分配的特点 ext4文件系统的分配模式: 持续的预分配 延迟分配 多个块同时分配 stripe-aware分配:对于底层的条带化存储来说配额和I/O是一样的一种分配行为。这是依赖于在mkfs的时候有效的条带化信息。做一致的分配I/O能够有效的避免无效的读-修改-写的周期在底层存储上。 由于延迟分配和其它的性能加速,导致ext4写文件到磁盘的行为跟ext3有所不同。程序写数据到文件系统并不保证写到磁盘上,除非程序在后面执行fsync()方法。 而默认的,ext3都会自动的几乎是立刻的强制创建文件到磁盘上,甚至不需要执行fsync()方法。这种行为隐藏了问题当程序没有使用fsync()来确认写数据到磁盘上。ext4文件系统在另外一方面,经常会等待几秒去把更改的数据写到磁盘上,允许合并和更改写比ext3拥有更好的磁盘性能。 注意事项: 不像ext3,ext4文件不用强制数据写入到磁盘就跟事务提交一样。本身,它花费更长缓存写然后刷新到磁盘上。在任何文件系统,使用数据完整的回调类似fsync()来确定数据写入到永久的存储中。 其他特性 ext4同样支持以下特性: 增强的属性(xattr),允许系统给每个文件赋予其他的name/value值。 磁盘配额日志,这样就避免在系统崩溃时候漫长的磁盘配额检查。 亚秒级别的时间线。 ext4主要的特性就是上面这些。下面一些对上面的解释。 在ext4中引入了extent的概念, 下面一些内容是摘自:http://www.ibm.com/developerworks/cn/linux/l-cn-filesrc5/ 所谓extent就是描述保存文件数据使用的连续物理块的一段范围。每个extent都是一个ext4_extent类型的结构,大小为 12 字节。 图 ext4中extent 树的布局结构

下面这个是ext3 与 ext4 磁盘布局对比。从这个图中我们可以很清楚的看到ext4中多了个group的概念

夜空中感觉是炸开了一样

5421715418_3a85578035_z.jpg

怎么到了科幻片场景里面了

5421715428_ebc11932c7_z.jpg

一次小型的爆破

5421715408_cbf2c358bb_z.jpg

阅读全文 »

使用nginx cache也有很长一段时间了,原来没有想到用nginx cache会有那么多问题存在,还是在实际运用中才发现如下问题的。 首先是要禁止IP访问。我这里直接给它返回403

1
2
3
if ($host ~ "\[0-9\]{1,3}.\[0-9\]{1,3}.\[0-9\]{1,3}.\[0-9\]{1,3}") {
return 403;
}

这个是为了监控需要才加上的。

1
2
3
if ($http_user_agent ~* "monitor") {
break;
}

这个是当用户直接访问域名下某个文件时候,那就直接退出

1
2
3
if ($request_uri !~* /$ ){ 
break;
}
阅读全文 »

最近跟美食较上劲了,首先是媳妇跟我爸学了个炒年糕,

还有今年年夜饭由我们两来筹备并且顺利完成。看来食材的好坏基本决定了菜的美味程度。 然后看了本书《甜蜜的悲伤》是作者的母亲去世后他就用跟母亲身前留下的美食书籍来学习制作美食,以此来怀念自己的母亲。作者刚开始做的时候是完全根据他妈妈留下的书籍一步一步制作的,就跟我们做西点一样,面粉多少克,糖多少克,黄油多少克这些要在事先都称好了。可做饭真的需要这样吗? 对于普通人来说做饭是一件比较麻烦的事情,但是这个事情在我爸看来那就是享受,虽然老爸从来没有考过厨师证,但是我想他要考的话来个二级厨师是没有问题的。但是他就闲麻烦考证,而且又不想开餐馆。 大部分人都是想好做什么菜然后再去买相关的食材,但是对于到了一定境界的厨师来说,买食材是一个常态,就算今天不做,他也会买点啥,留着以后什么时候用的上。所以我们家里各种调味品多达20多种,并且冰箱里永远都是满满的。 而今天做什么完全靠自己今天的心情,基本上随便拿个食材就可以做一桌子菜,而现在很多人居然还是拿着菜谱铺在台面上一边看一边做,这样虽然做的味道不会差到哪里,但是这是做饭的境界吗? 当然不是。 看过《中华小当家》这部动画片的人都知道,小当家经常在规定的食材里创造出自己的新菜品,虽然这只是一部动画片,但这才是到了境界的厨师应该做的。因为他了解所有他要使用的食材的特性,有的放矢。而不是造葫芦画瓢没有自己东西的菜品。 而要到这样的境界完全是靠平时的积累,知道这个食材怎么做比较好吃,它的特性是什么,什么时候吃最好,跟其它食材如何配比,做的时候是冷水还是开水,或者油温是多少,煮多久,这些你都得了然于心才能达到随心所欲的创造自己的菜品。这就造成了老爸去餐馆还得指点厨师怎么做,用什么材料好。 天下道理都是一样的。结合linux系统工程师来说,当然是要了解自己的刀剑谱阿。从连接客户端,到操作系统,到系统软件,到各种参数,最后明白它们的工作原理。这样才算是整理完成了自己的刀剑谱,碰到各种问题可以随心所欲的进行配置和调优。而不是当场进行google找答案,并且每个参数对于不同的应用它的效用都是不一样的。也没有说某一个参数怎么设置就一定会得到什么结果。世界上的事情要是都是如此简单就好了。

花了春节前2天把《平凡的世界》三本全部看完了,心里久久不能平静。这部作品应该很多人都看过,特别是第一部我觉得很经典,让人重新了解了那个离我们十分遥远的地方。 严格来说这书里的人物几乎没有坏人,也就金富他们家和王彩霞算是坏蛋。其它的主人公孙少平,孙少安,孙玉厚,田润叶,田晓霞这些可都是大大的好人。 我非常理解少平在失去村教师时候,去黄原打工的心境。对于有思想的人来说,书读的越多,见的市面越多,越不甘于在家乡窝着。老想着努力摆脱现实的束缚。可强大的传统力量往往让你心力憔悴。最后少平的遭遇算是挣脱的代价吧。 思想的交流跟你处于什么阶层没有关系,而是跟你读了多少书见了多少外面的世界有关系。少平和晓霞终究没有在一起,但是不能抹杀他们之间的交流。在这点上实在是难得。 快乐的风啊, 你给我们唱个歌吧! 快乐的风啊! 你吹遍全世界的高山和海洋, 全球都听到你的歌声。 吹吧,风啊! 对着险峻的山峰, 对着神秘的海洋, 对着鸟雀的细语, 对着蔚蓝的天际, 对着勇敢伟大的人物。 谁要是能够为胜利而奋斗, 就让他跟我们齐唱歌。 谁要快乐就能微笑, 谁要做就能成功, 谁要寻找就能胜利…… 这是书中的一段文字,我非常喜欢,好像是电影里的某段歌词。 最终这些青年人都不再年轻,他们都成熟了,都做出了自己今生无悔的选择,都找到了各自的方向,虽然有些人由于很多限制没有很大的理想,但是并不妨碍他们前进。 人的一生还是要牢牢把握住机会,叫我要扼住命运的咽喉。要是没有改革开放,我们孙少安估计还是穷光蛋,要是没有出去演出,我们孙少平还是一个自卑的同学。要是……要是……这样的句式还可以很多很多。 该书给人最大的启示一个是挣脱命运的束缚,另外一个就是幸福其实很容易,就跟田润叶和李向前那样的结局一样,当然这个太波折了。我更喜欢少平和晓霞这样心灵交流的那种幸福。

0%