Linux 磁盘分区管理与文件系统配置

编程知识 更新时间:2023-04-17 01:18:56

目录

  • 前言
  • 一、磁盘(硬盘)基础
  • 二、MBR 磁盘分区
    • 2.1 MBR 与 磁盘分区表示
    • 2.2 Linux中查看硬盘分区
    • 2.3 新增硬盘
    • 2.4 对新增硬盘进行分区:fdisk
    • 2.5 创建文件系统:mkfs
    • 2.6 创建交换文件系统:mkswap
    • 2.7 挂载、卸载设备文件命令:mount
    • 2.8 【实验操作】
      • 2.8.1 实验:创建分配主分区
      • 2.8.2 实验:创建文件系统、挂载分区
      • 2.8.3 实验:创建扩展分区
      • 2.8.4 实验:创建逻辑分区
      • 2.8.5 实验:更改分区类型为 Swap
      • 2.8.6 实验:挂载解挂与目录的关系
  • 三、文件系统
    • 3.1 文件系统种类
    • 3.2 设置文件系统自动挂载:/etc/fstab
    • 3.3 自动挂载实验
  • 四、GPT 磁盘分区
  • 五、df、free、blkid 命令


前言

Linux 中首先创建硬盘,然后对因硬盘进行分区,分完区之后要进行格式化(创建文件系统),最后进行挂载。


一、磁盘(硬盘)基础

在 Linux 系统中,文件系统是创建在硬盘上的。因此,要想彻底理解文件系统的管理机制,就要先从了解硬盘开始。

磁盘结构:

 机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成,数据存放在磁盘盘片中。硬盘是上下双磁头,盘片在两个磁头中间高速旋转。

硬盘的物理结构

  • 盘片:硬盘有多个盘片,每个盘片有上下2面;
  • 磁头:每一面都有一个磁头;

硬盘的数据结构(逻辑结构):

  • 扇区:盘片被分为多个扇形区域,每个扇凶存放 512字节 的数据,是硬盘的最小存储单位;
  • 磁道:同一盘片有许多不同半径的同心圆,是由磁头在盘片表面划出的圆形轨迹,最外面的同心圆就是 0 磁道;
  • 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成;(具有相同编号的磁道会形成一个圆柱,这个圆柱就被称作磁盘的柱面)

【点击查看参考的原文链接】

磁盘知识点:

  • 硬盘存储容量 = 磁头数 × 磁道(柱面)数 x 每道扇区数 × 每扇区字节数(512字节);
  • 可以用 柱面/磁头/扇区 来唯—定位磁盘上每一个区域;
  • 磁盘接口种类有:IDE(快要淘汰了)、SATASCSISAS(新一代SCSI技术)、光纤通道;

 SATA 接口:抗干扰性强,支持热插拔等功能,速度快,纠错能力强。

 SCSI 接口:小型机系统接口,广为工作站级个人电脑以及服务器所使用,资料传输时CPU占用率较低,转速快,支持热插拔等优势。

二、MBR 磁盘分区

2.1 MBR 与 磁盘分区表示

 硬盘的顺序号,以字母a、b、c……表示;

 分区的顺序号,以数字1、2、3……表示。主分区从1-4,第一个逻辑分区始终从5开始。

MBR 主引导记录(Master Boot Record)

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

磁盘分区结构

  • 硬盘中的 主分区数目 只有4个(1、2、3、4);
  • 主分区和扩展分区的序号限制在 1~4
  • 只能建立一个扩展分区;
  • 先建立 扩展分区后,才能再分为 逻辑分区;
  • 逻辑分区的序号将始终从 5 开始,逻辑分区数量不限制。

硬盘,分区等设备文件 都保存在 /dev 目录当中,hd 表示 IDE设备,sd 表示 SCSI设备,第三为字母 a/b/c… 代表 硬盘的顺序号,1/2/3…代表分区号的顺序

 如 /dev/hda2,表示 第二块 IDE磁盘设备。2 代表是磁盘分区,如果是5 代表逻辑分区。

 执行命令 df -h 查看 磁盘空间使用情况:

2.2 Linux中查看硬盘分区

查看或管理磁盘分区:

命令格式:fdisk -l [磁盘设备名] 查看磁盘设备信息与分区信息;

命令格式:fdisk [磁盘设备名] 管理磁盘设备;

  • Device(设备):分区的设备文件名称;
  • Boot:是否是 MBR 引导分区。若是,则有 “ * ” 标识;
  • Start:该分区在硬盘中的起始位置(柱面数)。
  • End:该分区在硬盘中的结束位置(柱面数)。
  • Blocks:分区的大小,以 Blocks(块)为单位,默认的块大小为 1024 字节。
  • Id:分区对应的系统 ID 号。例如,Linux中的 XFS分区 或 EXT4分区表示是 83、LVM 逻辑卷是8e、SWAP 交换分区是82
  • System:分区类型(Linux 表示是主分区,Extended是扩展分区,swap 是交换分区)。

