免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

Linux存储大家谈! [复制链接]

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
61 [报告]
发表于 2011-12-05 23:16 |只看该作者
回复 12# jerryjzm


    ASM的设计理念是想把所有ORACLE相关的文件放上去。 有一点是值得称赞的, 让DBA或者SA在安装和管理数据库的时候,底层直接跟ASM打交道,省去了直接和不同的存储硬件去做直接的操作,相当于加了层接口。

   ASM上面有一层ADVM接口,再往上有一个ACFS的实现,这个ACFS在很多客户的生产环境中已经应用了,有做ORACLE相关的可以关注。

论坛徽章:
0
62 [报告]
发表于 2011-12-06 14:21 |只看该作者
回复 57# ao_qy


    你也够神了,05年注册后潜水6年,现在才出来冒泡

论坛徽章:
0
63 [报告]
发表于 2011-12-06 16:32 |只看该作者
本帖最后由 ao_qy 于 2011-12-06 21:20 编辑

在Linux存储中,RAID一直是大家反复谈论的话题,概念和分类已经被网络传来传去的文章炒透了。Linux RAID5/6的分析虽有,却极少,并且都没有精确解释add_stripe_bio这个关键函数。我在苦思冥想后整理了下面的分析,供大家参考。



摘自《存储技术原理分析——基于Linux2.6内核源代码》第469/470页。

论坛徽章:
0
64 [报告]
发表于 2011-12-07 07:20 |只看该作者
回复 14# milujite


    讲得很好!顶!

论坛徽章:
0
65 [报告]
发表于 2011-12-07 09:41 |只看该作者
回复 1# send_linux


   谈及存储技术,就会考虑文件系统的表现形式。 linux 下的存储是根据需求而产生的,针对服务器linux与的extX NFS  mooseFS ASM  FastDFS Lustre Hadoop等涉及的存储技术、以及裸设备的存储技术都是在各类磁盘存储器;针对嵌入式的 jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等嵌入式的文件系统的存储设备为 RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器);
   
  不同的领域里面的存储定义的概念和需求实现方式也各有不同,在特定的应用环境中来分析存储特性才是合理的选择。

  在嵌入式的领域基于FLASH的文件系统和基于RAM的文件系统的文件系统就是用在不同的应用中,如同服务器领域中一套系统中存在多种的存储技术。

基于FLASH的文件系统
Jffs2: 日志闪存文件系统版本2 (Journalling Flash FileSystem v2)
  主要用于NOR型闪存,基于MTD驱动层,特点是:可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电安全保护,提供“写平衡”支持等。缺点主要是当文件系统已满或接近满时,因为垃圾收集的关系而使jffs2的运行速度大大放慢。
jffsx不适合用于NAND闪存主要是因为NAND闪存的容量一般较大,这样导致jffs为维护日志节点所占用的内存空间迅速增大,另外,jffsx文件系统在挂载时需要扫描整个FLASH的内容,以找出所有的日志节点,建立文件结构,对于大容量的NAND闪存会耗费大量时间。

yaffs/yaffs2是专为嵌入式系统使用NAND型闪存而设计的一种日志型文件系统。与jffs2相比,它减少了一些功能(例如不支持数据压缩),所以速度更快,挂载时间很短,对内存的占用较小。另外,它还是跨平台的文件系统,除了Linux和eCos,还支持WinCE, pSOS和ThreadX等。
affs/yaffs2自带NAND芯片的驱动,并且为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD与VFS,直接对文件系统操作。当然,yaffs也可与MTD驱动程序配合使用。
  yaffs与yaffs2的主要区别在于,前者仅支持小页(512 Bytes) NAND闪存,后者则可支持大页(2KB) NAND闪存。同时,yaffs2在内存空间占用、垃圾回收速度、读/写速度等方面均有大幅提升。

Cramfs是Linux的创始人 Linus Torvalds参与开发的一种只读的压缩文件系统。它也基于MTD驱动程序。
Cramfs文件系统以压缩方式存储,在运行时解压缩,所以不支持应用程序以XIP方式运行,所有的应用程序要求被拷到RAM里去运行,但这并不代表比Ramfs需求的RAM空间要大一点,因为Cramfs是采用分页压缩的方式存放档案,在读取档案时,不会一下子就耗用过多的内存空间,只针对目前实际读取的部分分配内存,尚没有读取的部分不分配内存空间,当我们读取的档案不在内存时,Cramfs文件系统自动计算压缩后的资料所存的位置,再即时解压缩到RAM中。


基于RAM的文件系统
Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。
在Linux的启动阶段,initrd提供了一套机制,可以将内核映像和根文件系统一起载入内存。

