一、创建文件系统——分区的格式化

    格式化:

      低级格式化:划分磁道

      高级格式化:创建文件系统,按照某种特定的标准,将整个分区划分为大小相同的若干小的逻辑编址单元,每个这样的单元,称为块(Block)

        划分块的标准:在Linux的文件系统中,主要的块划分标准就是:每个块包括2^1或2^2或2^3个扇区;即块大小可以是:1024Byte,2048Byte或者4096Byte;

    

二、创建文件系统的步骤:

    1.将分区划分成大小相等的若干块:

        元数据块:存放文件的属性,如大小、权限、时间戳、数据块指针,其存储空间称为inode,每个inode大小是128byte,每个inode有其对应的inode编号

        数据块:存放文件包含的流式数据内容

        特殊文件:只占元数据块中的inode,如设备文件和符号链接文件


    2.随着磁盘空间越来越大,划分出来的块的数量越来越多,管理难度越来越大;通过划分块组来解决此问题:

块组:

  每个块组中有独立的元数据块和数据块;

  存放数据的时候,以块组内的数据优先选择,如果块组内的数据块数量不够,可以通过文件系统的存储策略来申请多个块组协同存储;


超级块:

  主要定义了在整个分区中有多少个块组,及每个块组的边界;

  为了防止超级块发生故障导致整个文件系统崩溃,文件系统会自动对超级块进行备份;

   

    3.为了防止数据不一致,在文件系统中引入日志块的概念

        日志块:对于数据的写入操作做日志记录


三、linux支持的文件系统:

    1.Linux专属文件系统:

ext系列:ext、ext2、ext3、ext4

ext4特性:

  单个分区最大50TB;

  单个文件最大64EB;

  可以在根分区上设置;

  可以在启动分区上设置;

    2.xfs:最大分区500TB, ...

    3.reiserfs:

    4.btrfs:技术预览版

    5.ISO9660:光盘文件系统

    6.FAT:vfat

    7.NTFS:默认不支持,可以通过调整内核参数以获得支持;

    8.网络文件系统:NFS、CIFS

    9.集群文件系统:gfs2、ocfs2

    10.分布式文件系统:

        内核级:ceph

用户空间(应用级):mogilefs、moosefs、glusterfs

    11.Unix的文件系统:ufs、FFS、JFS、zfs

    12.伪文件系统:proc、sys、tmpfs、hugepagefs;

并非管理磁盘数据的文件系统,而是管理内存数据的文件系统;


四、创建文件系统的工具mkfs

    格式:mkfs [options] [-t type] [fs-options] device [size]

    示例:

        mkfs -t ext4 /dev/sdb1

    创建ext4文件系统时可以直接使用

        mkfs.ext4 /dev/sdb1


    注意:      

        1.不要使用磁盘设备名称作或扩展分区设备名称作为mkfs命令的参数;

    如果使用磁盘设备名称作为mkfs命令的参数,则所有分区都将被删除;

    如果使用扩展分区设备作为mkfs命令的参数,则所有的逻辑分区都将被删除;

        2.只有主分区和逻辑分区才能使用mkfs命令创建文件系统;


    如果要创建的目标文件系统是ext系列文件系统,那么可以使用mke2fs命令;

        mke2fs:

          mke2fs - create an ext2/ext3/ext4 filesystem

  常用选项:

            -b block-size:在创建文件系统时,指定每个块的大小;默认值是4096,单位是字节;调整时,只能写1024,2048及4096;

            -i bytes-per-inode:在创建文件系统时,指定inode与字节的比率;即:多少个字节创建一个inode,默认值是16384;

            -j:创建有日志功能的文件系统,即:ext3;

            -L new-volume-label:在创建文件系统时,指定卷标;

            -m reserved-blocks-percentage:在创建文件系统时,指定为管理员保留的磁盘空间的百分比;默认值是5;

            -n:并非真正创建文件系统,而是显示在创建文件系统时所做的操作;

            -N number-of-inodes:在创建文件系统时,直接指明在此文件系统中创建的inode的数量;

            -O [^]feature[,...]:在创建文件系统时,关闭或开启文件系统特性;

            -t fs-type:在创建文件系统时,指定文件系统类型;

           

五、修改ext系列文件系统的卷标:

    e2label命令

        格式:e2label device [ new-label ]

        若不加new-label参数,则是查看指定设备的卷标


