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的路径即可
原文地址:https://www.cnblogs.com/ckh2014/p/14110955.html