概念 - 磁盘存储和文件系统

设备文件

一切皆文件:open(),read(),write(),close()
设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信

设备号码
majof number:主设备号,标识设备类型;
minor number:此设备号,标识同一类型下的不同设备

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

磁盘设备文件命名
1 /dev/DEV_FILE
2 /dev/sdX			#SAS,SATA,SCSI,IDE,USB
3 /dev/nvme0n#		#nvme协议硬盘,如:nvme0n1(第一个磁盘);nvme0n2(第二个磁盘)

虚拟磁盘
/dev/vd 或 /dev/xvd

不同磁盘标识:a-z,aa,ab...
eg:/dev/sda,/dev/sdb,...
同一设备上的不同分区:1,2,3...
eg:/dev/sda1,/dev/sda4

范例

#创建设备文件
[root@CentOS8 ~]# mknod /data/partition-sda1 b 8 1
[root@CentOS8 ~]# ll /data/partition-sda1 
brw-r--r-- 1 root root 8, 1 Aug 14 20:56 /data/partition-sda1

#挂载设备文件
[root@CentOS8 ~]# mount /data/partition-sda1 /mnt
[root@CentOS8 ~]# ls /mnt
config-4.18.0-147.el8.x86_64
efi
grub2
initramfs-0-rescue-dfa95a14ad514aefa331b6873192c475.img
initramfs-4.18.0-147.el8.x86_64.img
loader
lost+found
System.map-4.18.0-147.el8.x86_64
vmlinuz-0-rescue-dfa95a14ad514aefa331b6873192c475
vmlinuz-4.18.0-147.el8.x86_64

#可删除
[root@CentOS8 ~]# ll /data
total 0
brw-r--r-- 1 root root 8, 1 Aug 14 08:32 partition-sda1
[root@CentOS8 ~]# rm -f /data/partition-sda1 
[root@CentOS8 ~]# ll /data
total 0

硬盘类型

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

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

服务器硬盘大小
LFF		Large Form Factor 3.5寸,一般见到的那种台式机硬盘的大小
SFF		Small Form Factor 2.5寸,注意不同于2.5寸的笔记本硬盘
L、S分别是大、小的意思,目前服务器或者盘柜采用sff规格的硬盘主要是考虑增加单位密度内的磁盘容量、增强散热、减小功耗*

硬盘存储术语 CHS

CHS
采用24 bit位寻址,其中前10位表示cylinder,中间8位表示head,后面6位表示sector
最大寻址控件8GB

head	磁头,磁头数=盘面数
track	磁道,磁道=柱面数
sector	扇区,512 bytes
cylinder	柱面,1柱面=512 * sector数 / track * head数=512*63*255=7.84M

ps:CentOS5 之前版本Linux 以柱面的整数倍划分分区,CentOS6 之后可支持以扇区划分分区


LBA
LBA是一个整数,通过转换CHS格式完成磁盘具体寻址。28位寻址模式,以每扇区512位组来计算,ATA-1所定义的28位,LBA上限达到128GB;2002年采用48位LBA,同样以每扇区512位组计算容量,上限可达125P

CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式

范例

#查看CHS
[root@centos6 ~]#fdisk -l /dev/sda

Disk /dev/sda: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000853f5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         131     1048576   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2             131       12879   102400000   83  Linux
/dev/sda3           12879       16704    30720000   83  Linux
/dev/sda4           16704       26109    75545600    5  Extended
/dev/sda5           16704       16965     2097152   82  Linux swap / Solaris

范例 - 识别SSD(固态硬盘)和机械硬盘类型

#1表示机械,0表示SSD
[root@CentOS8 ~]# lsblk -d -o name,rota
NAME ROTA
sda     1
sr0     1

管理存储

使用磁盘空间过程
1 设备分区 → 2 创建文件系统 → 3 挂载新的文件系统

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

分区方式 - MBR 和GPT

MBR 分区

MBR:Master Boot Record,使用32位表示扇区数,分区不超过2T。MBR分区中一块硬盘最多有4个主分区,也可分为3主分区+1扩展(N个逻辑分区)

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

划分分区的单位:
CentOS5 之前按整柱面划分
CentOS6 版本后可按sector 划分

0磁道0扇区:512bytes
446bytes	boot loader 启动相关
64bytes		分区表,其中每16bytes标识一个分区
2bytes		55aa,即结束分区

硬盘主引导记录MBR由4个部分组成
1 主引导程序(偏移地址0000-0088H),负责从活动分区中装载,并运行系统引导程序
2 出错信息数据区,偏移地址0089-00E1H 为出错信息,00E2-01BD 全为0字节
3 分区表(DPT,Disk Partitional Table)含4个分区项,偏移地址01BE-01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
4 结束标志字,偏移地址01FE--01FF 的2个字节值为结束标志55aa

GPT 分区

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

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

GPT分区结构分为4 个区域:GPT头分区表GPT分区备份区域

BIOS 和UEFI

BIOS(Basic Input Output System 基本输入输出系统),固化在电脑主板上的程序,主要用于开机系统自检和引导操作系统。操作系统开始启动之后,BIOS的任务就完成了。

UEFI 是一种详细描述类型接口的标准。UEFI 相当于一个轻量化操作系统,提供了硬件和操作系统之间的一个接口,提供了图形化的操作界面。最关键的是引入了GPT分区表,支持2T以上的硬盘,且硬盘分区不受限制。目前新式的电脑基本上都是UEFI启动

BIOSUEFI的区别

BIOS 采用了16位汇编语言编写,只能运行在实模式下,可访问的内存空间为1MB,只支持字符界面

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

文件系统

文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。

从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩,加密

#查看支持的文件系统
/lib/modules/4.18.0-147.el8.x86_64/kernel/fs

#查看当前支持的文件系统
cat /proc/filesystems

操作系统支持的文件系统及其特性

Linux:ext2/3/4,xfs,swap,btrfs(Oracle),reiserfs
Windows:FAT32、NTFS、exFAT
Unix:FFS(fast)、UFS(unix)、JFS2

网络文件系统:NFS、CIFS
集群文件系统:GFS2、OCFS2(Oracle)
分布式文件系统:fastdfs、ceph、moosefs、mogilefs、glusterfs、Lustre

RAW:裸文件系统,未经处理或未经格式化产生的文件系统

常见文件系统特性

FAT32	最多只能支持16TB的文件系统和4GB的文件
NTFS	最多只能支持16EB的文件系统和16EB的文件
EXT3	最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件
		EXT3 目前只支持32000个子目录
		EXT3 文件系统使用32位空间记录块数量和inode 数量
		当数据写入到EXT3 文件系统中时,EXT3的数据块分配器每次只能分配一个4KB的块
		
EXT4	EXT4 是Linux系统下的日志文件系统,是EXT3 文件系统的后继版本
		EXT4 的文件系统容量达到1EB,而支持单个文件则达到16TB
		理论上支持无线数量的子目录
		EXT4 文件系统使用64位空间记录块数量和inode 数量
		EXT4 的多块分配器支持一次调用分配多个数据块
		修复速度更快

XFS		根据所记录的日志在很短的时间内迅速恢复磁盘文件内容
		用优化算法,日志记录对整体文件操作影响非常小
		是一个全64-bit的文件系统,最大可支持8EB的文件系统,而支持单个文件则达到8EB
		能以接近裸设备I/O的性能存储数据

文件系统的组成部分

内核中的模块:ext4、xfs、vfat
Linux的模拟文件系统:VFS
用户空间的管理:mkfs,ext4,mkfs.xfs,mkfs.vfat

挂载

挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为

卸载:解除此关联关系的过程

注意

  • 挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空
  • 进程正在使用中的设备无法被卸载
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值