linux磁盘管理

    现在市面上硬盘主要为两种:机械式硬盘  和固态硬盘(SSD)

机械式硬盘

同心圆划分成多个track磁道,每个磁道上有一定数量的扇区(secotr),每个盘面上编号相同的磁道组成了柱面(cylinder)

 

每个扇区的大小为512bytes

     MBR模式下0磁道上0扇区为master boot record主引导扇区

           前446bytes:存放了bootloafer引导加载器,启动磁盘中的操作系统

           接着的64bytes:存放磁盘中的文件系统分区表,每16bytes标识一个分区,所以MBR最多只能认4个分区,若超过4个分区需使用扩展分区,在扩展分区中标注若干个逻辑分区。

              剩余的2bytes用于结束标志 55 AA

 

识别硬盘在linux系统中的文件:/dev/sd【a-z】

        不同的硬盘最后标注的字母不同  /dev/sda  /dev/sdb

        同一硬盘上的不同分区 最后标注的数字不同:/dev/sda1    /dev/sda2

                   1-4用于标注主或扩展分区

                   5以上用于标注逻辑分区(由扩展分区中划分的)

 

设备文件是一种特殊的文件 分为块设备文件和字符设备文件 

               块设备文件:存取单位为数据块,随机存取

               字符设备文件:存取单位为字符,线性存取

分区:分割存储空间为多个小空间,每个空间可以独立使用文件系统      
         fdisk,parted, sfdisk      
        分区工具:fdisk      
            格式 fdisl 【option】硬盘文件名      
                管理子命令:      
                    p:显示      
                    n:创建      
                    d:删除      
                    t:修改分区ID      
                    l:列出所有支持的分区类型ID      
                    w:保存并退出      
                    q:放弃保存并退出      
                    m:获得帮助

磁盘管理和文件系统管理_master

磁盘管理和文件系统管理_linux_02

 

分区大小可以用数值和单位确定,不必计算柱面

磁盘管理和文件系统管理_record_03

 磁盘管理和文件系统管理_linux_04      
                创建完成后,查看内核是否已经识别新的分区      
                cat /proc/partitions      
 磁盘管理和文件系统管理_record_05      
                有三个命令可以让内核读取磁盘分区表:      
                    CentOS 5: partprobe [DEVICE]

                     centos6,7      
                        partx      
                            partx DEVICE 显示设备的分区      
                            partx -a DEVICE 向内核添加分区信息,已有的重复提交会报错      
                            partx -a -n M:N DEVICE向内核添加指定的分区信息,避免添加已有的。

                         kpartx命令:      
                             kpartx -af DEVICE

linux文件系统管理      

        文件系统:编辑地址有自己的索引,便于计算机管理。      
       
            linux使用vmfs(虚拟文件系统)统一各类文件系统的接口      
           
            linux:ext2,ext3,ext4,reiserfs,xfs,btefs,swap      
            光盘:iso9660      
            windows:fat32,ntfs      
            unix:ffs,ufs,jfs,jfs2      
           
            (1)日志型文件系统      
                    ext3      
                 在磁盘空间专门开辟一个日志区放元数据,带元数据所对应的数据库写完后将元数据写到元数据区。这样当在写数据时,发生错误需要自检时可以直接在日志区寻找发生错误的元数据,而不需要遍历所有数据区      
                
            (2)swap交换      
           
                每个进程都自认为物理内存都为自己所用,一旦进程使用过大内存造成内存耗尽。这时候需要将内存中暂时不使用的数据写到磁盘的swap分区中,以腾出物理内存空间。待需要这批数据时再写回物理内存。      
           
       
        创建文件系统      
        在分区上执行格式化(高级格式化)      
            要使用某种文件系统,满足两个条件:      
                内核中:支持此种文件系统      
                用户空间:有文件系统管理工具


        创建工具:mkfs (make filesystem)      
            mkfs -t type DEVICE

                mkfs.type DEVICE

            ext系列文件系统的专用管理工具:      
              

                mke2fs [OPTION]... DEVICE      
                               -t     {ext2|ext3|ext4}      
                               -b {1024|2048|4096}      
                               -L 'LABEL'      
                               -j: mke2fs -t ext3      
                               -i #:为inode指定字节数

                               -N #:为文件系统分配多少个inode      
                               -m #: 预留磁盘空间占据多大百分比的空间为后期管理使用;      
                               -O FEATURE[,...] 开启某些特性      
                               -O ^FEATURE:关闭此特性

磁盘管理和文件系统管理_linux_06

            blkid命令:查看分区信息      
                blkid DEVICE      
                    LABEL, UUID, TYPE

磁盘管理和文件系统管理_同心圆_07

文件系统属性查看及调整工具      
    e2label:e2lable DEVICE [LABEL]      
        管理设备或者分区的卷标      
        带卷标名则为设定 不带卷标名则是查看功能

磁盘管理和文件系统管理_同心圆_08      
    
    tune2fs      
        显示ext系列文件系统的属性,或调整其属性

    格式:

    tune2fs [-c max_mounts_count] [-e errors_behavior] [-g group]    
    [-i interval[d|m|w]] [-j] [-J journal_options] [-l]      
    [-m reserved_blocks_percent] [-o [^]mount_options[,...]]      
    [-r reserved_blocks_count] [-u user] [-C mount_count] [-L volume_label]      
    [-M last_mounted_dir] [-O [^]feature[,...]]      
    [-E extended-option[,...]] [-T last_check_time] [-U UUID]      
    [ -I new_inode_size ] device

 

        -l 显示超级块中的信息:显示整个文件的属性及布局等相关信息      
        -L 修改卷标名字      
        -m # :调整预留给管理员的后期管理空间的百分比      
        -j:ext2的文件系统升级为ext3且不影响原有数据 
       -O [^] feature[,...]:  调整分区特性

       -o [^] mount-options[,...]:  设定其默认挂载选项

                    async: 异步I/O

                    sync: 同步I/O

                    noatime/atime: 是否更新访问时间戳,建议noatime

                    auto/noauto: 是否能够被mount -a选项自动挂载;

                    diratime/nodiratime: 是否更新目录的访问时间戳;

                    exec/noexec:是否允许执行其中的二进制程序;

                    _netdev: 在网络设备启用之前禁止尝试挂载网络设备

                    remount: 重新挂载

                    acl: 启用facl  文件访问控制列表

                    ro:挂载为只读

                    rw:挂载为可读写

                    user/nouser: 是否允许普通用户挂载此设备

       磁盘管理和文件系统管理_同心圆_09

      磁盘管理和文件系统管理_linux_10

      磁盘管理和文件系统管理_master_11

    dump2fs:      
        显示ext系列整个文件系统的布局结构及超级块信息      
        -h:仅显示超级块信息

文件系统检测:    
        fsck: Filesystem check      
            fsck -t type      
            fsck.type      
                -a: 自动修复错误      
                -r: 交互式修复错误      
                -f: 强制检测

        e2fsck:ext系列文件系统专用的检测修复工具;    
            -y: 自动回答为“yes”      
            -f:force

文件系统的挂载和使用      
    kernel --》 rootfs(分区)      
   
        拥有:bin,sbin,etc,lib,lib64,dev,tmp,proc,sys)      
       
        内核启动后便能找到跟文件所在的分区/, 其他分区的若要使用必须直接或间接的挂载到/根文件系统下的目录      
       
        将额外文件系统与根文件系统目录下的现存的目录相关联,使该目录成为额外文件系统的访问入口。这样的行为成为挂载      
       
        卸载是取消文件系统和根文件下目录的关联      
       
        挂载点如果有文件,则挂载后其内部原有的文件会被隐藏卸载后重新出现,建议使用空文件      
       
        挂载方法:      
        mount:通过读取/etc/mtab文件来显示当前文件系统所有已经挂载的设备      
        mount -a :自动挂载/etc/fstab文件中的支持自动挂载的文件系统      
        磁盘管理和文件系统管理_master_12      
      

        mount [options] [-o options] DEVICE MOUNT_POINT    
            [options]:命令选项      
            [-o options]:挂载选项

        DEVICE:要挂载的设备 
            1.设备文件 /dev/sda5      
            2.卷标: -L ‘LABEL’      
            3.UUID: -U 'UUID'      
            4.文件系统名称      
        MOUNT_POINT

           多为文件目录    
        
        常用选项:      
            -t  type :文件系统的类型      
            -r 以只读方式挂载      
            -w 以读写的方式挂载      
            -n 挂载并更新/etc/mtab      
            -B绑定目录至另一个目录上      
            -o 挂载选项:      
                      async:异步模式      
                      sync:同步模式任何数据在内存处理完后马上写回磁盘      
                      atime/noatime:是否更新访问时间戳 
                      auto/noauto:是否允许此设备被自动更新      
                      exec/noexec:是否允许执行此文件系统上的应用程序      
                      dev/nodev:是否支持在此设备上使用设备文件;      
                      suid/nosuid:是否允许设置suid权限      
                      remount:重新挂载      
                      ro:只读权限      
                      rw:读写权限 
                      user/nouser: 是否允许普通挂载此设备;      
                      acl:是否支持此设备上使用facl;      
                      defaults:rw, suid, dev, exec, auto, nouser, and async

          umount:卸载命令    
            # umount DEVICE    
            # umount MOUNT_POINT

            查看正在访问指定挂载点的进程:    
                # fuser -v MOUNT_POINT

            终止所有正在访问指定的挂载点的进程:    
                # fuser -km MOUNT_POINT

 

    交换分区:

        free命令:    
            查看memory和swap的使用状态    
                -m: 以MB为单位    
                -g: 以GB为单位

        mkswap:创建交换分区

            mkswap [option] DEVICE    
                -L 'LABEL'   
               
        swapon:启用交换分区    
            swapon [option] [DEVICE]    
                -a: 激活所有交换分区    
                -p PRIORITY: 设定其优先级;

        swapoff:禁用交换分区    
            swapoff [option] [DEVICE]

    文件系统等空间占用信息的查看工个:    
        df: disk free  检查文件系统的磁盘空间占用情况

            -h: human-readable    
            -i: inode数量    
            -P: 以Posix兼容的格式输出    
        du: disk usage  查看文件或目录所占的大小    
            -h: human-readable    
            -s: summary


    文件系统相关挂载配置文件:/etc/fstab

        每行定义一个文件系统;

        要挂载的设备或伪文件系统      挂载点         文件系统类型     挂载选项     转储频率      自检次序

            要挂载的设备:    
                设备文件、LABEL=、UUID=、伪文件系统名称

            挂载选项:    
                defaults

            转储频率:    
                0: 不转储    
                1: 每天转储    
                2: 每隔一天转储

            自检次序:    
                0:不自检    
                1:首先自检,通常只有/才为1    
                2:    
                ...

    文件系统上的链接文件:    
        硬链接:    
            两个路径指向同一个inode

            不能对目录进行;    
            不能跨分区进行    
            指向同一个inode的多个不同路径; 创建文件的硬链接会增加inode的引用计数;删除硬链接仅是删除其一个访问路径,只到最后一个路径被删除;

        符号链接:    
            链接文件的数据指向另一个文件路径;

            可以对目录进行;    
            可以跨分区;    
            指向的是另一个文件路径;而非inode;    
                对文件创建符号链接不会增加其引用计数;删除原文件,符号链接文件也将无法;

        ln [-s] SRC DEST    
            -s:symbolic link    
            -v:verbose    


练习:创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录

1.先创建10G的文件系统

磁盘管理和文件系统管理_master_13

磁盘管理和文件系统管理_linux_14

发现内核已经自己识别到该分为文件系统

磁盘管理和文件系统管理_master_15

2.格式化其类型为ext4

磁盘管理和文件系统管理_record_16

3.让系统内核识别该分区并加入为开机会自动挂载配置的文件/etc/fstab中

磁盘管理和文件系统管理_record_17