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的路径即可
  • 相关阅读:
    RecyclerView 数据刷新的几种方式 局部刷新 notify MD
    【图片】批量获取几万张图片
    RV BaseRecyclerViewAdapterHelper 总结 MD
    RecyclerView.ItemDecoration 间隔线
    Kotlin【简介】Android开发 配置 扩展
    Kotlin 特性 语法糖 优势 扩展 高阶 MD
    一个十分简洁实用的MD风格的UI主框架
    折叠伸缩工具栏 CollapsingToolbarLayout
    FloatingActionButton FAB 悬浮按钮
    Glide Picasso Fresco UIL 图片框架 缓存 MD
  • 原文地址:https://www.cnblogs.com/ckh2014/p/14110955.html
Copyright © 2011-2022 走看看