1、磁盘-数据存储-两种磁盘
磁盘:持久化的存储设备-两种磁盘介绍- 机械磁盘: HDD,由盘片、磁头组成,数据存在盘片的环形磁道上,读写时,磁头移动定位到数据的磁道,进行数据读写
- 固态磁盘: SSD,由固态电子元器件组成,不需要磁头寻址,所以,不管理连续io还是随机io,都比机械盘快。
2、磁盘-数据存储-文件-linux中,一切都是文件
- 磁盘文件系统:ext4、xfs、nfs
- 内存文件系统:基于内存的文件系统、proc/sys
- 网络文件系统,用来访问其他计算机数据的文件系统,nfs、smb
3、磁盘-数据存储-基本概念
- 扇区sector: 磁盘组成的最小单元(512b),磁盘磁道中一个弧段块 Block块:
- ,块=2”x 扇区
- linux:类似Ext4文件系统,就是磁盘分块
- windows: 类似NTFS文件系统,也是块,只是被叫做簇
- 页page:操作系统与内存数据交换的最小单位
- 缓冲区: buffer 内存与磁盘速度不匹配,在数据与磁盘进行IO时,数据先进入缓冲区;
- 页缓存:Linux内存中对磁盘部分数据的副本,加快程序读取磁盘的速度和进程间数据共享
4、磁盘-磁盘分区
- 磁盘分区:基本分区(primary partion)、扩展分区(extension partion)
- 基本分区,不能再分区
- 扩展分区,必须进行二次分区,才能使用。再分区就是逻辑分区
- linux中IDE设备分区符为hd开头
- hd=Hard Disk 表示硬盘是IDE(或ATA)并行接口
- linux中SCSI设备分区符为sd 开头
- sd=SerialATA Disk 表示硬盘是scsi,SATA串行接口,u盘也是scsi,所以u盘也是
- sda vmware中把磁盘做成scsi设备,所以硬盘名称是sda
- fdisk -l查看系统分区详细信息
5、 磁盘阵列RAID-大公司用
- RAID0: 数据分片存在2块磁盘,读写速度提升2倍,但是,数据没有冗余,万一数据出错,很难恢复
- RAID1:相同数据冗余存入2块磁盘,写速度不变,读速度提升2倍,数据有冗余,恢复数据很简单
- RAID5:数据分片和校验码混合存储3份,读写速度提升2倍,数据没有冗余,但是有校验,数据恢复时,比较容易。
- RAID10:2块磁盘1组先做RAID1,多组RAID1,再做RAID0。读写速度N倍 n为组数
6、磁盘-虚拟文件系统
- 虚拟文件系统(Virtual File System,简称VFS)是Linux内核的子系统之一,它为用户程序提供文件和文件系统操作的统一接口,屏蔽不同文件系统的差异和操作细节。借助VFS可以直接使用open()、read()、write()这样的系统调用操作文件,而无须考虑具体的文件系统和实际的存储介质
- 通过VFS系统,Linux提供了通用的系统调用,可以跨越不同文件系统和介质之间执行,极大简化了用户访问不同文件系统的过程。另一方面,新的文件系统、新类型的存储介质,可以无须编译的情况下,动态加载到Linux中
7、磁盘-文件I/O
文件操作:先open、再read()write()、最后close关闭文件读写的不同,I/O不同:
- 是否利用标准库缓存:缓存io和非缓存io
- 是否利用页缓存: 直接io和 非直接io
- 直接io:跳过操作系统的页缓存,直接与文件系统交互来访问文件
- 非直接io:文件读写时,先给页缓存,再由内核调用,写入磁盘
- 是否阻塞自身运行: 阻塞io和非阻塞io
- 阻塞io:如果没有获得响应,就阻塞当前线程
- 非阻塞io:不阻塞当前线程
- 是否等待响应结果: 同步io 和异步io
-
同步io:要一直等待整个io完成,才能获得io响应
-
异步io: 不等待io完成,可以执行另外的
-