2.3 新增硬盘

 往现有虚拟机系统中增加硬盘时,如果硬盘类型支持热插拔,则可以直接添加,否则就需要关机后添加磁盘。在虚拟机中则需要重启。

 比如我在虚拟机中添加10G新硬盘,重启系统。

重新开机之后,执行命令 fdisk -l,发现能查看到新增配的 10G磁盘,记住这个新设备名 /dev/sdb 。

但是:新增加的硬盘不能直接使用,需要分区、格式化之后才能够实用。

2.4 对新增硬盘进行分区:fdisk

 管理磁盘分区命令:fdisk 设备名,进入分区交互模式;

交互模式中的常用指令:

m:获取帮助菜单
n:新建分区
p:查看分区情况
d:删除分区
t:变更分区的类型
w:保存分区操作并退出
q:不保存分区操作并退出

【创建分区步骤】
--> fdisk /dev/sdb 后输入 n,p 主分区、e扩展分区、l 逻辑分区。

--> 输入选项:p 主分区 / e 扩展分区 / l 逻辑分区。(创建逻辑分区前要先创建扩展分区)

--> 设置分区:1  (主范围1-4,如按 Enter 键接受默认值)

--> 设置柱面序列:直接按 Enter 键接受默认值

--> 设置分区大小:+20G  (指定大小为 20GB,如按 Enter 键接受默认值表示所有空间)

--w 

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

2.5 创建文件系统:mkfs

 mkfs(Make Filesystem),创建文件系统(格式化):

创建文件系统命令:mkfs -t 文件系统类型 分区设备名

步骤:
--> 
mkfs -t xfs /dev/sdb1 #先给设备创建 xfs 文件系统 (格式化)
--> 
mkdir /data  #创建挂载目录
--> 
mount /dev/sdb1 /data/ #分区挂载目录, 执行 df -h 查看磁盘情况
--> 
cd /data #才可以进入目录进行操作

2.6 创建交换文件系统:mkswap

mkswap(Make swqp),创建交换文件系统;

命令:mkswap 分区设备名

命令实例:

分区号更改为 82 后:

swapon -s #查看当前使用swap文件系统的设备信息

mkswap /dev/sdb5 #设置分区的文件系统为swap文件系统

swapon /dev/sdb5 #启动新增加的交换分区

swapoff /dev/sdb5 #停用指定的交换分区

swapon -a  #启动所有设备
swapoff -a #停用所有设备

cat /proc/meminfo | grep SwapTotal #查询交换分区大小

free -m #以M为单位查看使用内存的值

2.7 挂载、卸载设备文件命令:mount

挂载文件系统命令:mount [-t 类型] 存储设备名 /挂载点文件目录

挂载 ISO 镜像命令:mount -o loop ISO镜像文件 /挂载点目录

  • -t:用于指定文件系统类型,通常可以省略,由Linux系统自动判别;
  • -o:挂载参数列表,以英文逗号分隔;或用来描述特殊设备,用 loop 指定。

 挂载之前, 目录 /data 读取创建时所在磁盘的内容,,将磁盘B挂载到这个目录下时,目录读取的是重新挂载后的 磁盘B中的数据。(见实验 2.8.6)

如:
mount #查看磁盘使用情况

mount /dev/cdrom /mnt
mount /dev/sdb1 /opt

#挂载已下载到系统中的镜像文件  /media 目录下
mount -o loop CentoS-7-x86_64-DVD-1708.iso /media

#mount -a #/etc/fstab 中的挂载项进行挂载

#可以直接拖拽   winSCP 软件(基于SFTP协议)中直接拖拽,从宿主复制文件到虚拟机中。

注:mount 是 临时挂载,重启系统后 之前的挂载会失效。

比如:设备 /dev/sdb1  挂载点目录是 /data,重启系统后,df -h 看不到该挂载信息;
需要重新执行命令 mount /dev/sdb1 /data 才能查到。

umount 命令,卸载已挂载的文件系统:

卸载前提:挂载的设备或者目录没有被在使用中,要先退出挂载目录(在挂载点目录之外操作挂载点目录,否则会提示 :umount /挂载目录:目标忙)。

命令格式:umount [-lf] 存储设备位置umount [-lf] 挂载点目录

  • -l:表示解除正在繁忙的文件系统;
  • -f:表示强制卸载;
比如:设备 /dev/sdb1  挂载点目录是 /data,那么解挂时 执行:
umount /dev/sdb1  umount /data ,效果相同 

2.8 【实验操作】

2.8.1 实验:创建分配主分区

