龙空技术网

Linux-磁盘存储和文件系统(一)

不寐旋律 980

前言:

目前咱们对“centos安装parted”大致比较着重,姐妹们都需要分析一些“centos安装parted”的相关资讯。那么小编在网摘上搜集了一些有关“centos安装parted””的相关内容,希望看官们能喜欢,各位老铁们一起来了解一下吧!

#头条创作挑战赛#

磁盘存储和文件系统

1 磁盘结构1.1 设备文件

一切皆文件:open(), read(), write(), close()

设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码:

主设备号:major number, 标识设备类型次设备号:minor number, 标识同一类型下的不同设备

设备类型:

块设备:block,存取单位“块”,磁盘字符设备:char,存取单位“字符”,键盘

磁盘设备的设备文件命名:

/dev/DEV_FILE/dev/sdX # SAS,SATA,SCSI,IDE,USB/dev/nvme0n# #nvme协议硬盘,如:第一个硬盘:nvme0n1,第二个硬盘:nvme0n2

虚拟磁盘:

/dev/vd/dev/xvd

不同磁盘标识:a-z,aa,ab…

/dev/sda,/dev/sdb, ...

同一设备上的不同分区:1,2, ...

/dev/sda1/dev/sda5

案例:创建设备文件

1 确定磁盘的设备号:

首先,您需要确定要创建设备文件的磁盘的设备号。您可以使用lsblk命令来查看系统中的磁盘设备及其相关信息。打开终端,并输入以下命令:

lsblk

在输出中,找到要创建设备文件的磁盘。记下其MAJ:MIN值,这是设备的主设备号和次设备号。例如,假设要创建一个名为/dev/sdb的设备文件,其设备号为8:16。

2 创建设备文件:

使用mknod命令来创建设备文件。打开终端,并输入以下命令:

sudo mknod /dev/sdb b 8 16

其中,/dev/sdb是要创建的设备文件路径,b表示块设备类型,8是主设备号,16是次设备号。请确保使用sudo命令以管理员权限运行该命令。

案例:操纵设备文件

现在,可以操纵设备文件以进行各种操作,例如挂载磁盘、格式化磁盘或进行数据传输等。以下是一些常见的操作示例:

挂载磁盘:

使用mount命令来挂载磁盘。首先,创建一个目标目录,例如/mnt/mydisk,然后运行以下命令来挂载磁盘:

sudo mount /dev/sdb /mnt/mydisk
格式化磁盘:

使用适当的工具(例如mkfs命令)来格式化磁盘。例如,要使用ext4文件系统格式化磁盘,运行以下命令:

sudo mkfs.ext4 /dev/sdb
进行数据传输:

使用cp命令或其他文件传输工具将文件从系统中的一个位置复制到磁盘中。例如,要将文件myfile.txt复制到挂载的磁盘上,运行以下命令:

sudo cp myfile.txt /mnt/mydisk

注意,创建设备文件和操纵设备文件是一项敏感的操作,需要谨慎处理。确保了解正确的设备号,并且具有足够的权限来创建设备文件和执行相应的操作。

1.2 硬盘类型

硬盘接口类型

IDE:133MB/s,并行接口,早期家用电脑SCSI:640MB/s,并行接口,早期服务器SATA:6Gbps,SATA数据端口与电源端口是分开的,即需要两条线,一条数据线,一条电源线SAS:6Gbps,SAS是一整条线,数据端口与电源端口是一体化的,SAS中是包含供电线的,而SATA中不包含供电线。SATA标准其实是SAS标准的一个子集,二者可兼容,SATA硬盘可以插入SAS主板上,反之不行USB:480MB/sM.2:

注意:速度不是由单纯的接口类型决定,支持Nvme协议硬盘速度是最快的

服务器硬盘大小

LFF:3.5寸,一般见到的那种台式机硬盘的大小SFF:Small Form Factor 小形状因数,2.5寸,注意不同于2.5寸的笔记本硬盘

L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考内虑增大单位密度内的磁盘容量、增强散热、减小功耗

1.3 机械硬盘和固态硬盘

机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

相较于SSD,HDD在价格、容量占有绝对优势

硬盘有价,数据无价,目前SSD不能完全取代HHD

机械硬盘结构:

固态硬盘(SSD):

2 管理存储

使用磁盘空间过程

1. 设备分区

2. 创建文件系统

3. 挂载新的文件系统

