zoukankan      html  css  js  c++  java
  • 磁盘IO的问题--(深入浅出笔记)

    ====磁盘IO问题====
      磁盘IO是不可避免的,除去减少或延缓磁盘操作,也需要尽量的增强磁盘IO性能和吞吐量
     
    1.磁盘阵列 redundant array of indexpensive disks 廉价磁盘冗余阵列。常见的磁盘阵列有 raid0、 raid1、 raid01 、raid10 、raid5、 raid6。
      RAID 0 条带化设计,无冗余,可靠性差;对可靠性无要求,读写很频繁的话,选RAID0
      RAID 1 镜像,至少n块磁盘(n>1),n倍容量,冗余保护,提高并发性能;
      RAID 10 先镜像再条带,可靠性比较好,并且并发比较好,数据库较优的选择。简图如下:
                        RAID 10
                      /            
                1 3                 2 4
                 |                   |
               1  1                2  4
               3  3                2  4

      RAID 5 在条带化的基础上增加了校验数据块,用来将条带的数据写到各个盘,而不是特定的磁盘。读取频繁,写需求较少,可靠性比较好,可以选择RAID5。简图如下:用*来表示校验位

              RAID 5
      ____2__4___*__7___*_____
      ____*__3___4__*___9_____
      ____4__*___6__0___1_____
    2.虚拟文件卷
       raid是硬件实现的,但linux操作系统中有一些软件包,能模拟实现raid,性能高于单个磁盘,弱于raid。
      例如:逻辑卷,由硬盘->pvcreate物理卷->vgcreate 卷组->lvcreate逻辑卷
     
    3.symbolic links软链接
      举个例子:在创建mysql时,数据库和表都默认存放在datadir目录下,可以采用软链接的将不同db、table、index指向不同的物理磁盘。
      参考网址:
     
      硬链接:同一个文件,有不同的别名,他们使用的是共同节点。
      有以下特性:
      1>文件具有相同的inode和data block
      2>只能对已经存在的文件进行创建硬链接
      3>不能交叉文件系统进行硬链接的创建
      4>不能对目录创建,只能对文件进行创建
        5>删除一个硬链接的文件并不会影响具有相同inode的文件
    $ link old.file hard.link | ls -il
    $ ls -i hard.link
    12468253 hard.link
    $ ls -i old.file
    12468253 old.file
      软链接:数据块内容有点特殊的文件。软链接有自己的inode和数据块。
      特性:
      1>软链接有自己的文件属性和权限;
      2>可对不存在的文件或者目录创建软链接;
      3>软链接可以交叉文件系统;
      4>可以对文件或者目录创建;
      5>创建软链接的时候,链接i_nlink不会增加;
      6>删除软链接并不影响被指向的原文件,但是原文件被删除,则相关软链接被称为死链接,若被指向的路径文件被重新创建,死链接则可以恢复。
    $ ln -s old.flie soft.link

     ================== 补充前提:=======================
        linux的文件数据和文件属性是分别存放于data block和metadata(元数据);inode是元数据中的一部分,只记录索引节点号,是文件的唯一标识。
      通过文件名来找到文件数据:filename-->inode(metadata)-->data blocks;
      可以通过ls -i    stat查看文件节点号,可以发现mv前后的文件inode没有变化
    ===================================================
     
    4.裸设备 raw device
      由于innodb的存储引擎是采用类似oracle的数据缓存机智来cache索引和数据,可以考虑使用raw device 来存放innodb共享表空间。
      1》需要修改配置文件[mysqld]修改参数innodb_data_file_path 
      2》启动MySQL,使其完成分区初始化工作,然后关闭。再将innodb_data_filw_path中的newraw改成raw。再重启即可。
  • 相关阅读:
    算法设计技巧与分析(1)二分搜索的前提——线性搜索
    感谢路过秋天以及他的部门经理
    WCF部署到IIS的一个浅水滩
    在WinForm里嵌入WPF模拟公交运行状态
    基于 WPF + Modern UI 的 公司OA小助手 开发总结
    SQL Server 上关于同一张表里的三级联动
    仿百度输入框智能提示
    初探原生js根据json数据动态创建table
    程序员的热血与梦想
    记第六次面试--功夫不负有心人
  • 原文地址:https://www.cnblogs.com/Kid-Zhou/p/8514290.html
Copyright © 2011-2022 走看看