Linux存储管理:
    磁盘控制器,总线,接口

    磁盘接口的类型:
        IDE:并行接口,来源于ATA,133Mbps,266Mbps;
        SCSI:小型计算机系统接口
            UltraSCSI320:320Mbps
            UltraSCSI640:640Mbps
                窄带控制器:7个接口
                宽带控制器:15个接口
        SATA:serial ATA,串行接口;
            SATA1-SATA2-SATA3(6Gbps)...
        SAS:串行接口
            6Gbps,可接1023(个接口)硬盘
        USB:1.0 2.0 3.0 3.1
            2.0 60Mbps
            3.0 480Mbps
            3.1 10Gbps

        衡量磁盘IO能力的另一个指标:IOPS
            IDE:机械磁盘,50-100 IOPS
            SCSI:机械磁盘,100-200 IOPS
                固态硬盘,400 IOPS
            SATA:机械磁盘,100左右 IOPS
                  固态磁盘,400左右 IOPS
            SAS:机械磁盘,200左右 IOPS
                 固态磁盘,800左右 IOPS
            PCI-E接口的固态硬盘
                读的IOPS:40-80万
                写的IOPS:5-10万

        普通的X86的主板上的磁盘控制器的接口:
            IDE:2个接口,每个接口接一个主盘和一个从盘,共四块磁盘;如果有光驱的话,可能会减少至三个磁盘加一个光驱;
            SATA:4-6个接口;
            SCSI:7或15个接口;
            SAS:1023-16384个接口;


        CPU:控制总线,数据总线,地址总线;


    机械磁盘:
        术语:
            track:磁道,磁头在磁盘便面的运行轨迹的投影;
            sector:扇区,512ytb(字节),现在所说的扇区,实际上是平均值;最小管理单元;
            cylinder:柱面,从某个磁道向所有盘片做投影,所形成的圆柱表面;实际上是由所有盘片上相同位置的磁道组成;
            partition:分区,从某个柱面到另一个柱面之间所有的柱面存储空间;
            head:磁头,每个盘片的每个磁面都会有一个磁头,用于数据的读写操作;

            

            磁盘性能的指标:
            主轴转速;磁盘每分钟旋转的圈数
            平均寻道时间:
            缓存:

    /dev用于存放硬件设备被映射出的文件,磁盘的设备文件也存放于此;

    设备文件:是关联到硬件设备的驱动程序和设备的访问入口;    

    设备号:(设备号不超过255)
        major,minor
        major:主设备号,区分不同设备的设备类型,用于标明设备所需的驱动程序;
        minor:次设备号,在同种类型的设备中的不同设备;用于对设备提供访问入口;

    设备类型:
        块设备:
            以块为基本单位进行随机访问的设备,通常为存储数据的设备;
        字符设备:
            以字节为基本单位进行线性访问的设备,通常为处理数据的设备;


    设备文件名: (原由 IANA 命名 后 交给 ICANN 统一命名)
        /dev
            IDE:hd[a-d]
            SCSI|SATA|SAS|USB:sd[a-z]+

        RedHat Enterprise Linux 从RHEL6开始,将IDE接口的磁盘也命名为sd*,自此以后所有的磁盘设备被统一命名为sd[a-z]+。



    设备的引用方式:
        1.设备文件名
        2.卷标(Volume Lable)
        3.UUID:全局唯一标识符,Universal Unique IDentifier(建议使用)

mknod命令
格式:mknod [options] name {bc} major minor

创建设备文件并给出指定的主版本号和次版本号


如何使用新的磁盘设备:
    1.让linux系统内核识别设备,对设备进行分区;
    2.格式化
        低级格式化:磁盘初始化,磁道划分;
        高级格式化:创建或重建文件系统;
    3.使用文件系统:
        挂载
        卸载

    为什么分区?
        1.可以优化磁盘IO性能;
        2.可以实现对某个存储空间的配额限制;
        3.进行高速的磁盘问题修复;
        4.隔离系统文件和其他应用程序文件;
        5.安装多个操作系统;

    怎么分区?
        MBR:整个磁盘空间小于2TB容量,建议使用MBR分区格式;
            MBR: Master Boot Record,主引导记录,始于1982年;
                MBR其实也是一段数据,默认保存在磁盘的0磁道0扇区中;
                分为三部分:
                    446Bytes(字节):boot loader,引导加载程序;
                        Windows: NTLDR
                        Linux:LILO,GRUB(默认)
                    64Bytes(字节):分区表,partition table;每16Bytes为一段,表明一个分区的内容,因此,默认最多只有四个分区;
                        1.最多有四个主分区;编号分别为:1.2.3.4.
                        2.想要划分更多分区数量时,可以将任意一个主分区改为扩展分区,在扩展分区中建立逻辑分区;
                            逻辑分区的编号默认从5开始;不管前四个数字是否被占用;

                        注意:扩展分区可以没有,但最多只能有一个;
                   

                    2Byte:MBR结束标记,55AA(正常结束);



        GPT:如果超过2TB磁盘容量,建议使用GPT分区格式;      GUID  Partition table ,支持128主分区;


    Linux下常用的分区工具:
        fdisk:用于创建和管理MBR分区,对同一块磁盘,最多只能管理15个分区;
        gdisk:用于创建和管理GPT分区;


        注意:如果使用fdisk或gdisk命令对于一个已经有分区被挂载的磁盘的剩余空间再次进行分区,即便将分区的结果保存下来,也不会被内核立即识别;
                 想要让内核识别出此类新建分区方法:
                     1.重启计算机;
                     2.强制内核重读分区表  
                         partprobe命令  或  partx命令
                         在RHEL系或Centos系5|7:
                             partprobe   [device]   如省略设备名表示重读所有设备的分区表,强烈建议给出制定的磁盘设备名称;
                         在RHEL系或Centos系6|7:
                             partx  -a  [decice]


         fdisk分区工具
         fdisk - Linux分区表操作工具软件
         格式:
         fdisk  device
         fdisk  -l  [device]
         选项:
             -l:表示查看之意,如给出设备名称则查看制定设备的分区表,否则查看所有磁盘设备文件的分区表;

             fdisk device
            对于指定设备进行分区管理和操作;
            Command action
               d   delete a partition
               l   list known partition types
               m   print this menu
               n   add a new partition
               p   print the partition table
               q   quit without saving changes
               t   change a partition's system id
               w   write table to disk and exit


在fdisk交互式菜单模式中创建分区的过程:
    n --> p|e|l  -->  分区的起始扇区(柱面),直接回车使用默认值设置  -->  分区的结束扇区(柱面),也可以使用+# UNIT(单位),直接指定分区大小;




        parted命令:高级的分区工具,其操作结果实时生效;
        格式:
            parted [options] [device [command [options...]...]]
        示例:
            ~]# parted /dev/sda mkpart logical 103GB 105GB
            ~]# parted /dev/sda rm 8

    在通电开机状态下添加SCSI接口的磁盘至本服务器,要想使设备被内识别并创建出相应的设备文件,有下列方法:
        1.重启计算机;
        2.~]# echo "- - -" > /sys/class/scsi_host/host2/scan
            强制内核识别在通电状态下热插接的新SCSI接口的磁盘设备;