https://www.cnblogs.com/kexinxin/p/9939090.html
"
I/O控制为最底层,由设备驱动程序和中断处理程序组成,实现内存与磁盘之间的信息传输。设备驱动程序可以作为翻译器。其输入由高层命令组成,如"retrieve block 123"。其输出由底层的、硬件特定的命令组成,这些命令用于控制硬件控制器,通过硬件控制器可以使I/O设备与系统其它部分相连。
基本文件系统只需要向合适的设备驱动程序发送一般命令就可对磁盘上的物理块进行读写。每个块由其数值磁盘地址来标识(例如,驱动器I,柱面(cylinder)73,磁道(track)3,扇区(sector) 10)。
"
--------------------------
计算机是如何找到确定路径下的文件的?
————————————————文件系统如何存取文件的:
1)、根据文件名,通过Directory里的对应关系,找到文件对应的Inodenumber
2)、再根据Inodenumber读取到文件的Inodetable
3)、再根据Inodetable中的Pointer读取到相应的Blocks
————————————————
文件系统是如何将path转变为真正的block地址的。简而言之,inode树组成了目录树,通过树形查找获取磁盘信息。也就是说目录内容:文件名vsinode号,或者目录名vsinode号。每个目录也有一个inode号和目录内容。通过一个目录一个目录的寻找,就能通过路径找到文件。每读一个目录或者文件,两步走,知道inode号,读block的data数据。
me:文件系统是对文件的组织,分成了目录和文件,其实对于磁盘来说,只记录着inode和block信息,block里面记录着data信息,读磁盘,就是要么获取磁盘的inode信息,要么获取磁盘的block信息,无论inode信息还是block信息,对于磁盘来说,传过来的都是一个地址和偏移,磁盘控制器拿到这个信息,然后吧这个地址转换成磁道扇区等信息???
文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。
格式化磁盘,就是把文件系统写入磁盘,把磁盘分成inode和data区,并且还有一个超级块专门记录inode和data空间剩余情况,
eg:硬盘的使用
1.分区
2.创建文件系统(格式化)
3.挂载 (把设备名和目录名关联起来)
4.硬盘如果不进行格式化,那么往硬盘上存储和读取数据的时候只能以二进制(0和1)方式来进行,而不能以文件的方式进行访问.
5. hexdump -C /dev/sda | less 直接以二进制或者相关进制的方式来读取硬盘上的数据.
eg:分区方式 分区必须是在一个连续的空间
4个主分区 或者 3个主分区+1个扩展分区+N个逻辑分区
1.MBR分区
1. hexdump -C /dev/sda -n 512 查看磁盘上前面的512个字节内容
2. dd if=/dev/sda of=/data/mbr_bak bs=1 count=512 读取二进制文件内容,每次读取一个字节 总共读取512个字节
3. dd if=/dev/zero of=/dev/sda bs=1 count=512 用0设备读取数据写到其它二进制文件,每次写入一个字节,总共写512个字节
4. dd if=/data/mbr_bak of=/dev/sda bs=1 count=512 恢复二进制文件内容
5. dd if=/dev/zero of=/dev/sda bs=1 count=2 seek=510 把第511和512个字节清0
2.GPT分区
4个区域:EFI信息区(GPT头)、分区表、GPT分区、备份区域
eg:管理分区
列出块设备 lsblk lsblk:逻辑块
fdisk创建 MBR分区 fdisk:物理块
gdisk创建 GPT分区
parted高级分区操作
partprobe 同步内存和磁盘上的分区表信息 centos6上无效
partx -a /dev/DEVICE centos6 同步新增分区
partx -d /dev/DEVICE centos6 同步删除分区
7.分区表存储在两个地方,一个在内存,一个存储在磁盘.
fdisk 查看磁盘上的分区表信息 fdisk:物理块
lsblk 等其它命令查看的是内存上的分区表信息 lsblk:逻辑块