linux里一切皆文件

什么是文件属性?

  文件本身带有的信息, 包括:索引节点编号、 文件类型以及权限、硬链接个数(备份作用)、所有者、所属组、文件大小、修改月、修改日、时分

什么是索引节点?

  inode 索引节点编号,相当于人的身份证,全国唯一,linux系统中唯一,系统读取文件时,首先通过文件名找到节点编号,然后才能读取到文件内容

  在linux中,文件和程序的存在,必须要有用户和组满足相应的存在需求

  严格说,文件名不是文件属性,因为文件名存放在上级目录的block中

  硬盘首先分区,然后格式化创建文件系统(etx4),分区后都有 Inode(很多个) 和 Block(很多个)两个部分内容

Inode:

  存储数据属性信息(ls -l 结果),包含指向文件实体的指针等,唯独不包含文件名

  centos 5 中 inode 都是128bytes, Centos6 /boot分区 126bytes,其他分区为 256bytes

作用: 为每个文件进行信息索引

Block:

  存放文件数据内容

  有1k,2k,3k,4k,默认4k

inode总结:

  1. centos6默认ext4文件系统,centos7默认xfs文件系统

  2. 磁盘格式化,写入文件系统。会产生一定量的inode和block,block大小默认4k,blcok才是存放数据,inode存放文件属性且唯一

  3. inode 在centos6中,/boot分区128bytes,其他分区256bytes,当系统中产生大量小文件,将会消耗大量inode数量

  4. 由于文件名存放在上级目录的block中,文件名不是该文件属性

  5.ext4文件系统中 一个文件至少占用一个inode和block,未占满block剩余空间无法使用

block总结:

  1. 磁盘读取数据是按block为单位读取,而系统读取数据按扇区为单位

  2. 一个文件可能占有多个block,每读取一个block就会消耗一次磁盘IO,想提升IO性能,尽可以一次读取尽量多

  3. 一个block只能存放一个文件,也就是无论文件多小,这个block剩余空间浪费掉了,假如一个文件大小为4k,但是一个小文件1k,3k剩余空间被浪费了,磁盘IO是衡量磁盘性能重要指标

  4. 根据业务需求,确定block大小,对于大文件设置block大一点,对于小文件block小一点,可以选择消耗磁盘空间换性能

  5. 磁盘分区格式化时候设置,命令: mkfs.ext4 -b 2048 -i 256   -b 设置block大小,-i设置inode大小

  6. 企业文件一般比较大,ext3/ext4一般设置为 4k,centos文件系统为xfs文件系统,生成文件系统block为4k

读文件过程?

  先找打文件名,然后读取文件的inode,通过inode确认你是否有权限查看文件,然后通过inode指向去读取文件数据

inode 和block总结:

  1. 磁盘写入文件系统的时候,产生一定量的block和inode

  2. inode存放文件属性信息,block存放真正文件数据,centos6中ext4文件系统,默认block为4k,/boot 分区inode 128bytes, 其他分区 256bytes

  3. 文件名不是文件属性,它存放在上级目录的block中

  4. 一个大文件占用多个block,当某个block未占完,剩余的空间无法使用

  5. 磁盘IO读取单位为一个block,每读取一个block消耗一次磁盘IO

最新文章

  1. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
  2. webBrowser 加载网页
  3. Android中Activity的生命周期
  4. js拖拽换位置,使用数组方法
  5. C#各类型大小
  6. 【easyui】—easyui教你编写一个前台的架子
  7. ok6410串口裸机总结
  8. POJ3056:The Bavarian Beer Party(区间DP)
  9. How to get Directory size in IsolatedStorage of Windows Phone 8 App
  10. hdu 4411 arrest 最小费用流
  11. AOP Concepts
  12. php代码的一些高效写法
  13. 基于Sql Server 2008的分布式数据库的实践(三)
  14. 应届毕业生如何通过学习Linux系统选择一份高薪职业
  15. python进阶学习笔记(三)
  16. git --- 持续更新
  17. Page Lifecycle API
  18. 使用 git log、git diff 命令时出现 ESC[33 和 ESC[m 乱码的解决办法
  19. 基于 Python 和 Pandas 的数据分析(3) --- 输入/输出 基础
  20. Storm API,Tutorial,Trident,Windowing BOOKS

热门文章

  1. timeline自适应时间轴
  2. icon图标和文字整体居中在button按钮
  3. Python import其他层级的模块
  4. COM学习(四)——COM中的数据类型
  5. redux入门指南
  6. 管理 MariaDB 用户账户
  7. 移动端300ms点击延迟
  8. Python3 决策树
  9. Java与算法之(1) - 冒泡排序
  10. CSS3让长单词与URL地址自动换行——word-wrap属性