实际操作】:设置 主分区1 大小是4G

 执行命令 fdisk /dev/sdb 进入交互模式:

 设置主分区1,在模式中 按 p 可以查看分配结果。

 分配好之后执行 fdisk -l,能看到分配成功,分配的新设备名是 /dev/sdb1 。

 输入命令 vi /dev/sd 按 Tab 键,查看 sd 开头的设备名。如果新增的分区设备名没展示出来,则执行 partprobe 命令重新刷新以下。

创建好了分区后,不能直接使用,需要创建文件系统(对分区进行初始化),才能对分区文件进行操作见实验 2.7.2 :

2.8.2 实验:创建文件系统、挂载分区

  • 创建文件系统(格式化)
  • 挂载分区
  • 正常使用磁盘

     验证:执行 df -hT 命令,可查看磁盘分区使用 文件系统挂载点

 注意:挂载信息在系统重启后就会消失,/data 就会使用默认的/dev/sda5 硬盘,想使用新的 /dev/sdb1 磁盘文件的话,可以重新使用 mount 将 /data 牡蛎挂载到 sdb1 上,想永久挂载到 /dev/sdb1 上时,可以在开机就会执行的配置文件中添加该信息。

2.8.3 实验:创建扩展分区

 上面创建的主分区我只分配了4个G,还有6个G能够进行创建分区,再次执行 fdisk /dev/sdb 命令,这次 选择创建 Extended 扩展分区,分2个G:


  输入 w 保存并退出。
  接下来的 创建文件系统、挂载 并没有去配置所谓无法使用该分区,创建扩展分区只是为了下面去创建 逻辑分区。

2.8.4 实验:创建逻辑分区

  输入命令: fdisk /dev/sdb



 可在 /data2 目录下进行操作。在未配置系统配置文件的情况下,重启系统后需要重新挂载(为文件目录 指定 磁盘)。

2.8.5 实验:更改分区类型为 Swap

 比如我通过 fdisk 命令创建了一个主分区设备 /dev/sdb3 。想要修改其为 swap 交换文件分区,操作如下:

步骤

创建 swap之前,目标分区应先通过 fdisk 工具将分区类型 ID 号设为 82

fdisk /dev/sdb
-->
 t
 -->
 输入分区号,如3
 -->
 82
 -->
 w 保存并退出


partprobe /dev/sdb  #刷新新建的分区
mkswap /dev/sdb3    #
swapon -s           #查看挂载之前的 swap中设备状态信息
swapon /dev/sdb3    #启动新增加的交换分区
swapon -s           #查看挂载后的信息  

2.8.6 实验:挂载解挂与目录的关系

 比如我根目录所在磁盘 /dev/sda5 中创建一个 /data 目录,并创建文件 sda5555.txt,这些文件都是在 磁盘 /dev/sda5 中;

 这时候执行命令 mount /dev/sdb1 /data ,将 磁盘 /dev/sdb1 挂载到 /data 目录上,那么这时候 /data 就没有 sda5555.txt 的文件,因为磁盘都不一样了;

 执行 umount /dev/sdb1 解挂 /data 后,会回到创建的 /dev/sda5 磁盘,又能查到 sda5555.txt 这个文件。

三、文件系统

3.1 文件系统种类

XFS文件系统

  • 存放文件和目录数据的分区;
  • 高性能的日志型文件系统,特别擅长于处理大文件,可支持上百万TB的存储空间;
  • CentOS 7 系统中默认使用的文件系统;

SWAP 交换文件系统

  • 为 Linux系统建立交换分区;
  • —般设置为物理内存的 1.5~2倍;
  • 当物理内存不够用了,会把数据临时存到SWAP空闲的硬盘上;

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

  • EXT3(Centos 5)
  • EXT4(Centos 6)
  • XFS(Centos 7)
  • FAT32(win xp)
  • NTFS(Win 7\8\10)
  • LVM(逻辑卷:初级的 可扩展弹性伸缩磁盘券)

3.2 设置文件系统自动挂载:/etc/fstab

 因为 mount 是 临时挂载,重启系统后 之前的挂载会失效,可在 /etc/fstab 中进行自动挂载配置。

配置文件为: /etc/fstab

● 包含需要开机后自动挂载的文件系统记录;

● Linux操作系统在每次开机时,会自动读取 /etc/fstab 文件的内容,自动挂载其中所指定的文件系统,根据文件里面的配置挂载磁盘。

● 可以挂载设备和镜像文件

vi /etc/fstab #直接在末尾添加一行新配置

