设备文件
一切皆文件: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启动
BIOS
和 UEFI
的区别
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
挂载
挂载:将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录作为其他文件访问入口的行为
卸载:解除此关联关系的过程
注意
- 挂载点下原有文件在挂载完成后会被临时隐藏,因此,挂载点目录一般为空
- 进程正在使用中的设备无法被卸载