六、文件系统的检测和修复工具:

    1.fsck

        格式:fsck [-ar] [-t fstab] [filesystem]

    常用选项:

        -t fstype:指定要检测的文件系统的文件系统类型

        -a:无需交互,自动修复检测到的问题

        -r:交互式修复

    

    2.ext系列文件系统专用修复工具e2fsck

        格式:e2fsck [-y] [-f] device

    常用选项:

        -y:交互式过程中所有问题都以"yes"回答

        -f:强制检测并修复

     

七、文件系统的查询工具:

    1.blkid:

    常用选项:

        -L label:根据指定的卷标进行块设备查找定位

        -U UUID:根据指定的UUID进行块设备的查找定位

    

    2.findfs:

        格式:findfs [LABEL=


八、swap分区系统

    修改为swap分区系统的方法:在fdisk的交互模式中,使用t命令将指定的分区类型修改为82即可;


九、文件系统的挂载:

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

    

    挂载点:通常是一个目录,该目录在成为挂载点之后,就是其他文件系统的访问入口;如:/boot

      要求:

1.作为挂载点的目录必须事先存在;

2.作为挂载点的目录应该是没有被使用或不能被其他进程占用的目录,换言之,必须是空闲的目录;

3.作为挂载点的目录,一旦挂载其他文件系统,则失去原文件系统中的特性;简单说,如果一个目录中有文件名,一旦挂载了其他文件系统,则原来的文件名则不可见,这样的目录中的新的内容是新文件系统中的文件名;这个过程会一直持续到新文件系统被卸载;


    1.挂载文件系统使用mount命令

        格式: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, --read-only:以只读方式挂载目标文件系统;通常用于光盘挂载;

-w, --rw, --read-write:以可读可写的方式挂载目标文件系统;通常是默认的

-n, --no-mtab:默认情况下,所有挂载块设备的操作都会被自动记录在/etc/mtab文件中,如果使用了-n, --no-mtab选项,则表示即便挂载成功,也不会将挂载信息记录在/etc/mtab文件中

-t, --types vfstype:在挂载文件系统时指明目标文件系统的类型;如果省略该选项,mount命令会通过blkid命令来判断要挂载的目标文件系统的类型;

-L, --label label:通过指定的文件系统的卷标来挂载目标文件系统;

-U, --uuid uuid:通过指定的文件系统的UUID挂载目标文件系统;

-a, --all:根据/etc/fstab文件中指定的文件系统进行自动挂载;

-o, --options opts:在挂载目标文件系统时,可以调整挂载参数选项;

    loop:使用环回设备,将镜像文件当做文件系统挂载至指定的挂载点;

    -B, --bind:将某个已经挂载的文件系统绑定至另一个挂载点;

示例:# mount -B|--bind mount_point1 mount_point2


    示例:

        mount /dev/sdb1 /mnt/sdb1

        mount -o remount,ro /mnt/sdb1


    2.卸载已经挂载的文件系统:umount命令

umount -a

    卸载当前已经挂载的文件系统中的所有可卸载的文件系统;

umount {dir|device}...

    通过指定挂载点或设备文件名称,卸载指定设备;


    3.挂载光盘:

        在虚拟机中,需要保证光盘镜像文件被放入虚拟机的光驱,并且保证虚拟机的光驱处于"已连接"的状态;需要实现创建挂载点(/mnt/cdrom);

        mount -r /dev/sr0 /mnt/cdrom


    4.挂载/卸载交换分区:

        swapon/swapoff


十、/etc/fstab文件

    在系统启动过程中,会自动挂载该文件所有被正确列出的文件系统

    

    共六个字段:

        1.要挂载的设备或文件系统名称,也可以是卷标或UUID;

    如果使用卷标必须使用:LABEL="label"

    如果使用UUID必须使用:UUID="uuid"

2.挂载点:

    swap设备或文件无需挂载点,在此字段写swap即可;

        3.文件系统类型:

        4.默认的文件系统挂载选项:想要指定多个选项时,使用逗号分隔的列表;

    defaults,ro,sync

        5.转储频率:

    使用dump命令自动备份分区数据的频率;

0:表示不备份

1:每天备份一次

2:每两天备份一次,即:每隔一天备份一次;

...

        6.自检次序:

    0:不自检;

    1:优先自检,通常仅设置在根文件系统上;

    2:次级自检;

    ...

    9:最低优先级自检;