@TOC

磁盘管理与文件系统

磁盘基础

磁盘结构

  • 硬盘的物理结构

    • 盘片:硬盘有多个盘片,每盘片2面

    • 磁头:每面一个磁头

    pic1.png

  • 硬盘的数据结构
    • ==扇区==:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位
    • ==磁道==:同一盘片不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹
    • ==柱面==:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成
  • 硬盘存储容量 = 磁头数 × 磁道(柱面)数 x 每道扇区数 × 每扇区字节数(512字节)
  • 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
  • 磁盘接口类型
    • IDE:并口数据线连接主板与硬盘,抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被SATA所取代。
    • SATA:抗干扰性强,支持热插拔等功能,速度快,纠错能力强。
    • SCSI:小型机系统接口,SCSI硬盘广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等
    • SAS:是新一代的SCSI技术,和SATA硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到6Gb/s。
    • 光纤通道

MBR与磁盘分区表示

  • 主引导记录(MBR: Master Boot Record)

    • MBR位于硬盘第一个物理扇区处(512字节)

    • MBR中包含硬盘的主引导程序和硬盘分区表

    • 分区表有4个分区记录区,每个分区记录区占16个字节

    • Linux中将硬盘、分区等设备均表示为文件

    /dev/hda5:

    • /dev/:硬件设备文件所在的目录
    • hd表示IDE设备,sd表示SCSI设备
    • a:硬盘的顺序号,以字母a、b、c......表示
    • 分区的编号,以数字1、2、3......表示。主分区及扩展分区从1-4,第一个逻辑分区始终从5开始。

硬盘分区结构

  • ==硬盘中主分区数目只有4个==
  • ==主分区和扩展分区的序号限制在1 ~ 4==
  • ==扩展分区再分为逻辑分区==
  • ==逻辑分区的序号将始终从5开始==

主启动记录(MBR)磁盘分区

  • MBR是主引导记录,位于硬盘第一个物理扇区处,MBR中包含硬盘的主引导程序和硬盘分区表。MBR总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节。
  • 主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。

文件系统类型

  • XFS文件系统

    存放文件和目录数据的分区

    高性能的日志型文件系统,特别擅长于处理大文件,持上百万TB的存储空间。

    CentOS 7系统中默认使用的文件系统

  • SWAP,交换文件系统

    为Linux系统建立交换分区(一定程度环节内存不够用的问题,但是读写速度慢)

    一般设置为物理内存的1.5~2倍

  • Linux支持的其它文件系统类型

    EXT4、FAT32、NTFS、LVM(逻辑卷)

检测并确认新硬盘

  • fdisk命令

    • 查看磁盘分区

    fdisk -l [磁盘设备]

    设备(目录显示)Boot:* --> MBR所在的位置

    Start:起始位置

    End:结束位置

    Blocks:分区大小(以块为单位),一个块124字节

    Id:分区所对应的系统id号

    System:对应的系统类型

    • 管理磁盘分区

    fdisk [磁盘设备]

  • 交互模式中常用的指令

    • m、p、d、t、w、q

规划硬盘中的分区

  • 管理磁盘分区

    fdisk /dev/sdb

  • 交互模式中的常用指令​

    m:获取帮助菜单

    n:新建分区

    p:查看分区情况

    d:删除分区

    t:变更分区的类型

    w:保存分区操作并退出

    q:不保存分区操作并退出

  • 创建分区步骤

    1. n
    2. p 主分区、e 扩展分区、l 逻辑分区(先创建扩展分区)
    3. 设置分区:1 (p和e范围1-4,如按enter键接收默认值,l从5开始)
    4. 设置柱面序列:直接按Enter键则接收默认值
    5. 设置分区大小:+20G(指定大小为20GB,直接按Enter键则接受默认值表示所有空间)
    6. w(q不保存退出)

变更硬盘(特别是正在使用的硬盘)的分区设置以后,建议最好将系统重启一次,或者执行"partprobe"命令使操作系统检测新的分区情况,以防止格式化分区时损坏硬盘中己有的数据。

创建文件系统

  • mkfs命令

    • Make Filesystem,创建文件系统(格式化)(只能用于主分区和逻辑分区)

    mkfs -t 文件系统类型 分区设备

    mkfs.文件系统类型 分区设备

    mkfs -t xfs /dev/sdb1

    mkfs.xfs /dev/sdb1

  • mkswap命令(交换分区)

    • make swap,创建交换文件系统

    mkswap 分区设备

    free -m //查看内存使用率命令,可以查看swap分区情况(-m转换单位为M也可以用G,也可以-h人性化显示)

  • swapon/swapoff命令

    swapon /dev/sdb6 //sdb6作为swap使用

    swapon -s //查看swap分区情况

    swapoff [-a] [分区设备] //关闭全部swap分区或者指定分区

挂载、卸载文件系统

执行完分区、格式化、挂载才可以向新的硬盘写入数据

  • mount命令(重启失效)

    • 挂载文件系统、ISO镜像到指定文件夹

    mount [-t 类型(如nfs)] 存储设备 挂载点目录 //-t可以不加,Linux会自动识别

    mount -o loop ISO镜像文件 挂载点目录

  • umount命令

    卸载已挂载的文件系统

    umount 存诸设备位置

    umount -lf 挂载点目录(-lf强制解挂)

    无法解挂载时可以用lsof或者fuser查看正在运行的进程

    lfof +d /data

    fuser -mv /data

  • df -h显示挂载情况(-h人性化显示,-i显示inode号)

  • mount可以查看挂载的详细信息

  • 实现挂载后挂载点中添加的文件属于挂载的文件系统。mount挂载后,挂载点目录里先前存在的文件系统的文件被覆盖。当umount解挂载文件系统后,挂载进来的文件会跟随文件系统解挂消失,先前的文件重新出现。(文件跟着文件系统走)

设置文件系统的自动挂载

  • Linux操作系统在每次开机时,会自动读取/etc/fatab文件的内容,自动挂载所指定的文件系统

    vim /etc/fstab
    /dev/sdb1     /opt     xfs     defaults     0   0
    /dev/sr0      /mnt     iso9660 defaults     0   0
  • 第1字段:设备名或设备卷标名。

    第2字段:文件系统的挂载点目录的位置。

    第3字段:文件系统类型,如xfs、swap等。

    第4字段:挂载参数,即mount命令"-o"选项后可使用的参数。例如,defaults(默认参数)、rw(可读写)、ro (只读)、noexec(禁用执行程序)

    第5字段:表示文件系统是否需要dump备份(dump 是一个备份工具)。一般设为1时表示需要,设为0时将被dump忽略。

    第6字段:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。

    UUID:存储设备的ID号,可用来识别设备(可置于第一字段)

    mount -a命令会根据/etc/fstab立即重新挂载一次

  • blkid可以查看设备UUID