Linux系统的存储管理

Linux的存储管理node

 在linux的哲学思想中第一条,一切皆文件;因此对与物理磁盘的管理就是在系统中对文件的管理,即操做对应的设备文件便可;linux

 首先弄清楚机械硬盘的构造:微信

       track : 磁道
       sector: 扇区 ,512Byte(字节)如今所说的扇区,其实是平均值;
       cylinder:柱面,从磁道向全部盘片作投影
       patition:分区,分区就是基于柱面来划分的存储空间。
       head:磁头,每一个磁盘表面都有一个磁头;异步

 在linux中有专门的设备文件的存储目录——/devasync

     设备有两种类型:ide

               ①块设备:用于随机访问的设备,数据存储和交换的单位是块工具

               ②字符设备:用于线性访问的设备,数据的交换单位通常是字符oop

     在RHEL六、CentOS6开始全部的接口类型的硬盘设备统一命名为sd[a-z]ui

    wKioL1klkW3CYwTYAAAN7g1v1JY865.png

   (后面的数字表示磁盘的分区) spa

那么开始使用硬盘,要明白的是如何分区,如何建立文件系统(格式化)和如何挂载分区

    磁盘的物理组成

       ⒈圆形的盘片,主要用来记录数据

       ⒉机械手臂与机械手臂上的磁头,读写数据

       ⒊主轴马达,能够转动盘片,让机械手臂的磁头在盘片上读写数据

   盘片的物理组成

       ⒈扇区(sector)为最小的存储单位,大小为512bytes

       ⒉第一个扇区很重要,须要经过它来读取整个磁盘的状态。里面有MBR(主引导记录)和DPT(分区表)

       ⒊MBR占446bytes,DPT占64byte,剩下两位是分区有效标志(55AA)

   MBR相关

   主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要做用是检查分区表是否正确而且在系统硬件完成自检之后引导具备激活标志的分区上的操做系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操做系统,并且硬盘引导程序也是能够改变的,从而实现多系统共存。

   分区表相关

     ⒈64bytes的分区表最多分出4个区,成为主分区或者扩展分区

     ⒉扩展分区最多只能有一个

     ⒊扩展分区能够再划分出逻辑分区

     ⒋能够被格式化的只有主分区和逻辑分区,扩展分区不能够被格式化

     ⒌逻辑分区的数量上线根据不一样的操做系统和硬盘格式而不一样,linux中IDE硬盘最多划分59个,SATA最多划分11个(都是从5号开始)

              按照每一个扇区512bytes来算,一个分区的最大容量是2TB

      对于开机状态下上插上SCSI接口的磁盘强制内核识别的方法:

            echo "---" &> /sys/class/scsi_host/host2/scan

 Ⅰ、如何分区

    一般分区使用的工具为fdisk,gdisk

    注:若是使用fdisk或gdisk命令对于已经有分区并挂载的磁盘的剩余空间进行再次分区,分区的信息即使是保存了,也不会被内核从新读取;

     因此须要作如下操做就能从新读取:

        1.重启计算机;
        2.partprobe命令或者partx命令,强制内核重读分区表;
             CentOS5/7:partprobe -a [device] 若是省略了设备名,则表示重读全部磁盘的分区表
             CentOS6/7:partx -a [device]
                 kpartx -af [device(=设备名)]

 

    fdisk的使用:

        fdisk子命令:
            d  删除分区
             l  列表已知的分区类型
            q  不保存退出编辑
            p  打印分区表

            n  建立新分区
               e  扩展分区
               p  主分区
               l  逻辑分区
            m  显示帮助菜单
            t  修改分区的系统标识
            w  保存修改并保存

 Ⅱ、建立文件系统

        对于不一样的发行版的linux,都有其默认的文件系统选择;
          RHEL、CentOS
           5:ext3
           6:ext4
           7:xfs

     建立文件系统工具

        mkfs命令:

             mkfs [options] [-t type] [fs-options] device [size]

    注意:
         1.不要使用磁盘设备名称和扩展分区设备名称做为mkfs命令的参数;
         若是使用磁盘设备做为mkfs的参数,全部的分区都将被删除
         若是使用扩展分区做为mkfs的参数,全部的逻辑分区都将被删除
         2.可以做为mkfs命令参数的设备,是主分区设备和逻辑分区设备;

    1.若是只计划建立ext系列文件系统的话,能够使用mke2fs命令:
        mke2fs
          mke2fs - create an ext2/ext3/ext4 filesystem
          经常使用选项:
           -b block-size:在建立文件系统时,调整块大小;
           -i bytes-per-inode:指明inode与字节的比率;即:多少个字节建一个inode,默认值为16384;
           -I inode-size :直接指定inode大小
           -J :建立有日志功能的文件系统,就是ext3
           -N number-of-inodes:直接指名要给此文件系统建立的inode的数量;
           -m reserved-blocks-percentage:指定为超级用户root预留的磁盘空间的百分比;默认是5;
           -t fs-type:指定文件系统类型,ext2 ext3 ext4,默认是ext2
           -O [^]feature[,...]:(加^表示关闭 不加表示开启)关闭或开启文件系统的特性
           -L volume-label:为文件系统指定卷标

    2.若是只计划修改ext系列文件系统的卷标,能够使用e2label命令:
      e2label
      e2label - Change the label on an ext2/ext3/ext4 filesystem
      e2label device [ new-label ]

      注意: 若是不加卷标信息,表示查看指定设备的卷标;
             若是添加了倦鸟信息,表示修改指定设备的卷标;

    3.若是想要修改ext系列文件系统的属性,能够使用tune2fs命令:
      tune2fs
      tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems

    4.调整那些在ext2,3,4文件系统上的可修改的参数;
         经常使用选项:
          -j:将ext2文件系统修改成ext3
          -m reserved-blocks-percentage:修改成超级用户预留的磁盘空间百分比
          -o  [^]mount-options[,...]:修改文件系统默认的挂载选项
          -r reserved-blocks-count:修改成超级用户预留的磁盘空间的块的数量;
          -L  volume-name:修改文件系统的卷标
          -O [^]feature[,...]:修改文件系统的特性,将其关闭或启用;
          -l :显示超级块的内容 至关于dumpe2fs -h

    5.文件系统的检测修复工具:
     fsck
      -t fstype:指定要检测的文件系统类型;
      -a:无需交互自动修复全部问题
      -r:交互式修复问题

    6.ext系列文件系统专门的检测修复工具:
        e2fsck
         -y:在交互过程的全部的问题,都以“yes”回答;
         -f:强制检测修复;即便文件系统处于clean状态;

        blkid
          blkid - locate/print block device attributes
          blkid -L label:根据卷标进行查找
          blkid -U uuid:跟去UUID进行查找
        findfs
          findfs - find a filesystem by label or UUID
          findfs LABEL=label
          findfs UUID=uuid
     
   建立swap文件系统
     前提:分区类型必须是swap类型
       修改的方法是:在fdisk交互模式中,使用t命令将指定分区的类型修改成82便可

    mkswap
      mkswap - set up a Linux swap area
       -L LABEL:设置交互分区的卷标
       -f:强制执行

 Ⅲ、文件系统的挂载

      挂载用mount命令

     mount
         mount - mount a filesystem
         mount [-fnrsvw] [-t vfstype] [-o options] device dir

     经常使用选项:
       -r:readonly,以只读的方式挂载目标文件系统;(光盘)
       -w:read and write,以读写的方式挂载目标文件系统;
       -n:默认状况下,设备挂载或卸载的操做会同步更新到/etc/mtab中,若是在挂载时使用-n选项,表示咱们要禁用此特性,即使挂载成功,也不会更新到/etc/mtab中;
       -t vsftype:指明要挂载的设备上建立的文件系统类型;若是省略该选项,mount命令会经过blkid来判断要挂载的目标设备的文件系统类型;
       -L LABEL:挂载文件系统时,使用卷标代替设备名称
       -U UUID:挂载文件系统时,使用UUID代替设备名称;
       -a:mount -a:按照/etc/fstab文件中填写的设备进行自动挂载
       -o option:
         sync/nosync:同步/异步操做
         atime/noatime:文件或目录被读取访问时,是否更新访问时间戳;
         diratime/nodiratime:目录被读取访问时,是否更新访问时间戳;
         ro/rw:是以只读/读写的方式挂载文件系统
         dev/nodev:在此文件系统中是否容许建立设备文件;
         exec/noexec:在此文件系统中是否容许运行程序文件;
         auto/noauto:是否容许使用mount -a方式挂载/etc/fstab中的文件系统;
         user/nouser:是否容许普通用户挂载此文件系统;
         suid/nosuid:是否容许程序文件上的SUID和SGID特殊权限生效;
         relatime/norelatime:是否参考inode访问时间来修改其修改时间和改变时间
         remount:不经卸载实现从新挂载,能够应用新的挂载选项;
         acl:能够使文件系统支持facl功能;
         defaults:默认选项:包括:rw, suid, dev, exec, auto, nouser, async and relatime
         loop:使用环回设备;将镜像文件挂载到挂载点;
         defaults,ro,nosuid
       -B,--bind:将某个目录绑定至另外一个目录
         mout --bind|-B 源目录 目标目录


    查看挂载信息  mount df  /etc/mtab /proc/mounts

    卸载文件系统:
           umount mount_point|device               fuser能够查看谁在使用                 -km 将正在使用的用户kill掉

相关文章
相关标签/搜索