Linux磁盘管理之【分区、格式化和挂载】

223 阅读9分钟

1 硬盘结构

1.1 硬盘的物理结构

1.1.1 硬盘的分类

  • 机械硬盘:靠磁头转到找数据 慢 便宜
  • 固态硬盘:靠芯片去找数据 快 贵

// 0是机械、1是固态。机械硬盘因为便宜,目前还是主流,所以今天主要讲机械硬盘。

名词术语:

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据(扇区越多容量越大) 扇区是存放数据的最小单位 512字节
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆(柱面和磁道数量相同)

// 数据放在内圈 比放在外圈,读取更快。

1.1.2 磁盘接口类型

磁盘接口类型 决定了 数据传输的快慢。

常见接口类型:

  • IDE 早期的,已经被淘汰
  • SCSI 也比较慢
  • SATA 目前主流的是SATA和SAS
  • SAS sas可以用在sata,但sata不能用在sas上。
  • 光纤通道

2 分区

2.1 分区方式

  • MBR 主引导记录:目前主流
  • GPT

分区方式分为MBR和GPT。其中二者的区别是:MBR只支持2T以下 ,共4分区;GPT可以支持2T以上 ,共128分区。

2.2 MBR分区表

mbr 位于磁盘的第一个扇区,主要作用为:

  1. 主引导程序,会协助硬件找到操作系统 大小是446字节
  2. 分区表,明确分区范围 大小是64字节,有4个分区记录区,每个分区记录区占16个字节。
  3. 最后还有2字节的结束语。

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

/dev/hda5 拆解:
   dev  #硬件存放在dev文件夹下面
   h代表接口类型,为IDE设备,已经被淘汰,目前主流是Sda1或者Sda2
   d代表磁盘  disk
   a代表硬盘的顺序,为第一块磁盘,依次是a b c d e...
   5代表分区的顺序号,为第5个分区

2.2.1 MBR分区类型

  • 主分区:可以直接使用 id范围是1-4
  • 扩展分区:(有了扩展分区可以超过四个分区):不可以直接使用,因为不是真正的分区,是逻辑分区的分区表,id范围也是1-4
  • 逻辑分区:可以直接使用,逻辑分区的空间必须从扩展分区中得到,id范围从5开始。

image.png

2.3 分区的优缺点

2.3.1 优点:

  • 优化I/O性能 读写
  • 实现磁盘空间配额限制
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS
  • 采用不同文件系统

2.3.2 缺点:

  • 必须是连续的空间
  • 无法扩容

3 文件系统

文件系统就是管理文件的系统,需要安装在磁盘上。

3.1 文件系统

3.1.1 XFS文件系统(重点!!!)

  • 存放文件和目录数据的分区
  • 高性能的日志型文件系统
  • centos 7 系统中默认使用的文件系统

最大支持8EB的文件系统,1EB=1024TB

3.1.2 swap 分区

为linux系统建立交换分区。

当内存不足时,将硬盘的空间转换成内存使用。

当内存不足时,将硬盘空间当成内存使用。

 关闭swap分区:swapoff -a [设备名]
 开启swap分区:swapon  -a [设备名]

3.1.3 NTFS

windows默认的,单个文件最大64G

3.1.4 EXT4

centos 6 系统默认,最大1EB的文件系统,足够使用。

3.1.5 JFS

这个文件系统非常好,但是需要付费使用。

//linux中经常使用的是:xfs和ext4

3.2 文件系统修复

xfs_repair 命令

注意:修复之前,一定要先 解除挂载。

4 分区工具

4.1 fdisk

推荐2T及以下分区使用

fdisk除了分区,还可以查看磁盘。

命令功能描述
fdisk -l查看所有磁盘分区信息
fdisk -l /dev/sdb查看sdb磁盘分区的信息
fdisk 设备名(设备名必须是一整块磁盘)对设备进行分区
/dev/sdb一整块的磁盘
/dev/sdb1sdb磁盘的分区1


命令全称功能描述
nadd a new partition新建分区
wwrite table to disk and exit写入到磁盘,保存并退出
ddelete a partition删除分区
tchange a partition's system id改变分区系统id
qquit退出
pprint打印当前的分区列表
ctrl+退格退格

fdisk分区步骤

 fdisk /dev/sdb    #进入交互界面
 n   新建     #有两种分区类型,默认是p。   primary是主分区、extended是扩展分区
 1  #分区区号,分区号1-4,默认是1
 +size{K,M,G}    比如 +5G , #设置分区大小   
 p   #打印当前分区列表
 w   #保存并退出

4.2 gdisk

全支持,推荐2T以上分区使用

// 为什么推荐使用fdisk和gdisk?因为这两个分完区不立即生效,有容错的机会。

注意:gdisk命令、选项等与fdisk一模一样。

4.3 parted

全支持,但是不推荐使用,因为是即时生效,分区完立马生效,没有后悔的余地。