Ramfs是Linus Torvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其最大能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)
Ramfs/tmpfs文件系统把所有的文件都放在RAM中,所以读/写操作发生在RAM中,可以用ramfs/tmpfs来存储一些临时性或经常要修改的数据,例如/tmp和/var目录,这样既避免了对Flash存储器的读写损耗,也提高了数据读写速度。
Ramfs/tmpfs相对于传统的Ramdisk的不同之处主要在于:不能格式化,文件系统大小可随所含文件内容大小变化。
Tmpfs的一个缺点是当系统重新引导时会丢失所有数据。

论坛徽章:
0
66 [报告]
发表于 2011-12-07 09:44 |只看该作者
淘宝声称将TBFS开源,FastDFS和TBFS相比,有何优缺点?或者说应用场景不同?
saintdragon 发表于 2011-12-04 23:33



    开源 就是广泛的测试基础
  开源 可以集中互联网的力量发现修改bug
具体看开源的文档和内容都是那些方面的,要有足够的信息来对比

论坛徽章:
0
67 [报告]
发表于 2011-12-07 13:24 |只看该作者
回复 63# ao_qy


块IO一章很赞

论坛徽章:
0
68 [报告]
发表于 2011-12-07 15:49 |只看该作者
关于块I/O子系统对象(摘自《存储技术原理分析——基于Linux2.6内核源代码》第287页):

    从根本上讲,块I/O 子系统的故事就是磁盘(分区)和块设备之间的故事。这里的磁盘即前面的通用磁盘的简称,它已经透明了低层的物理属性或逻辑属性,抽象出一个以块为单位的线性排列的完整实体。一个磁盘可以创建多个分区,每个分区覆盖了磁盘的一部分连续块。分区是一种比较特殊的逻辑设备,Linux 将对分区的支持集成到块I/O 子系统中,对分区的请求可以简单地被线性映射到分区所在的磁盘。磁盘本身也可以当作一个“大的分区”,因为它的分区编号为0,本书称为零号分区。其他分区从1 开始编号。如果磁盘上可以创建编号大于1或等于1 的分区,我们称这个磁盘是“可分区的”;否则称它是“不可分区的”。
    磁盘和分区都可以作为块设备“独立”使用,它们分别对应一个块设备,在对分区进行I/O 操作时,其偏移值被转换为相对于磁盘的偏移值,交付低层块设备驱动执行。它们反映了同一事物的不同方面。磁盘(分区)强调对下层的执行属性,比如对请求的处理方面;而块设备强调对上层的操作属性,例如,上层发送到块I/O 的读/写请求都是以块设备为目标的。通用磁盘、分区和块设备描述符之间的关系如图5-2 所示。
    如果说SCSI 磁盘驱动是连接块I/O 子系统和SCSI 子系统之间的的桥梁,那么也可以这样认为,块设备是联系块I/O 子系统和文件系统之间的纽带。
    系统启动过程中,检测到磁盘时,一般需要扫描其分区,在内存中构造磁盘/分区关系。在分区实用程序对磁盘分区进行改变之后,也应该通知内核更新磁盘/分区关系。
    块I/O 子系统的另一个重点在于透彻分析I/O 请求处理过程中牵涉的对象,主要包括通用块层请求和块设备驱动层请求,两种既相互关联,又相互独立。
    bio 表示上层发送给通用块层的请求,称作通用块层I/O 请求,或通用块层请求,它关注的是请求的应用层面,即读取(或写入)哪个块设备,读取(或写入)多少字节的数据,读取(或写入)到哪个目标缓冲区等。request表示通用块层为低层块设备驱动准备的请求,称作块设备驱动层I/O 请求,或块设备驱动层请求,它关注的是请求的实施层面,即构造哪种类型的SCSI 命令。

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
69 [报告]
发表于 2011-12-08 11:11 |只看该作者
开源 就是广泛的测试基础
  开源 可以集中互联网的力量发现修改bug
具体看开源的文档和内容都 ...
kns1024wh 发表于 2011-12-07 09:44


回答得很精辟啊!
FastDFS和TFS都是应用级的分布式文件存储系统,二者的应用场景基本上是重叠的。
至于二者各自的优缺点,感兴趣的同仁可以看一下相关的资料。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
70 [报告]
发表于 2011-12-08 14:01 |只看该作者
回复  send_linux


   谈及存储技术,就会考虑文件系统的表现形式。 linux 下的存储是根据需求而产生的 ...
kns1024wh 发表于 2011-12-07 09:41


百湖兄,现在嵌入式上面的存储越来越好了,下面用的nand,有些直接通过emmc来控制
这样,文件系统的block的使用就不用考虑那么多了,于是乎ext2/ext3/ext4就可以随便用了
比如Android 2.3在不少的新的平台上,用的就是emmc了,文件系统就是ext4
当然,之前用的还是yaffs,呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP