zoukankan      html  css  js  c++  java
  • linux磁盘分区、文件系统格式化、挂载与卸载

    磁盘管理

    块设备:block,存取单位"块",磁盘

    设备文件:关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信

    设备号码
      主设备号:major number   次设备号:minor number
    brw-rw----. 1 root disk      8,   1 Dec  5 09:19 sda1
    brw-rw----. 1 root disk      8,   2 Dec  5 09:19 sda2  

    硬盘接口类型:

    并口:
        IDE: 133MB/s  :硬盘接口速率
        SCSI:640MB/s
    串口:
        SATA:6Gb/s
        SAS:6Gb/s
        USB:480MB/s

    磁盘设备的设备文件命名:

    IDE: /dev/hd
    SCSI,SATA,SAS,USB:/dev/sd
      不同设备:a-z
        /dev/sda,/dev/sdb
      同一个设备上的不同分区:1,2...
        /dev/sda1,/dev/sda2...

     磁盘的组成

    磁道:track
    扇区:sector
    柱面:cylinder
    第0磁道0扇区:512bytes
        446bytes:bootloader
        64bytes:分区表
        2bytes:用于校验:55AA
    
    4个主分区
        3个主分区+1个扩展分区(N个逻辑分区)
            

    分区管理工具:fdisk,parted,sfdisk,gdisk

    fdisk:对一块硬盘来讲,最多只能管理15个分区

    fdisk -l    :查看所有的磁盘分区情况
    fdisk device    :对某个磁盘进行分区
      :p  显示磁盘分区情况
      :n  创建磁盘分区
      :d  删除磁盘分区
      :w  保存退出
      :q  不保存直接退出
      :l  列表显示所有分区id
      :t  调整分区id
      :m  获取帮助

    分区完后,查看系统识别到的磁盘分区:

    cat /proc/partitions

    如果系统没有识别到,那就通知内核重新读取硬盘分区表:

    partx [OPTION] device        
        -a:识别所有的磁盘分区
        -n m:n 识别指定的几个磁盘分区
    
    kpartx [OPTION] device
        -f:强制识别分区
    
    partprobe [device]

    分区完之后,就需要进行文件系统格式化

    常见的文件系统有:

    linux文件系统:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
        swap:交换分区
        光盘:iso9660
    windows:fat32,ntfs
    unix:FFS,UFS,JFS2
    网络文件系统:NFS,CIFS
    集群文件:GFS2,OCFS2
    分布式文件系统:ceph
        moosefs,mogilefs,GlusterFS,lustre
    
    根据其是否支持”jounal“功能:
        日志型文件系统:ext3,ext4
        非日志型文件系统:ext2,vfat

    文件系统的组成部分:

    内核中的模块:ext4,xfs,vfat
    用户空间的管理工具:mkfs.ext2,mkfs.xfs,mkfs,vfat

    linux的虚拟文件系统:VFS

    创建文件系统相关命令:

    mkfs命令
        1.mkfs.FS_TYPE /dev/DEVICE
            mkfs.ext2
            mkfs.ext4
            mkfs.btrfs
            ...
      2.mkfs -t FS_TYPE /dev/DEVICE
        -L 'LABEL':设定卷标
    mke2fs:ext系列文件系统专用管理工具
        -t {ext2|ext3|ext4}
        -b {1024|2048|4096}
        -L '卷标'
        -j:相当于-t ext3
            mkfs.ext3=mkfs -t ext3=mke2fs -t ext2 -j = mke2fs -t ext3
        -i #:为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
        -N #:为数据空间创建多少个inode
        -m #:为管理人员预留的空间占据百分比
        -O FEATURE[,...]:启用指定特性
            -O ^FEATURE:关闭指定特性
     mkswap [OPTION] DEVICE  #创建交换分区
        -L 'LABEL'
     前提:调整其分区id为82

    其他常用工具:

    blkid:块设备属性信息查看
        blkid [OPTION] [DEVICE]
            -U UUID:根据指定的UUID来查找相应的设备
            -L LABEL:根据指定的LABEL来查找对一个的设备
    
    e2label:管理ext系列文件系统卷标
        e2label DEVICE [LABEL]

    tune2fs:重新设定ext系列文件系统可调整参数的值
      -l:查看超级块信息 supper block
      -L 'LABEL':修改卷标
      -m #:修改预留给管理员的空间百分比
      -j:将ext2升级为ext3
      -O:文件系统属性开启或禁用
      -o:调整文件系统的默认挂载选项
      -U UUID:修改UUID号

    dumpefs  //不带参数默认查看块组信息
      -h:查看超级块信息
    文件系统检测:
    fsck.FS_TYPE
      fsck -t FS_TYPE
        -a :自动修复错误
        -r  :交互式修复错误
     NOTE:FS_TYPE一定要与分区上已有文件类型相同

    e2fsck:ext系列文件专用的检测修复工具
      -y:自动回答yes
      -f:强制修复

    文件系统格式化之后,还需要挂载才能使用

    挂载:
        将额外的文件系统与根文件系统上现行某目录建立起关联关系,进而使得此目录为其他文件的访问入口的行为称之为挂载
    卸载:
        解除关系关系的过程称之为卸载

    挂载与卸载相关命令

    挂载:mount
    卸载:umount
    注意点:挂载点下原文件在挂载完成后会被临时隐藏
    挂载方法:mount DEVICE MOUNT_POINT
    mount  [常用OPTION] [-o OPTION] device  dir
      device:指明要挂载的设备
        1.设备文件:例如:/dev/sda5
        2.卷标:-L 'LABEL' 例如 -L "MYDATA"
        3.UUID,-U 'UUID' 例如:-U 'ABD12as12'
        4.伪文件系统名称:proc,sysfs,devtmpfs,configfs
      dir:挂载点
        事先存在,建议使用空目录
        进程正在使用中的设备无法被卸载
      常用选项:
        -t vfstype:指定要挂载的设备上的文件系统类型
        -r:readonly,只读挂载
        -w:读写挂载
        -m:不更新/etc/mtab文件
        -a:自动挂载所有支持自动挂载的设备:(定义在/etc/fstab文件中,且挂载选项中有"自动挂载"功能)
        -U 'UUID':以UUID指定要挂载的设备
        -L 'LABEL':以UUID指定要挂载的设备
        -B,--bind:绑定目录到另一个目录上
      -o options:(挂载文件系统的选项)
        async:异步挂载
        sync:同步挂载
        atime/noatime:是否支持更新访问时间
        diratime/nodiratime  :是否支持目录访问时间
        exec/noexec  :是否支持挂载的文件系统上的程序运行为进程
        dev/nodev  :是否支持挂载的文件系统访问设备文件
        user/nouser  :是否支持普通用户挂载此设备
        remount  :重新挂载
        ro  :只读挂载
        rw  :读写挂载
        suid/nosuid:是否支持suid权限
        acl:是否支持文件系统上的acl功能
        auto/noauto:是否支持自动挂载    
        注意:上述选项可同时使用,彼此以逗号分隔
          默认挂载选项:defaults
          acl,exec,nouser,dev,rw,auto,async

    通过查看/etc/mtab文件显示当前系统已挂载的所有设备

    查看内核追踪到的已挂载的所有设备:cat /proc/mounts

    卸载命令:umount
        umount DEVICE
        umount MOUNT_POINT
    挂载交换分区:
        启用:swapon
            swapon [OPTION]... [DEVICE]
                    -a:激活所有的交换分区
                    -p PRIORITY:指定优先级
        禁用:swapoff
            swapoff [OPTION]... [DEVICE]

    其他相关命令:

    查看谁正在访问指定的文件系统:
        fuser -v MOUNT_POINT
    终止所有正在访问指定的文件系统的进程
        fuser -km MOUNT_POIN
    内存空间使用情况
        free :默认以KB为单位
            -m :以MB为单位
            -g  :以GB为单位
    查看某目录的总体空间占用状态
        du [OPTION] DIR
            -h:human-readable
            -s:summary
    文件系统空间占用等信息的查看工具
        df
            -h:human-readable
            -l:inodes instead of blocks
            -P:以Posix兼容的格式输出
    dd命令:convert and copy a file
    用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST
        bs=#    :block size,复制单元大小
        count=#    :复制多少个bs
    1.备份MBR
    dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
    2.破坏MBR中的bootloaer
    dd if=/dev/zero of=/dev/sda bs=512 count=1
    两个特殊设备:
        /dev/null
        /dev/zero

    文件挂载的配置文件:/etc/fstab

    每行定义一个要挂载的文件系统:
      要挂载的设备或伪文件系统    挂载点    文件系统类型    挂载选项    转储频率    自检次序
        要挂载的设备或伪文件系统
          设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc,sysfs)
        挂载选项
          defaults,acl
        转储频率
          0:不做转储
          1:每天转储
          2:每隔一天转储
        自检次序
          0:不自检
          1:首先自检,一般只有rootfs才会用1
          2:同时自检
          ...
        

    文件系统挂载使用

    挂载光盘设备
        光盘设备的文件:
            IDE:/dev/hdc
            SATA:/dev/sr0
        符号链接文件:
            /dev/cdrom
            /dev/cdrw
            /dev/dvd
            /dev/dvdrw
    mount -r /dev/cdrom /media/cdrom
    umount /media/cdrom

    文件系统的其他概念

    文件系统把磁盘空间分成N个块,N个块又分成N个块组,每个块组又分成元数据区和数据区,元数据区存放数据块的索引inode,有个专门存放inode的inode table,还会预留一些空间用来存放inode bitmap,block bitmap,因为这么多块扫描也挺耗费时间的,所以有块位图,inode bitmap和block bitmap在磁盘空间中也有相应的块。
    Inode:Index Node,索引节点
        地址指针:
            直接指针
            间接指针
            三级指针
    inode bitmap:对位标识每个inode空闲与否的状态信息
    链接文件:
        硬链接:指向相同inode的不同路径;创建文件的硬链接即为inode创建新的引用路径,因此会增加其引用计数
        不能对目录进行
        不能跨分区:因为不同分区文件系统不一样,文件路径也是不一样的
      符号链接:指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
        可以对目录进行
        也可以跨分区
    创建链接文件方式:
      ln [-sv] SRC DEST
        -s:symbolic link
        -v:verbose

    文件删除、复制、移动

    文件删除:意味着目标文件的引用计数为0,元数据区的inode置为0,inode bitmap也置为0,block bitmap也置为0
    文件复制:不管是同分区还是跨分区,都很耗时间。因为文件复制是先创建一个空白的文件,然后将原文件的元数据和数据区填充到新文件中
    文件移动:如果是跨分区,那么和复制差不多,都是要新创建文件,然后将原文件的内容填充到创建的文件中,最后将原文件删除。如果是同分区,那么文件移动只需要修改指向inode的路径即可
  • 相关阅读:
    Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)
    库管理系统-- 后台管理开源啦,源码大放送
    .NET Core R2
    Linux gdb调试
    webpack React+ES6
    绿卡排队
    ABP分层设计
    vscode编写插件
    控制台程序的参数解析类库 CommandLine
    Net Core MVC6 RC2 启动过程分析
  • 原文地址:https://www.cnblogs.com/ckh2014/p/14110955.html
Copyright © 2011-2022 走看看