/dev/sdb1 /opt xfs defaults 0 0     #存储设备
/dev/sr0 /mnt iso9660 defaults 0 0  #ISO镜像
  • 第1字段:设备名 或设备卷标名。
  • 第2字段:文件系统的 挂载点目录 的位置。
  • 第3字段:文件系统类型,如 xfs、 swap,iso9660(光盘镜像文件) 等。
  • 第4字段:挂载参数,即 mount 命令 " -o " 选项后可使用的参数。
    例如,defaults (默认参数)、rw (可读写)、ro (只读)、noexec (禁用执行程序)。
  • 第5字段:表示文件系统是否需要 dump 备份(dump是一个备份工具)。一般设为1时表示需要,设为 0 时将被dump忽略。
  • 第6字段:该数字决定在系统启动时进行 磁盘检查 的顺序。0 表示不进行检查,1表示优先检查,2表示其次检查。根分区可设为1,其他分区设为2。

 查看/etc/fstab,可以看到第一列的系统默认分区的设备名是用 UUID 来挂载的:

Linux设备中的 UUID 简介:

 UUID是为系统中的存储设备提供 唯一的 标识字符串。如果你在系统中启动的时候,使用盘符(设备编号)挂载时,可能因找不到设备而加载失败,而使用UUID挂载时,则不会有这样的问题。(云主机最好使用UUID挂载设备,如果使用设备名挂载设备,有可能出现重启后找不到设备的情况)。

使用UUID挂载设备的原因:

 自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。,使用UUID可以使同一块卡挂载在同一个目录下。

查看UUID和磁盘设备挂载之间的关系:blkidls -l /dev/disk/by-uuid 命令。

3.3 自动挂载实验

  进入 fstab 文件,修改后保存退出 ,重启系统。


  如果是 光盘镜像文件 在添加一行 /dev/sr0 /mnt iso9660 defaults 0 0

  重启后 执行 df -hT 发现挂载成功,设备名,文件系统类型、挂载目录 都是对的;或者用 mount 命令查看挂载列表


  如果重启后登录不了系统,那么说明这个文件配置有误。在提示命令行 输入root 密码,进入 vi /etc/fstab 重新修改保存后,init 6 重启。

四、GPT 磁盘分区

  全局唯一标识分区表(GUID Partition Table,缩写:GPT)

  GPT是一个实体硬盘的分区结构。它是可扩展固件接口标准的一部分,用来替代BIOS中的主引导记录分区表。

  传统的主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩展分区里面分多个逻辑分区。

  与MBR分区方法相比,GPT具有更多的优点,因为它允许每个磁盘有多达128个分区,支持高达18EB(千兆兆字节)的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。

  1. 若磁盘小于2TB,可用 fdisk /dev/sdb 进行分区,即MBR 分区格式;
  2. 若磁盘大于2TB,可用 parted /dev/sdb 进行分区,因为MBR分区磁盘是不能大于2.2TB,所以超过2TB一般使用GPT 分区格式。

操作实例:
参考链接

1、选择分区硬盘

  注:【】里面的是需要输入的参数。

  首先类似 fdisk 一样,先选择要分区的硬盘,以 /dev/sdb 为例, ((parted)表示在 parted 中输入的命令,其他为自动打印的信息)

parted /dev/sdb```


**2、创建分区**

  选择了 /dev/sdb 作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息)

```handlebars
(parted) 【mklabel】
New disk label type? 【gpt】    #我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车

3、完成分区操作

  创建好分区表以后,接下来就可以进行分区操作了,执行 mkpart 命令,分别输入分区名称,文件系统和分区 的起止位置

(parted) 【mkpart】
Partition name? []? 【dp1】
File system type? [ext2]? 【ext4】
Start? 0           (可以用百分比表示,比如Start? 0% , End? 50%
End? 500G】

4、验证分区信息

  分好区后可以使用 print 命令打印分区信息,下面是一个 print 的样例

(parted) 【print】
Model: VBOX HARDDISK (ide)
Disk /dev/sdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number Start   End   Size File system Name Flags
1     17.4kB  500GB  500GB            dp1

5、删除分区示例

如果分区错了,可以使用rm命令删除分区,比如我们要删除上面的分区,然后打印删除后的结果

parted /dev/sdb

(parted) 【rm 1    #rm后面使用分区的号码,就是用print打印出来的Number
(parted) print
Model: VBOX HARDDISK (ide)
Disk /dev/sdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

6.格式化操作,完成后即可挂载使用

mkfs.ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data

7.最后加入 /etc/fstab 自动挂载

vim /etc/fstab
/dev/sdb1  /data  ext4  defaults  0 0

五、df、free、blkid 命令

格式:df [选项]

选项说明
-h显示分区的容量单位
-T显示文件系统的类型,如 xfs
-i显示分区的 inode 号码数量

free 命令显示系统使用和空闲的【内存】情况,包括物理内存、交互区内存(swap)和内核缓冲区内存

free -m #以M为单位查看使用内存的值

使用blkid 查看UUID

更多推荐

Linux 磁盘分区管理与文件系统配置

本文发布于:2023-04-13 15:35:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/d7ef5506cf2c0eaf7b585769fba64059.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:磁盘分区   文件   系统配置   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 73011文章数
  • 14阅读数
  • 0评论数