2.1 磁盘分区2.1.1 为什么分区优化I/O性能实现磁盘空间配额限制提高修复速度隔离系统和程序安装多个OS采用不同文件系统2.1.2 分区方式

两种分区方式:MBR,GPT

2.1.2.1 MBR分区

MBR:Master Boot Record,1982年,使用32位表示扇区数,分区不超过2T

划分分区的单位:

CentOS 5 之前按整柱面划分CentOS 6 版本后可以按Sector划分

0磁道0扇区:512bytes

446bytes: boot loader 启动相关 64bytes:分区表,其中每16bytes标识一个分区 2bytes: 55AA

MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区)

MBR分区:主和扩展分区对应的1--4,/dev/sda3,逻辑分区从5开始,/dev/sda5

MBR分区结构:

硬盘主引导记录MBR由4个部分组成

0000-0088

Master Boot Record

主引导程序

主引导程序

0089-01BD

出错信息数据区

数据区

01BE-01CD

分区项1(16字节)

分区表

01CE-01DO

分区项2(16字节)

01DE-01ED

分区项3(16字节)

01EE-01FD

分区项4(16字节)

01FE

55

结束标志

01FF

AA

主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA

MBR中DPT结构

存贮字节位

内容及含义

第1字节

引导标志,若值为SOH表示活动分区,若值为00H表示为非活动分区

第2、3、4字节

本分区的其实磁头号、扇区号、边柱号。其中

磁头号--第2字节;

扇区号--第3字节的低6位;

煮面号--为什么第3字节搞于2位+第4字节8面

第5字节

分区类型符:

00H--表示该分区未用(即使没有执行)

06H--FAT16基本分区

0BH--FAT32基本分区;

O5H--扩展分区

07H--NFTS分区

0FH--(LBA模式)扩展分区(83位linux分区等)

第6、7、8字节

本分区的结束磁头号、扇区号、柱面号,集中:

磁头号--第6字节

扇区号--第7字节的低6位

柱面号--第7字节的高2位+第8字节

第9、10、11、12字节

本分区之前已用了的扇函数

第13、14、15、16字节

本分区的总扇形区数

案例:备份MBR的分区表,并破坏后恢复

1. 备份MBR分区表:

打开终端,并使用`dd`命令将MBR分区表备份到一个文件中。假设您要备份的磁盘是`/dev/sdb`,备份文件名为`mbr_backup.bin`,则运行以下命令:

sudo dd if=/dev/sdb of=mbr_backup.bin bs=512 count=1

这会将磁盘`/dev/sdb`的第一个扇区(即MBR)复制到名为`mbr_backup.bin`的文件中。

2. 破坏MBR分区表:

模拟破坏情况,可以使用`dd`命令将一些随机数据写入MBR分区表。注意,这将导致磁盘上的所有分区信息丢失。运行以下命令来破坏MBR分区表:

sudo dd if=/dev/urandom of=/dev/sdb bs=512 count=1

3. 恢复MBR分区表:

使用备份的MBR分区表文件来恢复磁盘的分区表。运行以下命令来恢复MBR分区表:

sudo dd if=mbr_backup.bin of=/dev/sdb bs=512 count=1

将备份文件`mbr_backup.bin`中的内容写入磁盘`/dev/sdb`的第一个扇区,从而恢复MBR分区表。

注意,备份和恢复MBR分区表也是一项敏感的操作,需要谨慎处理。确保备份了正确的MBR分区表,并具有足够的权限才来执行这些操作。此外,破坏MBR分区表将导致数据丢失,请谨慎操作。

2.1.2.2 GPT分区

GPT:GUID(Globals Unique Identifiers) partition table 支持128个分区,使用64位,支持8Z(512Byte/block )64Z ( 4096Byte/block)使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位。

