Linux系统管理----存储管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统管理----存储管理相关的知识,希望对你有一定的参考价值。

创建文件系统----分区格式化
    格式化
        低级格式化:磁盘初始化,磁道划分;
        高级格式化:创建或重建文件系统;按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元,称为块(Block);window中称为:簇
        划分块的标准:
            在Linux的文件系统中,主要的块划分标准是:每个块包括2^1或2^2或2^3个扇区;即:块大小可以是1024字节,2048字节,4096字节;

    注意:1.被划分出来的块,每一个块只能存放一个文件的内容,一个文件可以存储在多个块上;
              2.如果在某个分区中,要创建大量的小文件,就将块大小设置的小一些,反之,在某个分区中要创建的都是大文件,则将块设置的大一些;
              3.如果分区的空间较大,可以将块设置的大一些;

    FHS--文件系统的层级标准

对于数据的管理:
    1.平面分类管理:遍历数据
    2.空间分类管理(层次化):
        逻辑编址:创建文件系统实际上就是给分区进行存储空间的逻辑编址;
        特点:仅需要经过有限次且有效的查找即可定位到目标文件;


在一个分区中创建文件系统的步骤:
    1.首先,文件系统会将分区划分成大小相等的若干个数据块;
        元数据块:主要存放文件属性信息 包括:文件大小,权限,所有权,时间戳数据块指针(直接、间接、...)
            存放每个文件的元数据的固定的存储空间,称为index node,简称inode;
            在linux的文件系统中,每个inode大小一般是128字节;每个inode都有其对应的inode编号;
        数据块:存放文件中所包含的流式数据的内容;

        特殊文件:
            只占据元数据块中的inode,而不占据数据块;  包括两种:
             设备文件: block special ,  character special ;
             此类文件是将inode中的数据块指针换成了设备号来保存;
             符号连接文件: symbolic link
             此类文件是将inode中数据块指针换成了另一个文件的访问路径;

        随着磁盘空间越来越大,划分出来的快的数量也越来越多,管理难度越来越大;通过划分块组解决此问题;
            块组:
                每个块组中有独立的元数据块和数据块;
                存放数据的时候,以块组内数据优先选择,如果块组内的数据块数量不够,可以通过文件系用的存储策略来申请多个块组协同存储;
            超级块:
                主要定义了在整个分区中有多少个块组,以及每个块组的边界;
                为了防止超级块发生故障导致整个文件系统崩溃,文件系统会自动对超级块进行备份;
        为了防止数据不一致(传数据时断电等情况造成:inode等数据传输完成,数据部分没有传输完成),在文件系统中引入日志块的概念;
            日志块:对于数据的写入操作日志记录的块;
            数据不一致通常是由不洁关机、不洁断电导致;


 一个完整的Linux文件系统:
     超级块,inode,inode bitmap(位图),block bitmap(块位图),data block ,journal block(日志块)
            
查找文件的过程:
    目录:内容是文件名;
    每个文件名是文件特有的标识,每个文件名都对应一个inode;(通过inode和datablock之间来回寻找,最终指向原数据文件)
 

Linux支持的文件系统:
    位于内核空间中的文件系统驱动:
        ls  /usr/lib/modules/内核版本号/kernel
        文件系统可以是内核的一部分,也可以是内核的模块;

    位于用户空间中的文件系统管理程序:
        管理命令;

    Linux支持的文件系统:
        1.Linux专属的文件系统:(centos7之前默认文件系统)
            ext系列:ext、ext(2、3、4)
            ext4特性:单个分区最大50TB;
                             单个文件最大64EB *
                             可以在根分区上设置;
                             可以在启动分区上设置;
        2.xfs:
            最大分区500TB,...  (centos7后默认文件系统)
        3.reiserfs:
        4.btrfs:(GOOGLE研发)
        5.iso9660:光盘文件系统
        6.FAT:vfat(fat32)
        7.NTFS:(默认不支持,可以通过调整内核参数获取支持)
        8.网络文件系统: NFS、CIFS...
        9.集群文件系统:gfs2、ocfs2...
        10.分布式文件系统:
            内核级:ceph
            用户空间(应用级):mogilefs、moosefs...
        11.Unix的文件系统:ufs、FFS、JFS、zfs....
        12.伪文件系统:proc、sys、tmpfs、hugepagefs...
            并非管理磁盘数据的文件系统,而是管理内存数据的文件系统;

对于不同发行版本的Linux,都有默认使用的文件系统;
RHEL或Centos系列:5:ext3  6:ext4  7:xfs


管理文件系统:
    创建文件系统;
    使用文件系统(挂载文件系统);
    停止使用文件系统(卸载文件系统);
    文件系统的检测和修复;

    创建文件系统的用户空间的工具:
        mkfs命令
        创建一个文件系统
        mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]
        常用选项:
            -t : 选择文件系统类型
            mkfs -t ext4  /dev/sdb  ==    mkfs.ext4  /dev/sdb
            RHEL或Centos系列中,可以使用第二种方式等工具创建文件系统;(eg:mkfs.ext3    mkfs.xfs等)

