当前位置: 首页 > ops >正文

小白成长之路-Linux磁盘管理(一)

文章目录

  • 前言
  • 一、磁盘介绍
    • 1、磁盘的物理结构
      • 1.1硬盘结构
      • 1.2磁头数、磁道、柱面、扇区
    • 2.CHS编号
      • 2.1磁道编号规则
      • 2.3扇区编号规则
      • 2.3通过CHS计算硬盘容量
    • 3、磁盘存储划分
      • 3.1第一个扇区存储的数据
      • 3.2硬盘分区
    • 4.开机流程
    • 5、要点
    • 6、磁盘存储数据的形式
  • 二、Linux文件系统
    • 1、根文件系统
    • 2、虚拟文件系统
    • 3、真文件系统
      • 3.1、ext4
      • 3.2、xfs
    • 4、伪文件系统
      • 4.1、procfs
      • 4.2、devtmpfs
      • 4.3、sysfs
  • 三、磁盘分区与挂载
    • 1、磁盘分区方式
      • MBR
      • GPT
      • 表示形式
    • 2、分区命令
      • 2.1、fdisk命令
      • 2.2、parted命令
    • 3、查看与识别命令
      • 3.1、lsblk命令
      • 3.2、partprobe命令
      • 3.3、blkid命令
    • 4、格式化命令
    • 5、挂载命令
      • 4.1、mount命令&swapon命令
      • 4.2、umount命令&swapoff命令
  • 四、案例流程(详细)
    • 1.挂载磁盘
    • 2.检查磁盘容量
    • 3.分区
    • 4.格式化
    • 5.挂载到目录节点上
    • 6.自动挂载
    • 7.测试 etc/fastab
    • 五、故障分析
      • 1.挂载源写错
      • 2.挂载点写错
      • 3.文件系统写错
      • 4.创建拓展磁盘无法识别
  • 总结


前言

