磁盘

物理概念

物理接口
M.2 , U.2 , AIC, NGFF 这些属于物理接口。
高速信号协议
SAS,SATA,PCIe 这三个是同一个层面上的,模拟串行高速接口。
传输层协议
SCSI,ATA,NVMe 都属于这一层。主要是定义命令集,数字逻辑层。
NVMe,AHCI和IDE是传输协议(语言)。 它们运行在诸如PCIe或SATA(口头,书写)之类的传输接口之上。
现在市面上 SSD接入PC 的主要接口 是 SATA。其采用命令协议AHCI(它还支持IDE)是为寻道旋转磁盘设计的, 而不是闪存。 SATA三代 传输速率 每秒在150 MB ~ 600 MB 之间。对于SSD的大多数消费者来说,这绝对是足够的。
PCIe(PCI Express)取代SATA 作为最新的高带宽接口。
NVMe是最新的高性能和优化协议,取代了AHCI,并支持PCIe技术。
RAID 0:如果你有n块磁盘,原来只能同时写一块磁盘,写满了再下一块,做了RAID 0之后,n块可以同时写(并发write),速度提升很快,但由于没有备份,可靠性很差。n最少为2。
RAID 1:正因为RAID 0太不可靠,所以衍生出了RAID 1。如果你有n块磁盘,把其中n/2块磁盘作为镜像磁盘,在往其中一块磁盘写入数据时,也同时往另一块写数据。坏了其中一块时,镜像磁盘自动顶上,可靠性最佳,但空间利用率太低。n最少为2。
RAID0性能最高,RAID1可靠性最高
可以用ssd来做磁盘阵列,如果要性能就RAID0,可靠性就RAID1

文件系统相关

Once a file system is established the block size remains the same. Some partitioning tools can change this after the fact, but not while the OS is running.

A sector has traditional been a fixed 512 byte size, but a few drives have 4096 bytes sectors.

A sector is the smallest individual reference-able regions on a disk.

The block size refers to the allocation size the file system uses. The common options are 512, 1024, 2048, 4096, 8192, 16384, or 32678. Generally anything larger would be so inefficient nobody would use it, and you can’t go smaller than 1 disk sector.

Sure you can write 10 bytes to a file, but behind the scenes it is allocated 1 block whether you use it all or not.

操作系统记录了文件的block number,读取的时候是根据block number定位到具体的sector,block是操作系统分配的,操作系统(文件系统)记录block和sector的对应关系

所以操作系统一次读取是以block为单位的,比如sector size是4 kb, block size可能是4kb也可能是8kb或者更多,哪怕你只需要一个字节的数据,但是读取的时候仍然读取了8kb在操作系统缓存

格式化是操作系统的功能,操作系统可以对整个硬盘格式化分区为ntfs格式,但是分区后也可以用windows自带的压缩卷功能分出一块新的区域用来安装linux,linux再对这块新的空闲区域进行格式化分区为ext3格式

参考

https://medium.com/r/?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDisk_sector
https://medium.com/r/?url=http%3A%2F%2Fwww.mathcs.emory.edu%2F~cheung%2FCourses%2F377%2FSyllabus%2F1-files%2Fintro-disk.html
https://docstore.mik.ua/orelly/other/LRH/chp-2-sect-4.html
https://www.zhihu.com/question/48972075
kafka存储 https://medium.com/@durgaswaroop/a-practical-introduction-to-kafka-storage-internals-d5b544f6925f