注意:
    1.不要使用磁盘设备名称或扩展分区设备名称作为mkfs命令的参数;如果是用磁盘设备或扩展分区设备名称作为mkfs命令参数,则所有分区都会被删除;
    2.只有主分区和逻辑分区才能使用mkfs命令创建文件系统;
    3.如果要创建的目标文件系统是ext系列的文件系统,可以使用mke2fs命令;
        mke2fs - create an ext2/ext3/ext4 filesystem
        常用选项:
            -b:在创建文件系统时,指定每个块的大小;默认值为4096字节;调整时,只能写1024,2048,4096字节;
            -i:在创建文件系统时,指定inode与字节的比率;即:多少个字节创建一个inode,默认值16384字节;
            -j:创建有日志功能的文件系统,即:ext3及以上版本
            -L:在创建文件系统是,指定卷标;
            -m:在创建文件系统时,指定为管理员保留的磁盘空间的百分比;默认值:5(5%)
            -n:并不创建文件系统,而显示在创建文件系统时的过程;
            -N:在创建文件系统时,直接指明创建多少个inode;
            -O [^]feature[,...]:在创建文件系统时,关闭或开启文件系统特性;
            -t:在创建文件系统时,指定文件系统类型;

    修改ext系列文件系统的卷标:
        e2label命令:
        e2label - Change the label on an ext2/ext3/ext4 filesystem
        e2label device [ new-label ]
         如果不加new-label参数,则是查看指定设备的卷标;如果添加参数则是修改其卷标;
    修改ext系列文件系统的属性:
        tune2fs命令:
        tune2fs - adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems(在ext2/3/4文件系统上,调整那些可以被调整的参数)
        常用选项:
            -l:显示超级块的内容;
            -j:将ext2修改为ext3文件系统(加入日志功能)
            -m:调整文件系统中预留空间的百分比;
            -r:调整文件系统中预留的磁盘空间的块数;
            -L:修改卷标;
            -O [^]feature[,...]:修改文件系统特性是否开启;

    文件系统的检测和修复工具:
        fsck命令
        检查并修复Linux文件系统
         fsck [ -ar] [ -t fstype ] [filesys ... ]
         常用选项:
             -t:指定要检测的文件系统类型;
             -a:无需交互,自动修复检测到的所有问题;
             -r:交互式的修复检测到的问题;

        ext系列文件系统专用的检测修复工具:
            e2fsck命令
            check a Linux ext2/ext3/ext4 file system

            常用选项:
                -y:在交互式过程中所有的问题都已"yes"来回答;
                -f:强制检测并修复;即使文件系统处于clean状态也修复;

            blkid命令
            locate/print block device attributes
            常用选项:
                -L label:根据制定的卷标进行块设备查找定位;
                -u UUID:根据指定的UUID进行块设备查找定位;

            findfs命令
            find a filesystem by label or UUID
            findfs  [LABEL=<label>] [UUID=<uuid>]



swap文件系统:(可称为交换分区,其作用是在内存运转不够或出现问题时,将部分等待执行的文件导入交换分区中,已达到释放内存的作用,提高运转效率)
    前提:分区类型必须是swap类型,即:分区的系统ID必须是82;
        修改方法:在fdisk的交互模式中,使用t命令将指定分区类型修改为82即可;

    创建swap文件系统:
        mkswap命令
        建立一个linux交换区
        常用选项:
        -f:强制执行;
        -L LABEL:设置交换分区卷标;
        -U UUID:指定交换分区UUID;


利用一个大文件创建交换分区:
 示例:
            ~]# dd   if=/dev/zero   of=/tmp/swapfile   bs=1024   count=1024000
            ~]# mkswap   /tmp/swapfile


