linux_inode和block
linux里一切皆文件
什么是文件属性?
文件本身带有的信息, 包括:索引节点编号、 文件类型以及权限、硬链接个数(备份作用)、所有者、所属组、文件大小、修改月、修改日、时分
151387 -rw-------. 1 root root 1.2K Nov 7 21:57 anaconda-ks.cfg
索引节点编号,相当于人的身份证,全国唯一,linux系统中唯一,系统读取文件时,首先通过文件名找到节点编号,然后才能读取到文件内容
ll -hi # 查看当前目录下文件信息
在linux中,文件和程序的存在,必须要有用户和组满足相应的存在需求
严格说,文件名不是文件属性
stat 文件 看某一个文件的详细属性
echo 'Hello Word!' > Name.txt # 模拟数据
stat Name.txt # 查询文件信息
结果:
File: `Name.txt'
Size: 12 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 151735 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-11-21 16:11:18.435976522 +0800
Modify: 2017-11-22 15:19:37.993143055 +0800
Change: 2017-11-22 15:19:37.993143055 +0800 # 包含文件 名、文件大小,inode 节点编号,权限信息,硬链接信息、访问时间、改变时间、修改时间、文件权限、所属主、所属组等信息
什么是索引节点?
inode 索引节点
硬盘首先分区,然后格式化创建文件系统(etx4),分区后都有 Inode(很多个) 和 Block(很多个)两个部分内容
Inode: 存储数据属性信息(ls -l 结果),包含指向文件实体的指针等,唯独不包含文件名
作用: 为每个文件进行信息索引
Block: 存放文件数据内容
inode是有大小的,Centos5,非启动分区128字节, Centos6,非启动分区256字节,/boot分区inode都为128字节,分区被格式化创建文件系统之后,定下来的,格式化以后就无法更改其大小,企业环境没有更改需求
如何查询inode和block使用情况?
df -i # 查询每个分区已经使用的i和剩余i
df -h # 查询分区block使用情况
inode总结:
- 磁盘分区后格式化为etx4文件系统后,产生一定数量的inode和block
- inode存放文件属性信息以及指向文件实体的指针
- ext3/ext4文件系统block存放文件的实际数据
- inode表现形式为一串数字,不同文件对应的inode在os中是唯一的
- ext3/ext4文件系统下,正常情况一个文件创建有且只能占用一个inode和至少占用一个block,大文件占用多个block,如果一个block未占完,剩余空间也无法使用
- block 的大小一般有1k,2k,4k,除引导分区1k外,其他分区为4k
block总结:
- 磁盘读取数据是按block为单位读取
- 一个文件可能占有多个block,每读取一个block就会消耗一次磁盘IO,想提升IO性能,尽可以一次读取尽量多
- 一个block只能存放一个文件,也就是无论文件多小,这个block剩余空间浪费掉了,假如一个文件大小为4k,但是一个小文件1k,3k剩余空间被浪费了,磁盘IO是衡量磁盘性能重要指标
- 根据业务需求,确定block大小,对于大文件设置block大一点,对于小文件block小一点,可以选择消耗磁盘空间换性能
- 磁盘分区格式化时候设置,命令: mkfs.ext4 -b 2048 -i 256 -b 设置block大小,-i设置inode大小
- 企业文件一般比较大,ext3/ext4一般设置为 4k,centos文件系统为xfs文件系统,生成环境文件系统为4k
读文件过程?
先找到文件名,然后读取文件的inode,通过inode确认你是否有权限查看文件,然后通过inode指向去读取文件数据
linux_inode和block的更多相关文章
- linux_inode 和 block
linux里一切皆文件 什么是文件属性? 文件本身带有的信息, 包括:索引节点编号. 文件类型以及权限.硬链接个数(备份作用).所有者.所属组.文件大小.修改月.修改日.时分 什么是索引节点? ino ...
- Objective-C中block的底层原理
先出2个考题: 1. 上面打印的是几,captureNum2 出去作用域后是否被销毁?为什么? 同样类型的题目: 问:打印的数字为多少? 有人会回答:mutArray是captureObject方法的 ...
- iOS 键盘添加完成按钮,delegate和block回调
这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...
- python中IndentationError: expected an indented block错误的解决方法
IndentationError: expected an indented block 翻译为IndentationError:预期的缩进块 解决方法:有冒号的下一行要缩进,该缩进就缩进
- JDBC Tutorials: Commit or Rollback transaction in finally block
http://skeletoncoder.blogspot.com/2006/10/jdbc-tutorials-commit-or-rollback.html JDBC Tutorials: Com ...
- 嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(i ...
- 嵌入式&iOS:回调函数(C)与block(OC)回调对比
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...
- Block解析(iOS)
1. 操作系统中的栈和堆 我们先来看看一个由C/C++/OBJC编译的程序占用内存分布的结构: 栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方 ...
- CSS学习笔记——包含块 containing block
以下内容翻译自CSS 2.1官方文档.网址:https://www.w3.org/TR/CSS2/visudet.html#strut 有时,一个元素的盒子的位置和尺寸根据一个确定的矩形计算,这个确定 ...
随机推荐
- Git知识总览(二) git常用命令概览
上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...
- JavaScript数组去重的10种方法
「数组去重」的确是个老生常谈的问题了,但是你真正的掌握了吗?平时开发中是不是用最简单粗暴的方法来去重?注意到它的性能问题了吗?当面试官对你回答的四个去重方法都不满意时你可以想出更简单且性能能更好的方法 ...
- Centos6.5 登录时,提示Module is unkown
前一段时间,因工作需要在物理机上装了一个Centos6.5,但是,用了一段时间,发现再登录时,无论如何也登不进去了,并且也不提示用户名或者密码错误.我一度以为是在profile以及.bashrc或者. ...
- Java学习笔记17(面向对象十:综合案例)
在面向对象这个专题的最后 结合前面多篇文章,用到了面向对象的很多方面知识,做了一个简单的案例: 饭店案例: package hotel; /* * 酒店的员工类 * 员工共同特点:姓名,工号,工作方法 ...
- H5开发中的故障
本篇博文会不断的收录我在做H5页面时遇到的问题以及解决方案,当然有的问题,我也没有遇到好的解决方案,所以如果你有解决的办法,请务必不吝赐教! H5开发中的故障 微信APP返回按钮不刷新页面 ...
- PHP SPL迭代模式
mode 有模式的两个正交组可以设置: 1.迭代的方向 SplDoublyLinkedList::IT_MODE_LIFO(堆叠型) SplDoublyLinkedList::IT_MODE_FIFO ...
- 【eclipse】Target runtime Apache Tomcat v7.0 is not defined解决
在eclipse中导入项目时提示Target runtime Apache Tomcat v7.0 is not defined, 解决方法:右键项目--properties--targeted ru ...
- 下载的js文件本地编辑器打开中文乱码如何解决
今天遇到的小问题,已解决,直接上图 下载直接打开是这样的 用记事本打开 另存为utf-8格式 正常了!
- Cain工具ARP欺骗攻击
OS:Win7工具:Cainhttp://pan.baidu.com/s/1xq9lW 密码:409z 网络:本机和被攻击电脑有线连接路由器. Cain是有名的局域网嗅探工具,有丰富的功能.比如可以解 ...
- ASP.NET Core Razor中处理Ajax请求
如何ASP.NET Core Razor中处理Ajax请求 在ASP.NET Core Razor(以下简称Razor)刚出来的时候,看了一下官方的文档,一直没怎么用过.今天闲来无事,准备用Rozor ...