UEFI (Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT,使得操作系统可以启动

GPT分区结构

GPT分区结构分为4个区域:

GPT头分区表GPT分区备份区域2.1.3 BIOS和UEFI

BIOS是固化在电脑主板上的程序,主要用于开机系统自检和引导操作系统。目前新式的电脑基本上都是UEFI启动

BIOS(Basic Input Output System 基本输入输出系统)主要完成系统硬件自检和引导操作系统,操作系统开始启动之后,BIOS的任务就完成了。系统硬件自检:如果系统硬件有故障,主板上的扬声器就会发出长短不同的“滴滴”音,可以简单的判断硬件故障,比如“1长1短”通常表示内存故障,“1长3短”通常表示显卡故障

BIOS在1975年就诞生了,使用汇编语言编写,当初只有16位,因此只能访问1M的内存,其中前640K称为基本内存,后384K内存留给开机和各类BIOS本身使用。BIOS只能识别到主引导记录(MBR)初始化的硬盘,最大支持2T的硬盘,4个主分区(逻辑分区中的扩展分区除外),而目前普遍实现了64位系统,传统的BIOS已经无法满足需求了,这时英特尔主导的EFI就诞生了

EFI(Extensible Firmware Interface)可扩展固件接口,是 Intel 为 PC 固件的体系结构、接口和服务提出的建议标准。其主要目的是为了提供一组在 OS 加载之前(启动前)在所有平台上一致的、正确指定的启动服务,被看做是BIOS 的继任者,或者理解为新版BIOS。

UEFI是由EFI1.10为基础发展起来的,它的所有者已不再是Intel,而是一个称作Unified EFI Form的国际组织

UEFI(Unified Extensible Firmware Interface)统一的可扩展固件接口, 是一种详细描述类型接口的标准。UEFI 相当于一个轻量化的操作系统,提供了硬件和操作系统之间的一个接口,提供了图形化的操作界面。最关键的是引入了GPT分区表,支持2T以上的硬盘,硬盘分区不受限制

BIOS和UEFI区别

BIOS采用了16位汇编语言编写,只能运行在实模式(内存寻址方式由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物理地址)下,可访问的内存空间为1MB,只支持字符操作界面

UEFI采用32位或者64位的C语言编写,突破了实模式的限制,可以达到最大的寻址空间,支持图形操作界面,使用文件方式保存信息,支持GPT分区启动,适合和较新的系统和硬件的配合使用

BIOS+MBR与UEFI+GPT

MSDN (Microsoft Developer Network) 指出,Windows 只能安装于 BIOS + MBR 或是 UEFI + GPT 的组合上,而 BIOS + GPT 和 UEFI + MBR 是不允许的。但是 BIOS + GPT + GRUB 启动Linux 是可以的

2.1.3 管理分区

列出块设备

lsblk

创建分区命令

fdisk 管理MBR分区gdisk 管理GPT分区parted 高级分区操作,可以是交互或非交互方式

重新设置内存中的内核分区表版本,适合于除了CentOS 6 以外的其它版本 5,7,8

partprobe
2.1.3.1 parted 命令

注意:parted的操作都是实时生效的,小心使用

格式:

parted [选项]... [设备 [命令 [参数]...]...]

案例:

sudo parted -l #列出当前系统上的所有磁盘#根据上一步中列出的磁盘信息,选择要进行分区的磁盘,假设选择的磁盘是/dev/sdbsudo parted /dev/sdb  #使用parted工具打开选定的磁盘#使用parted的交互式命令来进行分区,以下是一些常用的命令示例:mklabel gpt 或者 mklabel msdos     #创建一个新的分区表(GPT或MBR)格式:mkpart primary <文件系统类型> <起始位置> <结束位置>   #创建一个新的分区例如:mkpart primary ext4 1MiB 100GiB格式:rm <分区号>    #删除一个分区例如:rm 1print   #显示当前分区表和分区信息quit    #退出parted工具在完成分区操作后,可以使用其他工具(如mkfs命令)来格式化新创建的分区,并将其用于存储数据。

注意,使用parted工具进行磁盘分区当然也是一项敏感操作,需要谨慎操作并确保选择了正确的磁盘。在进行分区操作之前,备份重要数据,确保具有足够的权限来执行这些操作。

2.1.3.2 分区工具fdisk和gdisk

gdisk [device...]             类fdisk 的GPT分区工具fdisk -l [-u] [device...]     查看分区fdisk [device...]             管理MBR分区

子命令:

p 分区列表t 更改分区类型n 创建新分区d 删除分区v 校验分区u 转换单位w 保存并退出q 不保存并退出

查看内核是否已经识别新的分区

cat /proc/partations

CentOS 7,8 同步分区表:

partprobe

Centos6 通知内核重新读取硬盘分区表

新增分区用

partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force#示例:[root@centos6 ~]#partx -a /dev/sda

删除分区用

partx -d --nr M-N /dev/DEVICE#示例:[root@centos6 ~]#partx -d --nr 6-8 /dev/sda

标签: #centos安装parted #分区不能超过2t #汇编指令格式化磁盘 #汇编指令格式化磁盘的方法 #汇编指令格式化磁盘是什么