使用文件系统----挂载
    挂载:
        对于Linux系统来说,文件系统只能由唯一的一个原初访问入口,此访问入口被称为“根文件系统”,其他所有的文件系统,都必须通过某个特定的方式关联至根文件系统或根文件系统的子目录中,而此关联过程被称为挂载;用于关联根文件系统和其他文件系统的目录被称为挂载点;

    挂载点:
        mount point ,通常是一个目录,该目录在成为挂载点之后,就是其他文件系统的访问入口;如:/boot
        要求:
            1.作为挂载点的目录必须事先存在;
            2.作为挂载点的目录应该是没有被使用或不能被其他进程所占用的目录;换言之,必须是空闲的目录;
            3.作为挂载点的目录,一旦挂载其他文件系统,则失去原文件系统中的特性;简单说,如果一个目录中有文件名,一旦挂在了其他文件系统,则原来的文件名不可见,这样的目录中新的内容是新文件系统中的文件名;这个过程会一直持续到新文件系统被卸载;

    完成挂载操作:
        mount命令
            mount a filesystem
        格式:
            mount [-lhV]
            mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
            mount [-fnrsvw] [-o option[,option]...]  device|dir
            mount [-fnrsvw] [-t vfstype] [-o options] device dir
        常用选项:
            -r:以只读方式挂载目标文件系统;(通常用于光盘挂载)
            -w:以可读可写的方式挂载文件系统;通常是默认的;
            -n:默认情况下,所有挂载的块设备的操作,都会自动被记录在/etc/mtab文件中,如果使用了-n选项,则表示即便挂载成功也不会将挂载信息记录在此文件中;
            -t:在挂载文件系统时,指明目标文件系统的类型;如果省略该选项,mount命令会通过blkid命令判断要挂载的目标文件系统的类型;
            -L:通过指定的文件系统的卷标来挂载目标文件系统;
            -U:通过指定的文件系统的UUID来挂载目标文件系统;(保证所挂在文件系统的唯一性)
            -a:根据/etc/fstab文件中指定的文件系统进行自动挂载;
            -o:在挂载目标文件系统时,可以调整挂载参数选项;
                FILESYSTEM INDEPENDENT MOUNT OPTIONS
                    sync/async:同步/异步挂载选项:(是否立即将修改的内容同步到磁盘:立即同步将大大消耗IO性能)
                    atime/noatime:文件被访问时是否更新访问时间戳;(对于访问量过大的文件不适于atime)
                    diratime/nodiratime:目录被访问时是否更新访问时间戳;(对于访问量过大的目录不适于diratime)
                    ro/rw:是以只读/可读可写方式挂载文件系统;相当于-r/-w选项的功能;
                    dev/nodev:在此文件系统中是否允许创建设备文件;
                    exec/noexec:在此文件系统中是否允许运行程序文件(包括各种二进制文件和脚本文件);
                    auto/noauto:在挂载此文件系统时,是否能够使用-a选项进行挂载;
                    user/nouser:是否允许普通用户挂载此文件系统;
                    suid/nosuid:在此文件系统中是否允许程序文件上有suid和sgid这样的特殊权限生效;
                    relatime/norelatime:在此文件系统中是否参考inode访问时间来修改时间戳和改变时间戳;
                    remount:对于目标文件系统无需卸载,就可以应用新的挂载选项;
                    acl:(只在ext系列文件系统或xfs文件系统中使用)可以使用文件系统的facl功能;
                    defaults:默认选项,其中包括rw,suid,dev,exec,auto,nouser,async。
                    loop:使用环回设备;将镜像文件当作文件系统挂载至指定的挂载点;
            -B:将某个已经挂载的文件系统绑定至另一个目录;
                eg:mount -B|--bind  mount_point1  mount_point2

        eg:
            mount /dev/sdb1 /mnt/sdb1
            mount  -o  remount,ro  /dev/sdb1

    卸载已经挂载的文件系统:
        umount命令
            umount -a   卸载当前已经挂载的文件系统中所有可卸载的文件系统;
            unmount  {dir|device}  通过指定挂载点或设备名称,卸载指定设备;

    挂载光盘:
        在虚拟机中,需要保证光盘镜像文件被放入虚拟机光驱,并保证虚拟机的光驱处于“已连接”状态;需要事先创建挂载点(/mnt/cdrom)
        mount -r  /dev/sr0  /mnt/cdrom


    挂载交换分区:
        swapon命令
    卸载交换分区:
        swapoff命令

        选项
        -a:自动挂载/卸载/etc/fstab文件中被正确定义的所有交换分区;




/etc/fstab文件的格式:(面试)
    共6个字段,默认使用空白字符(制表符)作为字段分隔符;
    六个字段含义为:
    1.要挂载的设备或文件系统名称,也可以是卷标或UUID;
        如果使用卷标必须使用: LABEL="label"
        如果使用UUID必须使用: UUID="uuid"
    2.挂载点;
        swap设备或文件无需挂载点,在此字段写swap即可;
    3.文件系统类型
    4.默认的文件系统挂载选项;(如需添加默认选项用“,“分隔 ; eg:defaults,ro,...)
    5.转储频率
        使用dump命令自动备份分区数据的频率;(如果是0,表示不备份,如果是#,表示每#天备份一次)
    6.自检次序:
        0:不进行自检
        1:优先自检(通常仅设置在根文件系统上)
        2:次级自检
        ...
        9:最低优先级自检;
    
/etc/fstab文件作用:
    在系统启动过程中会自动挂载该文件中所有被正确列出的文件系统;

以上是关于Linux系统管理----存储管理的主要内容,如果未能解决你的问题,请参考以下文章

linux 系统管理之存储管理1

Linux系统管理----存储管理

Linux系统 存储

linux系统管理之存储管理

Linux系统管理----存储管理

文件系统和本地存储管理 1