分区实验:

  1. 首先,在虚拟机中新建硬盘。完成下面123步骤后,其他都是下一步。

image.png

  1. 在xshell中,对新建的硬盘进行分区。(新建的第二块就是sdb、第三块就是sdc…)
 磁盘分区操作:
 cd /dev
 fdisk /dev/sdb
 n      #新建分区
 p或e   #选择主分区或扩展分区,当扩展分区使用后,也会出现p或l,l是逻辑分区。
 #默认分区的区号,从1开始,逻辑分区是从5开始
 last扇区  +5G   #填写分区大小,数字任意填,但不能大于总磁盘内存。
 p   #这个p是print打印,查看分区
 w   #保存

 d   #删除分区

 lsblk    查看磁盘分区信息
  1. 建好后,用lsblk 命令查看是否识别分区。未识别的话,可以输入partprobe刷新;不行的话,可以用reboot命令重启。

磁盘命令:

命令功能描述
lsblk显示磁盘信息(块设备),显示的比较详细。
partprobe刷新分区表(分完区后,系统未识别)
reboot重启
blkid查看设备的唯一标识符,也就是uuid
fdisk分区 和 查看分区情况
gdisk分区

5 格式化

格式化命令 mkfs 后面可以是-t 也可以是 .

 mkfs  -t  指定分区类型  分区路径
 mkfs  .   指定分区类型  分区路径
 #分区类型主要是xfsext4,  如何查看分区类型?df -T或者lsblk -f
 
 mkfs -t xfs /dev/sdb1    #将sdb1格式化为XFS文件系统

6 挂载

把文件夹和硬件做关联。注意:mount挂载只能挂载文件夹(目录),不能挂载文件。

 命令语法:
     mount [-t 类型] 设备名 挂载点
     mount -o loop ISO镜像文件 挂载点目录

设备device:指明要挂载的设备

  • 设备文件/设备名:例如:/dev/sdb2
  • UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e',设备的唯一标识符
  • 伪文件系统名称:proc, sysfs, devtmpfs, configfs
 关于挂载的命令:
     mount       显示所有挂载情况
     umount      解挂载  #注意不要在挂载的文件夹下解挂载,
     ## umount用法:umount+文件路径,比如:umount /dev/sdb2
     remount     重新挂载
     mountpoint  挂载点
     findmnt     查看挂载点
     df          查看挂载, 磁盘剩余量  disk free

mount选项

选项功能描述
-o只读 指定选项
-a刷新/测试,只在fstab下生效
ro只读 readonly
rw读写 readwrite
loop使用镜像文件
 mount -o ro,remount /dev/sdb2 /opt
 #多个选项之间,用","连接

挂载规则:

  1. 一个挂载点可以挂载多个,但只能看到最后一个设备的数据,前面的设备都会被隐藏。(用df命令查看)
  2. 一个挂载点同一时间 只能挂载一个设备
  3. 尽量挂载已存在的空文件夹,不然挂载点下原有文件可能丢失或被隐藏。

异步模式和同步模式:

 async   异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
  sync   同步模式,内存更改时,同时写磁盘,安全,但效率低下

无法解挂载

fuser -km 这个命令慎用!

自动挂载(永久挂载)

注意:自动挂载不要用文件名挂载设备,一定要用uuid挂载。

/etc/fstab 默认的自动挂载文件

vim /etc/fstab 打开自动挂载界面,编辑完用mount -a 测试一下。

 1、设备名自动挂载:
 /dev/sdb1    /mnt     xfs     defaults     0 0
 
 第 1 字段:设备名或设备卷标名。
 第 2 字段:文件系统的挂载点目录的位置。
 第 3 字段:文件系统类型,如 XFS、Swap 等。
 第 4 字段:挂载参数,即mount 命令“-o”选项后可使用的参数。例如,defaults、rw、ro、noexec 分别表示默认参数、可写、只读、禁用执行程序。
 
 
 2、uuid自动挂载:
 UUID=e0b714cd-c33e-42b2-a051-1e1f3333b4b7 /data/aa xfs  defaults     0 0拆分:
     第 1 字段:UUID=e0b714cd-c33e-42b2-a051-1e1f3333b4b7  设备名    #设备名用uuid 比用/dev/sdb2效果更好,因为uuid始终是唯一的,而/dev/sdb2设备名可能会因为前面的被删掉而被动替换
     第 2 字段:/data/aa   挂载点
     第 3 字段:xfs        分区类型
     第 4 字段:defaults   权限  挂载参数
     第 5 字段:第一个0 是不备份,第二个0 是不自检。

 3、解挂:
 umount 设备名 或 挂载点
 解除挂载时,可使用设备名,也可以使用挂载点。

小拓展: 如何查询复制uuid?

可以用blkid命令查询
blkid+设备名       #可以一对一查询uuid
.!blkid +设备名   #在vim编辑器的末行模式下,输入该命令,可以将uuid信息调出来。注意不要加引号。