`第一部分有些分散,最终的目的是要达成第四点的几个案例

一、磁盘介绍

文件系统是Linux系统的核心,在Linux系统中,一切皆文件。对于开发者而言,编程过程中通常用到的是文件IO。在open函数打开文件,read函数读取文件的过程底层原理如何?本文件系统系列文章主要尝试针对的是这部分内容进行深入的讲解。

文件最终是存储在磁盘上,文件的存取,最终是读写磁盘。

1、磁盘的物理结构

1.1硬盘结构

在这里插入图片描述
其中:

  • 每个盘片有两面,两面都可以存储数据。
  • 每个盘面都有一个磁头,用于存取数据。
  • 所有磁头都是固定的,一起做物理移动。但是每次只有一个磁头执行存取数据的任务,选择使用哪个磁头是由系统控制的。磁头间的切换非常迅速,而磁头摆动寻道则比较慢。
  • 磁头摆动,找到要读取数据所在的磁道;盘片通过转动,将数据“送到”磁头下。

1.2磁头数、磁道、柱面、扇区

在这里插入图片描述

  • 磁头数: 每个盘面都有一个磁头,因此磁头数 = 盘面数。
  • 磁道: 上以盘片轴心为圆心,不同半径的同心圆称为磁道,磁道不是真正肉眼可看见的一道一道“坑”,而是被磁盘上被磁化的区域,磁道之间有一定的间隙,以免磁道之间磁介质相互影响。
  • 扇区: 每个磁道被等分为若干个弧段(扇区),每个扇区可以存放512个字节的数据。扇区是磁盘驱动器向磁盘读写数据的最小单元。
  • 柱面: 不同盘片半径相同的磁道组成的一个“柱面”。

2.CHS编号

所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区)。每个柱面、磁头、扇区都有自己的编号。

2.1磁道编号规则

  • 磁头编号: 从上到下,分别为磁头0号,磁头1号…
  • 柱面编号: 最外圈的柱面编号为0,往里依次递增1,2,3…

2.3扇区编号规则

每个磁道都可以被分为若干个扇区,假设有18个扇区,编号依次为1,… 18。这里的1…18在一个磁道中是唯一的,但不同磁道之间会重复。因此,要确定一个扇区在硬盘(多个盘片)中的具体位置,则需要结合柱面号/磁头号/扇区号来确定——绝对扇区编号,或者是为整个硬盘的所有扇区分配一个唯一的编号——DOS扇区编号(也称为相对扇区编号或逻辑扇区编号)。

  • 绝对扇区: 由柱面号/磁头号/扇区号唯一确定。
  • DOS(Disk Operating System)扇区(逻辑扇区): 磁盘操作系统为了管理方便,会将_柱面号/磁头号/扇区号_确定的扇区编号转换为易于管理和计算的单一数字编号,称为相对扇区编号或逻辑扇区编号。DOS扇区编号是从柱面0/磁头0/扇区1开始的,编号为0,依次递增,即柱面0/磁头0/扇区18的DOS扇区编号为18;柱面0/磁头1/扇区1的DOS扇区编号为19…。每个分区的第一个扇区的逻辑扇区编号为0。

2.3通过CHS计算硬盘容量

硬盘存储容量=磁头数×柱面数×每个磁道扇区数×每个扇区字节数

3、磁盘存储划分

3.1第一个扇区存储的数据

硬盘的第一个扇区(逻辑编号为0)可以说是整个硬盘最重要扇区了,它主要存储两大信息:

  • 主引导分区(Master Boot Record,MBR): 存放引导加载程序,大小为446字节。
  • 分区表(partition table): 记录整块硬盘分区的状态,占64字节,每一个分区信息占16个字节。

3.2硬盘分区

分区的最小单位为柱面(Cylinder),也就是说,分区其实就是指定从第几个柱面到第几个柱面属于哪个区。

假设硬盘有400个柱面,平均分为4个区(C、D、E、F盘),则第四个分区F的柱面范围是第301号到第400号柱面。

分区表中,记录的就是就是每个分区的起始柱面号和结束柱面号。因为分区表只有64字节,因此最多只能容纳4个分区的记录(硬盘默认),要想分更多的去,则需要通过扩展分区来创建逻辑分区。

4.开机流程

  1. 加载BIOS: BIOS(Base Input Output System,基本输入输出系统,读做/'baious/)是硬件厂商写入到主板ROM里的一个程序,电脑开机时,会最先执行BIOS。

  2. MBR: BIOS在执行的过程中,会根据用户设置(即在BIOS的Boot界面选择的优先启动项,U盘/硬盘/光驱),如果硬盘的优先级最高,则计算机会从硬盘的第一个扇区的MBR中的读取引导加载程序(Boot Loader)。和BIOS一样,主引导分区MBR是硬件本身会支持的东西。

  3. **引导加载程序:**引导加载程序(Boot Loader)是用于读取操作系统内核文件的一个小软件,不同的操作系统有各自的引导加载程序。每个分区都可以有自己的文件系统,有自己的引导扇区,在启动的过程中,用户可以选择是直接加载引导程序所在分区的操作系统,还是将引导加载功能交给各分区引导扇区中的加载程序。boot loader的功能主要有:

    • 提供菜单:让用户选择不同的开机选项,是多重引导的重要功能。
    • 载入内核文件:直接指向可开机的程序区段,开始操作系统。
    • 转交其他loader: 将引导加载功能转交给其他loader负责。
  4. **操作系统内核文件:**最后,引导加载程序加载操作系统的内核文件,启动操作系统!

5、要点

  1. 每个分区都有自己的引导扇区(boot sector)。
  2. 实际可开机的操作系统内核文件是存放在各个分区内的,如在C盘安装Windows系统,在D盘安装Linux操作系统。
  3. 引导加载程序(boot loader)只会认识自己所在分区内的可开机内核文件,以及其他boot loader(相当于一个指针,指向其他loader)。
  4. loader可以直接指向或者间接地将管理权交给其他loader。
  5. 一点经验:如果要安装多系统,最好先安装Windows,后安装Linux。因为Windows会强制覆盖MBS,也就是说,如果你先装Linux再装Windows,MBR中就只有Windows的相关选项(Linux的被覆盖掉了)。而Linux则不会强制覆盖MBR,你可以选择将Linux的引导程序安装在MBR或者其所在分区的引导扇区中;你也可以在Linux的引导程序中设置Windows的开机选项。

6、磁盘存储数据的形式

磁盘以二进制的形式存储数据。我们平时编程过程中读写文件模式可能有文本形式/二进制形式,文件也有文本文件、音频文件、图片文件…等各种不同类型的文件,但这些文件在磁盘上都是以二进制的方式存储。

可以想像一下,二进制中的0,对应磁盘上的一个“凹”点,1对应磁盘上的一个“凸”点。

二、Linux文件系统

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。在写入新数据之前,用户不必关心硬盘上的那个块地址没有被使用,硬盘上的存储空间管理(分配和释放)功能由文件系统自动完成,用户只需要记住数据被写入到了哪个文件中。

文件系统的本质:一种方便管理、组织、访问数据的软件。

  • 对于管理来说,主要是磁盘空闲空间的管理
  • 对于组织来说,主要是通过引入文件(inode)、树形目录(dentry)来组织用户的数据。文件包含用户的数据、树形为用户提供了一个对数据进行分类的功能。
  • 对于访问来说,通过目录+文件名的方式进行文件创建、删除、读、写(也就是所谓的增、删、查、改)。

1、根文件系统

根文件系统(rootfs)是内核启动时所 mount(挂载)的第一个文件系统,内核代码映像文件保存在根文件系中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。

2、虚拟文件系统

虚拟文件系统VFS软件抽象层为用户屏蔽了底层文件系统的差异,向上层提供了统一地访问接口。

3、真文件系统

真文件系统其实是实际存储设备的文件系统,挂载于EEPROM、 Nor FLASH、 NAND FLASH、 eMMC 等存储器中。

3.1、ext4

EXT4是第四代扩展文件系统(Fourth extended filesystem,缩写为 ext4)是Linux系统下的日志文件系统,使用64位空间记录块数量和i-节点数量。

3.2、xfs

XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中,目前CentOS 7将XFS+LVM作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。

4、伪文件系统

Linux内核提供了sysfs、procfs、devtmpfs等伪文件系统,**伪文件系统存在于内存,不占用硬盘。**以文件地形式向用户提供一些系统信息,用户读写这些文件就可以读取、修改系统的一些信息。

4.1、procfs

procfs是 进程文件系统的缩写,包含一个伪文件系统(启动时动态生成的文件系统),用于通过内核访问进程信息。这个文件系统通常被挂载到 /proc 目录。

由于 /proc 不是一个真正的文件系统,它也就不占用存储空间,只是占用有限的内存。

4.2、devtmpfs

devtmpfs 的功用是在 Linux 核心 启动早期建立一个初步的 /dev,令一般启动程序不用等待 udev(udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。),缩短 GNU/Linux 的开机时间。

如果将一个设备连接到Linux系统时,通常需要一个设备驱动程序才能正常工作。此时通过设备文件或设备节点与设备驱动程序交互,这些是看起来像普通文件的特殊文件。由于这些设备文件就像普通文件一样,所以可以使用ls、cat等程序与它们交互。这些设备文件一般存放在/dev目录下。

4.3、sysfs

sysfs是一个基于内存的文件系统,它的作用是将内核信息以文件的方式提供给用户程序使用。sysfs 文件系统被挂载在 /sys 挂载点上。

Sysfs的目的是更好地管理系统上的设备,相比/dev目录无法做到这一点。Sysfs是一个虚拟文件系统,通常挂载在/sys目录下。它为我们提供了比在/dev目录中能够看到的更详细的信息。目录/sys和/dev在某些方面看起来非常相似,但它们确实有很大的不同。基本上,/dev目录很简单,它允许其他程序访问设备本身,而/sys文件系统用于查看信息和管理设备。

/sys文件系统基本上包含了系统中所有设备的所有信息,比如制造商和型号、设备插入的位置、设备的状态、设备的层次结构等等。在这里看到的文件不是设备节点,因此实际上并不是在/sys目录下与设备交互,而是在管理设备。

三、磁盘分区与挂载

磁盘热扫描:**

cd  /sys/class/scsi_host
for i in `ls /sys/class/scsi_host`;do echo "- - -" > ${i}/scan;done
[root@localhost scsi_host]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 120G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 119G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 67G 0 lvm /home
sdb 8:16 0 20G 0 disk
sr0 11:0 1 9.5G 0 rom /run/media/root/CentOS 7 x86_64

1、磁盘分区方式

MBR

    主引导记录,支持四个主分区或三主一扩展多个逻辑,每分区最大2TB,兼容性好。

GPT

    是GUID分区表(GUID Partition Table)的缩写; 含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准。 自纠错能力强,一块磁盘上主分区数量不受(4个的)限制,支持大于18EB的总容量, 几乎没有上限,最大支持到128个分区,分区大小支持到256TB。

表示形式

硬盘:

/dev/hda:hd,表示硬盘的接口为IDE
/dev/sda:sd,表示硬盘的接口为scsi;a是硬盘的编号,如:b、c.....

分区:

/dev/sda1:第一个分区
/dev/sda2:第二个分区
假如使用MBR分区方式: 四个主分区,分别是:sda1,sda2,sda3,sda4;扩展分区:有且只能有一个,并且会占用主分区编号;
逻辑分区:基于扩展分区之上;/dev/sda5

2、分区命令

2.1、fdisk命令

fdisk - Linux分区表操作工具软件

语法:

fdisk [选项] <磁盘> 更改分区表
fdisk [选项] -l <磁盘> 列出分区表
fdisk -s <分区> 给出分区大小(块数)

选项:

选项作用
-l显示系统中已安装的分区表
-s显示分区的扇区数
-u显示分区的单元号
-c检查分区表是否正确
-d显示分区表中的错误
-n显示分区的起始和结束扇区号
-v显示fdisk的版本信息
-m显示分区的媒体类型
-u指定分区的单元号
-o指定分区的文件系统编号
-r从新分区表中创建一个新的根分区
-L创建逻辑分区(可选)
-p显示当前分区表的状态
-S设置分区的扇区大小(可选)
-a设置分区的主引导记录(MBR)类型(可选)

案例:

交互式分区

[root@c2407 ~]# fdisk  /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x41008f20 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):m
命令操作a   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partitiong   create a new empty GPT partition tableG   create an IRIX (SGI) partition tablel   list known partition typesm   print this menun   add a new partitiono   create a new empty DOS partition tablep   print the partition tableq   quit without saving changess   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exitx   extra functionality (experts only)
#解析
a 切换可引导标志
b 编辑 bsd 磁盘标签
c 切换 dos 兼容性标志
d 删除分区
g 创建新的空 GPT 分区表
G 创建 IRIX(SGI)分区表
l 列出已知分区类型
m 打印此菜单
n 添加新分区
o 创建新的空 DOS 分区表
p 打印分区表
q 不保存更改退出
s 创建新的空 Sun 磁盘标签
t 更改分区的系统 ID
u 更改显示/输入单位
v 验证分区表
w 将表写入磁盘并退出
x 额外功能(仅限专家
#分区类型
82  Linux 交换 / So
83  Linux
8e  Linux LVM 

创建主分区

命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): 
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@c2407 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    5G  0 part 
sr0              11:0    1 1024M  0 rom  

创建扩展分区

命令(输入 m 获取帮助):n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 15 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended

创建逻辑分区

命令(输入 m 获取帮助):n
Partition type:p   primary (1 primary, 1 extended, 2 free)l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x41008f20设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    41943039    15727616    5  Extended
/dev/sdb5        10489856    20975615     5242880   83  Linux

非交互创建分区

[root@c2407 ~]# vim fdisk.txt 
n
p+5G
w##################以上为文件内容######
fdisk /dev/sdb < fdisk.txt
[root@c2407 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    5G  0 part 
└─sdb4            8:20   0    5G  0 part 
sr0              11:0    1 1024M  0 rom

2.2、parted命令

语法:

 parted [options] [device [command [options...]...]]

选项:

选项作用
-l,–list列出所有块设备上的分区布局
-h,–help显示此帮助信息

案例:

parted /dev/sdb
#对/dev/sdb进行分区或管理操作
(parted) mklabel gpt
#定义分区表格式
#(常用的有msdos和gpt分区表格式,msdos不支持2TB以上容量的磁盘,所以大于2TB的磁盘选gpt分
区表格式)
(parted) mkpart p1
#创建第一个分区,名称为p1
#(p1只是第一个分区的名称,用别的名称也可以,如part1)
File system type? [ext2]? ext3
#定义分区格式
#(不支持ext4,想分ext4格式的分区,可以通过mkfs.ext4格式化成ext4格式)
Start? 1
#定义分区的起始位置
#(单位支持K,M,G,T)百分比
End? 5T
#定义分区的结束位置
#(单位支持K,M,G,T)百分比
(parted) print
Number Start End Size File system Name 标志
#查看当前分区情况
(parted) rm
#rm删除命令
#(删除之前必须确保分区没有被挂载)
Partition number? 1
#删除第一个分区
Number

3、查看与识别命令

3.1、lsblk命令

lsblk - list block devices

语法:

lsblk [options] [device...]

选项:

选项作用

案例:

[root@c2407 ~]# lsblk  
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    5G  0 part 
└─sdb4            8:20   0    5G  0 part 
sr0              11:0    1 1024M  0 rom  

3.2、partprobe命令

partprobe - inform the OS of partition table changes

语法:

partprobe [-d] [-s] [devices...]

选项:

选项作用

案例:

[root@c2407 ~]# partprobe /dev/sdb

3.3、blkid命令

查看磁盘分区的UUID

[root@c2407 ~]# blkid 
/dev/mapper/centos-root: UUID="f2840324-c37b-4223-bd2c-fce06d067b06" TYPE="xfs" 
/dev/sda2: UUID="42kMNt-GtE2-gNCd-bfIj-PPry-yTWY-TQ0B7r" TYPE="LVM2_member" 
/dev/sda1: UUID="93d6db3e-561a-4e35-8b4d-7e8d3c9d0e91" TYPE="xfs" 
/dev/sdb1: UUID="032cdca8-8800-46ef-82f3-cfa352f1ce5c" TYPE="xfs" 
/dev/sdb2: UUID="5742659f-2f02-4d97-989a-31eb63c69234" TYPE="ext4" 
/dev/sdb3: UUID="a33e9ee4-2d50-4e73-86c6-07f12bac0387" TYPE="swap" 
/dev/mapper/centos-swap: UUID="bee55b41-0179-440b-98be-a050e8b4b70c" TYPE="swap" 
/dev/mapper/centos-home: UUID="b13ce83a-ea51-4fb3-b6c9-feb1a56a282b" TYPE="xfs" 

4、格式化命令

mkfs命令

用于格式化磁盘分区,生成指定的文件系统。格式化后分区中的数据将丢失!!!

语法:

mkfs [ -V ] [ -t 文件系统类型 ] [ fs-选项 ] 文件系统 [ 块 ]
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs 

选项:

选项作用
-t文件系统类型
-v产生冗长输出信息。帮助信息

案例:

1)普通文件系统格式化

#格式化为xfs文件系统
[root@c2407 ~]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327680 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
#格式化为ext4文件系统
[root@c2407 ~]# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 

2)swap文件系统格式化

[root@c2407 ~]# mkswap /dev/sdb3
正在设置交换空间版本 1,大小 = 5242876 KiB
无标签,UUID=a33e9ee4-2d50-4e73-86c6-07f12bac0387

5、挂载命令

挂载源: 磁盘分区或者文件系统

挂载点: 文件系统访问的入口,通常是目录。

4.1、mount命令&swapon命令

mount - mount a filesystem,挂载一个文件系统;临时挂载,重启失效!

swapon:挂载swap文件系统

语法:

mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...]  device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

选项:

选项作用
-t指定要挂载的文件系统类型,常见的文件系统类型有ext4、ntfs、vfat等。
-o指定挂载选项,比如可以指定只读挂载(ro)、允许所有用户挂载(user)、允许执行程序挂载(exec)等。
-r以只读模式挂载文件系统。
-w以读写模式挂载文件系统
-a挂载/etc/fstab文件中定义的所有文件系统。
-n不重新挂载/etc/fstab文件中定义的文件系统。
-o remount重新挂载一个已经挂载的文件系统,可以改变挂载选项。
-o loop挂载一个loop设备上的文件系统。

案例:

1)普通文件系统挂载

#临时挂载文件系统
[root@c2407 ~]# mkdir /sdb1 /sdb2
[root@c2407 ~]# mount /dev/sdb1 /sdb1
[root@c2407 ~]# mount /dev/sdb2 /sdb2
[root@c2407 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0  200G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0  199G  0 part ├─centos-root 253:0    0   50G  0 lvm  /├─centos-swap 253:1    0    2G  0 lvm  [SWAP]└─centos-home 253:2    0  147G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0    5G  0 part /sdb1
├─sdb2            8:18   0    5G  0 part /sdb2
├─sdb3            8:19   0    5G  0 part 
└─sdb4            8:20   0    5G  0 part 
sr0              11:0    1 1024M  0 rom  
##文件系统没有生成或者损坏;文件系统类型不被操作系统识别。
[root@c2407 ~]# mount /dev/sdb3 /sdb3
mount: /dev/sdb3 写保护,将以只读方式挂载
mount: 文件系统类型错误、选项错误、/dev/sdb3 上有坏超级块、缺少代码页或助手程序,或其他错误有些情况下在 syslog 中可以找到一些有用信息- 请尝试dmesg | tail  这样的命令看看。
#永久挂载文件系统 :写入/etc/fstab
#挂载源 挂载点 文件系统类型 挂载参数 是否备份 是否自检
[root@c2407 ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Mon Jul 29 19:04:52 2024
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=93d6db3e-561a-4e35-8b4d-7e8d3c9d0e91 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1 /sdb1	xfs	defaults 0 0
[root@c2407 ~]# mount -a  #测试fstab中文件系统是否进行正藏挂载
[root@c2407 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  5.1G   45G   11% /
/dev/sda1               xfs      1014M  185M  830M   19% /boot
/dev/mapper/centos-home xfs       147G   38M  147G    1% /home
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/sdb1               xfs       5.0G   33M  5.0G    1% /sdb1
#注意:文件系统找不到,影响系统的启动。导致的故障;无法进入操作系统。

2)swap文件系统挂载

[root@c2407 ~]# swapon /dev/sdb3
[root@c2407 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1819         475         954          10         388        1186
Swap:          7167           0        7167
[root@c2407 ~]# swapon -a #读取fstab文件中的swap文件系统进行挂载

3)挂载本地文件,如:iso镜像文件

[root@c2407 ~]# mount -o loop deepin-desktop-community-20.9-amd64.iso /mnt
mount: /dev/loop0 写保护,将以只读方式挂载
[root@c2407 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  8.7G   42G   18% /
/dev/sdb1               xfs       5.0G   33M  5.0G    1% /sdb1
/dev/sda1               xfs      1014M  185M  830M   19% /boot
/dev/mapper/centos-home xfs       147G   38M  147G    1% /home
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/loop0              iso9660   3.6G  3.6G     0  100% /mnt

4)挂载模拟的块设备文件

[root@c2407 ~]# dd if=/dev/zero of=./2.txt bs=100M count=1
记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,0.325804 秒,322 MB/秒
##格式化
[root@c2407 ~]# mkfs.ext4 2.txt 
mke2fs 1.42.9 (28-Dec-2013)
2.txt is not a block special device.
无论如何也要继续? (y,n) y
Discarding device blocks: 完成                            
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33685504
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
##挂载
[root@c2407 ~]# mkdir /2.txt
[root@c2407 ~]# mount /root/2.txt /2.txt/
[root@c2407 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  8.7G   42G   18% /
/dev/sdb1               xfs       5.0G   33M  5.0G    1% /sdb1
/dev/sda1               xfs      1014M  185M  830M   19% /boot
/dev/mapper/centos-home xfs       147G   38M  147G    1% /home
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/loop0              iso9660   3.6G  3.6G     0  100% /mnt
/dev/loop1              ext4       93M  1.6M   85M    2% /2.txt

**注意:**在Rocky操作系统中,模拟的磁盘文件无法作为swap使用!!

4.2、umount命令&swapoff命令

umount - 卸载文件系统

swapoff-卸载swap文件系统

语法:

umount -a [-nrv] [-t vfstype]
umount 挂资源或者挂载点

选项:

选项作用
-a卸载所有可卸载文件系统

案例:

1)卸载普通文件系统

[root@c2407 ~]# umount /dev/sdb1
[root@c2407 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        50G  8.8G   42G   18% /
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
/dev/sda1               xfs      1014M  185M  830M   19% /boot
/dev/mapper/centos-home xfs       147G   38M  147G    1% /home

2)swap文件系统卸载

[root@c2407 ~]# swapoff /dev/sdb3
[root@c2407 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1819         472         957          10         388        1190
Swap:          2047           0        2047
#卸载所有swap文件系统
[root@c2407 ~]# swapoff -a
[root@c2407 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           1819         471         960          10         387        1191
Swap:             0           0           0

四、案例流程(详细)

注:挂载前现在虚拟机添加一块新的
在这里插入图片描述
最后一步切记点确定,否则无法添加

1.挂载磁盘

这里使用的是绝对路径,之前有相对路径,两种方法都行
前提条件是给虚拟机额外添加一块硬盘
在这里插入图片描述

2.检查磁盘容量

分区前先查看磁盘的容量
在这里插入图片描述

3.分区

在这里插入图片描述
在这里插入图片描述
创建主分区
在这里插入图片描述
在这里插入图片描述
分区创建好后输入p查看

在这里插入图片描述
在这里插入图片描述

4.格式化

在这里插入图片描述

5.挂载到目录节点上

只有目录能挂载,可以创建一个目录
在这里插入图片描述

6.自动挂载

这只是临时挂载,要想开机也能挂载
vim /etc/fstab
在这里插入图片描述

7.测试 etc/fastab

注:etc/fastab是开机时自动启动的文件,非常重要,一定要检测这个文件里的内容是否正确
在这里插入图片描述

五、故障分析

1.挂载源写错

在这里插入图片描述
在这里插入图片描述
把这个地方改成正确的
重启虚拟机会发现一直在转圈,无法启动,按Esc进入
在这里插入图片描述
输入密码可以暂时登录终端
根据提示输入 journalctl -xb可以进入报错日志
在这里插入图片描述
标红色的就是报错的地方,然后进入vim /etc/fstab修改

2.挂载点写错

在这里插入图片描述

在这里插入图片描述

3.文件系统写错

在这里插入图片描述
在这里插入图片描述

4.创建拓展磁盘无法识别

在这里插入图片描述
排查故障:umount /dev/sdb1
在这里插入图片描述

原因:当前分区后占用挂载点

总结

主要学习了Linux的挂载磁盘流程以及故障分析
以上就是今天要讲的内容,希望能帮到小伙伴们。

http://www.xdnf.cn/news/7670.html

相关文章:

  • 如何管理和优化内核参数
  • [IMX] 07.LCD 显示
  • 【高斯函数】
  • 驱动相关基础
  • leetcode刷题日记——从前序与中序遍历序列构造二叉树
  • MES管理系统电子看板驱动企业智能制造
  • python Numpy-数组
  • 探索nsupdate:动态DNS更新的终极指南
  • 码钉枪行业2025数据分析报告
  • Java程序员从0学AI(二)
  • 使用F5-tts复刻音色
  • ArrayList源码分析
  • 实现商品列表
  • 建站系统哪个好?
  • 基于CATIA参数化圆锥建模的自动化插件开发实践——NX建模之圆锥体命令的参考与移植(二)
  • 笔记:显示实现接口如何实现,作用是什么
  • ollama部署模型
  • 工单派单应用:5 大核心功能提升协作效率
  • Ai学习之LangChain框架
  • STM32外设应用详解——从基础到高级应用的全面指南
  • 差分数组:原理与应用
  • 文献分享-临床预测模型-基于围手术期时间数据肝切除术后肝衰竭早期检测
  • CSS 背景全解析:从基础属性到视觉魔法
  • MinIO集群故障,其中一块driver-4异常
  • 网络安全之带正常数字签名的后门样本分析
  • 软件测试之环境搭建及测试流程
  • 见多识广10:大模型的一些基础概念
  • Python训练营打卡——DAY31(2025.5.20)
  • 类和对象------2
  • Leetcode百题斩-字典树