Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

文件系统简述.pptx

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 39 Anzeige
Anzeige

Weitere Verwandte Inhalte

Aktuellste (20)

Anzeige

文件系统简述.pptx

  1. 1. 文件系统简述
  2. 2. • 统一接口 • Everything is File • 软件和硬件一体 • 设备文件-驱动-硬件
  3. 3. 系统调用 strace cat 123 2file: 1. /bin/cat ; 2. 123; execve("/bin/cat", ["cat", "123"], 0x7ffc97bab7e8 /* 40 vars */) = 0 brk(NULL) = 0x565094e46000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=110744, ...}) = 0 mmap(NULL, 110744, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f0a50f28000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) 1. openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "177ELF21130000000030>0100024035200000"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=2030928, ...}) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f0a50f26000 mmap(NULL, 4131552, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f0a5092a000 mprotect(0x7f0a50b11000, 2097152, PROT_NONE) = 0 mmap(0x7f0a50d11000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1e7000) = 0x7f0a50d11000 mmap(0x7f0a50d17000, 15072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) =
  4. 4. All from Sys_open 用户态调用Open-->中断,内核查中断向量表 --->Sysopen https://makelinux.github.io/kernel/map/
  5. 5. • Linux文件是怎么构成的? • 说明:以ext文件系统为例,由于目录也是一种特殊的文件,广义 的说文件由目录项、inode和数据块三部分组成: • 目录项:包括文件名和inode table。 • Inode:又称文件索引节点,包含文件的基础信息以及数据块的 指针。 • 数据块:包含文件的具体内容 • 详细到具体的狭义的文件和目录则是:文件=Inode+数据块,目 录=目录项。
  6. 6. 速度分层 • 介质存储----实际文件信息 • 内存----存放inode信息(包含文件快照)---很多文件系统在mount 和umount的时机进行快照 • Cache • 寄存器
  7. 7. VFS • 包装底层的一切,统一向上接口 • 用户态到内核态buffer传递 __copy_from_user unsigned long __copy_from_user ( void * to, const void __user * from, unsigned long n); unsigned long __copy_to_user ( void __user * to, const void * from, unsigned long n);
  8. 8. 读写文件时底层的工作原理
  9. 9. 数据流
  10. 10. DMA
  11. 11. Inode—文件的存在形式
  12. 12. inode • inode包含文件的元信息,具体来说有以下内容: • * 文件的字节数 • * 文件拥有者的User ID • * 文件的Group ID • * 文件的读、写、执行权限 • * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。 • * 链接数,即有多少文件名指向这个inode(软连接,硬链接) • * 文件数据block的位置
  13. 13. 每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
  14. 14. 软链接/硬链接 • Ln –s/ ln • 文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的 路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打 开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的" 软链接"(soft link)或者"符号链接(symbolic link)。这意味着,文 件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错: "No such file or directory"。这是软链接与硬链接最大的不同:文件A 指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接 数"不会因此发生变化 • 文件与目标文件的inode号码相同,都指向同一个inode。inode信息中 有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加 1。反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。 当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个 inode号码,以及其所对应block区域。
  15. 15. FS_Type,mount -t
  16. 16. 超级块 • super_block的含义: • 超级块代表了整个文件系统,超级 块是文件系统的控制块,有整个文 件系统信息,一个文件系统所有的 inode都要连接到超级块上,可以 说,一个超级块就代表了一个文件 系统。 • 在Mount时候会生成对应的 SuperBlock • mount /dev/sdb /mnt/alan
  17. 17. • Mount文件到目录 • mount -t iso9660 -o loop matlab.iso /media/cdrom0 当前183上用户目录mount nfs nas1:/uhome/engsw2/louisd on /u/louisd type nfs (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.17.13.11,mountv ers=3,mountport=635,mountproto=udp,local_lock=none,addr=172.17.13.11)
  18. 18. MTD MTD,即Memory Technology Device,是内存技术设 备。具体硬件的读写信息等都是挂载到MTD设备上的。 字符设备和块设备的区别在于前者只能被顺序读写,后者 可以随机访问;同时,两者读写数据的基本单元不同 字符设备: 以字节为基本单位,在Linux中,字符设备实现 的比较简单,不需要缓冲区即可直接读写,内核例程和用 户态API一一对应,用户层的Read函数直接对应了内核中 的Read例程,这种映射关系由字符设备的 file_operations维护 块设备: 以块为单位接受输入和返回输出,对这种设备的读 写是按块进行的,其接口相对于字符设备复杂,没有直接 到块设备层,而是直接到文件系统层,然后再由文件系统 层发起读写请求 由于块设备的I/O性能与CPU相比很差,因此,块设备的数 据流往往会引入文件系统的cache机制 注意:MTD设备既非块设备也不是字符设备,但可以同时 提供字符设备和块设备接口来操作
  19. 19. Nand存储形态 • CHIP • 数据Block • 快照Block---索引文件信息 • Block • 数据Page • 控制Page • 读写擦除次数信息 • 有效Page信息 • 文件头Block会多带文件信息Page • Page • Data • ECC信息等
  20. 20. 可以通过文件系统写,也可以驱动直接写 • 通过文件系统,抽象之后更加便利
  21. 21. Nand物理原理,此处转载,需要详情看原文 https://zhuanlan.zhihu.com/p/414611832 https://www.zhihu.com/zvideo/1515435633933430784?playTi me=453.5
  22. 22. Nand访问以Page为单位
  23. 23. 写的时间会比较长
  24. 24. Chip->Block->Page
  25. 25. CPU或者controller需要根据Nand文档去匹 配设计,然后软件对齐调试
  26. 26. SSD—Nand+Controller 有控制器做好,可以省下很多自我编程的压力 磨损均衡 垃圾回收 坏块管理 ECC(Error Correcting Code,错误检查纠正)
  27. 27. 堆叠---封装
  28. 28. EMMC • 带控制器的Nand
  29. 29. • eMMC ( Embedded Multi Media Card) 采 用统一的MMC标准接口, 把高密度 NAND Flash以及MMC Controller封装在 一颗BGA芯片中。针对Flash的特性,产 品内部已经包含了Flash管理技术,包 括错误探测和纠正,flash平均擦写, 坏块管理,掉电保护等技术。用户无 需担心产品内部flash晶圆制程和工艺 的变化。同时eMMC单颗芯片为主板内 部节省更多的空间。 •

×