七、Linux入门之磁盘存储和文件系统

本文详细介绍了Linux系统中磁盘存储和文件系统的基础知识,包括硬盘设备、分区方式(MBR和GPT)、BIOS与UEFI的区别、分区管理工具如fdisk和gdisk、文件系统类型及其特性、以及文件系统的创建和挂载。同时,文章还涵盖了磁盘分区的寻址方式、磁盘管理工具如df和du、以及RAID和LVM的原理与管理。此外,内容还涉及到了光盘、交换分区、以及Linux中文件系统检查和修复的相关工具。
摘要由CSDN通过智能技术生成

在Linux系统上一切皆文件,各种硬件设备在Linux上可以找到对应的设备文件,系统通过这些设备文件对硬件进行各种操作

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

常用操作接口:open(), read(), write(), close(),使用open接口打开设备文件,read或write接口从设备读取或写入数据,最后close关闭

设备类型:块设备( block,存取单位“块”,如:磁盘 )、字符设备:( char,存取单位“字符”,如:键盘 )

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

硬盘设备

设备文件:通常存放在/dev 目录下,通常以sd开头,如:SCSI、SATA、 SAS、IDE、USB等的设备文件名通常为:/dev/sda、/dev/sdb、 ...,最后的a、b为先后序号,常用序号:a-z,aa,ab…,而同一设备上的不同分区以1、2、 ...排序,如:/dev/sda1, /dev/sda5。虚拟磁盘:/dev/vd 、/dev/xvd

接口类型:

       并行:IDE( 133MB/s )、SCSI( 640MB/s )

       串口:SATA( 6Gbps )、SAS( 6Gbps )、USB( 480MB/s )

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

                                                 

        上图为传统磁盘盘面划分结构,从盘面中心点往外,磁道数量相同,因为每个扇区大小相同,造成了盘面外圈的物理空间的浪费,所以现在一般采用如下图的划分方法,即ZBR(Zoned Bit Recording),区位记录磁盘扇区结构
,这样每个扇区面积相等,盘面外圈可以划分更多的扇区,同样大小的盘面就可以存储更多的数据。

   

磁道号从0开始逐数增加,从盘面外圈开始向内数。

扇区:每个磁道以512字节等分为多个弧段,这个弧段就是扇区,扇区是磁盘控制器的最小读写单元。通常情况下每个扇区大小为512字节,但不是绝对的。

柱面:将所有盘片相同磁道数的磁道划分为柱面,标记方式是由外向内从0开始逐数增加。之所以划分柱面,是因为所有磁盘同步旋转,所有磁头同步移动,所有的磁头在任意一个时刻总是会处在同一磁道同一扇区上。

读写数据时,任意一段数据总是按柱面来读写的,所以盘片越多,读写所扫的扇区数就越少,所需的时间相对就越少,性能就越好。

向磁盘写数据是从外圈柱面向内圈的,只有写完一个柱面才写下一个柱面。

磁盘容量大小由扇区数、磁道数、盘面数(每个盘面都有一个磁头,也可以是磁头数)决定

磁盘大小=磁头数(headers) × 每个磁道上的扇区数(sectors) × 柱面数(cylinders) × 512

磁盘大小=units × 柱面数据(cylinders)

 

固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致

相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍

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

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

 磁盘寻址方式:CHS与LBA

        CHS:采用24bit位寻址,其中前10位表示柱面( cylinder ),中间8位表示磁头( head ),后面6位表示扇区(sector),最大寻址空间为8GB,即 8GB=2^10 × 2^8 × 2^6  × 512。由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式

        LBA(logical block addressing):LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址,ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位LBA上限达到128 GiB。2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes。在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

磁盘分区 

为了优化磁盘I/O性能、实现磁盘空间配额限制、提高修复速度、隔离系统和程序、安装多个操作系统OS、采用不同文件系统,需要对磁盘进行分区。

分区方式:MBR,GPT

MBR分区:

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

        按柱面进行分区,并规定第0磁道0扇区中的512bytes 为硬盘主引导区域

        硬盘主引导分成4个部分:

                1、主引导程序,占446bytes,其中偏移地址0000x--0088x,它负责从活动分区中装载,并运行系统引导程序;

                2、0089x--00E1x为出错信息数据区,00E2x--01BDx全为0字节

                3、分区表(DPT,Disk Partition Table)含4个分区项,占64bytes,其中每16bytes标识一个分区,偏移地址01BEx--01FDx,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4;MBR分区中一块硬盘最多有4个主分区,也可以3主分区+1扩展(N个逻辑分区),每个分区项16字符用途如下:

                        第1字节:引导标志,若值为80x表示活动分区,若为00x表示非活动分区

                        第2、3、4字节:分区起始位置,第2字表磁头号、第3字节低6位表示扇区号、第3字节高2位到4字节表示柱面号

                        第5字节:分区类型符,00表示未设置文件系统、06表示FAT16基本分区、0B表示FAT32基本分区、05表示扩展分区、07表示NTFS分区、0F表示(LBA模式)扩展分区等。

                        第6、7、8字节:分区结束位置,第6字表磁头号、第7字节低6位表示扇区号、第7字节高2位到8字节表示柱面号

                        第9--12字节:表示分区已使用的扇区数

                        第13--16字节:表示分区所占扇区数

                4、分区标识位,占2bytes,偏移地址01FEx--01FFx的2个字节值为结束标志55AA,系统找不到标识位,将无法识别磁盘分区

                分区结构如下: 

        备份/还原MBR的启动信息:(0磁道0扇区的前446个字节)

                dd if=/dev/sda of=start.bak bs=1 count=446           备份

                dd if=start.bak of=/dev/sda bs=1 count=446           还原

        备份/还原MBR的分区表信息:(0磁道0扇区的倒数66个字节)

                dd if=/dev/sda of=dpt.bak bs=1 count=66 skip=446        备份

                dd if=dpt.bak of=/dev/sda bs=1 count=66 seek=446       还原

        注意:分区信息被损坏后,使用光盘启动后是找不到原来的磁盘分区信息,所以最好备份到其地方

 

GPT分区

        GPT( GUID(Globals Unique Identifiers)partition table ):支持128个分区,使用64位,支持8Z(512Byte/block)、64Z(4096Byte/block)

        使用128位UUID(Universally Unique Identifier)( 可使用uuidgen 命令生成UUID)表示磁盘和分区 GPT分区表自动备份在头和尾两份,并有CRC校验位

        UEFI(Unified Extensible Firmware Interface 统一可扩展固件接口)硬件支持GPT

        GPT分区结构:

BIOS+MBR与UEFI+GPT

分区管理工具

        列出块设备:lsblk

        创建分区工具:

                fdisk 创建MBR分区

                gdisk 创建GPT分区

                parted 高级分区操作

                重新设置内存中的内核分区表版本:partprobe [/dev/DEVICE](一般在CentOS 5、7使用)

                查看内核是否已经识别新的分区:cat /proc/partations

        parted命令

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

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

                        parted /dev/sdb mklabel gpt|msdos

                        parted /dev/sdb print

                        parted /dev/sdb mkpart primary 1 200(默认M)

                        parted /dev/sdb rm 1

                        parted –l                 列出分区信息

        partx命令(一般在centos6中使用)

                添加分区

                        partx -a  /dev/DEVICE

                        kpartx -a /dev/DEVICE -f: force

                删除分区用

                        partx -d --nr M-N /dev/DEVICE

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值