磁盘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。再重启即可。
原文地址:https://www.cnblogs.com/Kid-Zhou/p/8514290.html