linux---10-20

linux文件属性详解:

[[email protected] robin]# ls -ihl /home/robin/test.txt
398606 -rw-r--r--. 1 root root 2315 Mar 13 21:00 /home/test.txt

各列对应的解释如下:

inode节点号 文件类型权限 硬链接数 属主 属组 文件/目录大小 最近修改日期 文件/目录名

398606       -rw-r--r--.  1       root root   4M        Mar 13 21:00   /home/test.txt

inode节点号:相当于一本书的目录,我们要看这本书,先看这本书的目录,对计算机而言,读取文件的时候先找inode节点号

文件类型权限:-/d//l/s/c/b 代表文件类型,后面的9位代表文件的基本权限 .在Centos 5中没有点。Centos 6中才有点,这个点是和Selinux相关的。如果把Selinux关掉,然后新创建文件就没有权限位后面的点了。??

硬链接数:注意不是软连接数

属主:文件所有者

属组:文件组

大小:目录默认大小为4K,(因为在linux中,文件系统格式化时,Centos6的非系统分区,它的块大小是4K)

时间:mtime修改时间(而不是atime、ctime)

############分隔符############

inode概述:

硬盘要分区,然后格式化,创建文件系统。

Inode,中文的意思是索引节点(Index node),在每个linux存储设备或存储设备的分区被格式化为ext3、ext4文件系统后,一般都有两部分:第一部分是Inode(很多个),第二部分是Block(很多个)---格式化的实质是:创建可以存放文件的格式(ext3、ext4)。

Block 是用来存储实际数据用的。

而inode就是用来存储这些数据属性信息的(也就是ls -l的结果),inode包含的属性信息包括文件大小、属主、归属的用户组、读写权限、文件类型、修改时间、还包含指向文件实体的指针的功能(inode节点--block的对应关系)等,但是,唯独不包含文件名。inode除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode的数值。系统根据指令,即可通过inode的值最快的找到相应的文件实体。文件名、inodeblock之间的关系如下;

这张图是linux的ext4文件系统,不同的文件系统,这种关系是不同的。oldboyfile是ls -l看到的文件名,这个文件在磁盘或者分区上对应唯一的一个inode,inode中存放ls -l 显示的属性信息,但是不包含文件名,文件名存放在文件名上级目录的block中,inode中还存放一个指向存放具体数据block的一个指向。所以读取文件时,先找文件名,然后找文件名对应的inode,在这根据文件的权限(rw-r--r--)判断你是否允许访问,如果允许,那么inode就带你找到存放文件对应数据的block。一个文件会唯一的对应一个inode,但是inode下面对应的block不只一个,因为block的大小,在Centos6中默认是4K,但是放一个视频4K明显装不下,所以就会有很多的block。

举例理解:整本书就是一块磁盘或分区,首页的目录索引就相当于inode,每一页相当于一个block(这个页面存放具体的文字内容)。

所以查看文件的时候,都是通过文件名找到inode,然后根据inode的信息再找到存放文件数据的block。

因为inode要存放文件的属性信息,所以inode是有大小的,Centos5 inode的默认大小是128K,而Centos6 inode的默认大小是256字节(非/boot/分区是256K,/boot分区是128K),inode的大小在文件系统被格式化后就无法更改了,格式化前可以指定inode大小,但是一般工作环境没有这个需求。

查看Inode大小的命令

[[email protected]C6]# dumpe2fs /dev/sda3 | grep -i "Inode size"  ----/dev/sda3是非/boot分区
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               256

[[email protected]C6]# dumpe2fs /dev/sda1 | grep -i "Inode size"  ----/dev/sda1是/boot分区
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               128

注意/boot分区和非/boot分区的Inode size 和block size 可能是不一样的

查看磁盘的inode使用量

[[email protected] ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/xvda2     1687552 81114 1606438    5% /
tmpfs           480300     1  480299    1% /dev/shm
/dev/xvda1       76912    38   76874    1% /boot

查看磁盘空间使用量

[[email protected] ~]# df -Th
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/xvda2     ext4    26G  3.1G   21G  13% /
tmpfs          tmpfs  1.9G     0  1.9G   0% /dev/shm
/dev/xvda1     ext4   291M   34M  243M  13% /boot

小结:

1)、磁盘分区格式化后成为ext3/ext4后会生成一定数量的inode和block,

2)、inode是索引节点,作用是存放文件的属性以及作为文件的索引(指向文件的实体block)

3)、inode是一块存储空间,Centos 6非/boot分区大小默认是256K,Centos 5非/boot默认是128K

4)、inode是一串数字,对应不同的文件,inode在文件系统里是唯一不同的(文件系统中的***)

在文件系统中也有inode数字是一样的,那么及时硬链接文件,这样的文件可以认为是一个文件因为inode相同,所以可以这么说inode相同的文件为一个文件,或者互为硬链接文件

eg:

[[email protected] robin]# touch a
[[email protected] robin]# ln a b

[[email protected] robin]# ll -ihl *
398607 -rw-r--r--. 2 root root  0 Mar 13 23:07 a
398607 -rw-r--r--. 2 root root  0 Mar 13 23:07 b

5)、inode相同的文件为一个文件,或者互为硬链接文件

6)、一个文件至少要占用一个inode和一个block

7)、ext3和ext4文件系统block存放的是文件的实际内容的、

8)、block的大小一般有1K,2K,4K其中引导分区等位1K,其他普通分区为4K(C6),

9)、如果一个文件很大,可以占用多个block;如果一个文件很小,至少占一个block,并且剩余空间浪费。

10)、inode 大小查看:dumpe2fs /dev/sda3 | grep -i "Inode size"

inode 总量查看:dumpe2fs /dev/sda1 | grep -i "Inode count"

inode 总量和使用量查看:df -i

11)、如何生存及制定inode的大小

mkfs.ext4 -b block-size -I inode-size /dev/sdb

mkfs.ext4 -b 2048 -I 256 /dev/sd

有关block的知识

1,磁盘读取数据是按block为单位读取的,一次性要读就读一个block的内容。

2,一个文件可能占用多个block,每读取一个block就会消耗一次磁盘IO

普通硬盘的延时很大,所以我们应该尽量不去访问磁盘IO,或者是一次性尽量读多的数据。这样磁盘IO才会更少。block的块大一些,一次性读取的数据就会多一些。

3,如果要提升磁盘IO,那么就要尽可能一次性读取数据尽量的多。

4,一个block只能存放一个文件的内容,无论内容有多小,如果block 4K存放1K的文件,那么剩余的3K就浪费了。

5,所以block并非越大越好,block太大,对于小文件就会浪费磁盘空间,例如:1000K的文件,4Kblock占用250个,1Kblock占用1000个,访问效率谁更高?消耗IO分别为250次和1000次(磁盘读取数据是按block为单位读取的,一次性要读就读一个block的内容)。

6,大文件(大于16K)一般设置block大一点,小文件(小于1K)一般设置block小一点。

7,block太大例如4K,文件都是0.1K的,大量浪费磁盘空间。

8,block的设置也是格式化分区的时候设置的。

mkfs.ext4 -b block-size -I inode-size /dev/sdb

mkfs.ext4 -b 2048 -I 256 /dev/sd

9,文件较大时,block设置大一些会提升磁盘访问效率,ext3/ext4一般设置为4K

10,查看block size 的大小

dumpe2fs  /dev/sda3 | grep -i "block size"

Block块越大对于单个小文件(0.5K)多的业务,会非常浪费磁盘空间,因为一个文件无论多大都会必须占用至少一个inode和一个block,磁盘读取数据是按block为单位读取的,但是对于大文件,可以提升读取的效率,因为如果block太小,就要读多个block,这样就消耗磁盘IO,如果block大,则会读较少的block就读完数据,从而减少磁盘IO。

当前的生产环境一般设置为4K,特殊的业务(比如视频),可以增大block(#注:ext4还不支持太大的block)

block分大了,浪费空间,分小了,影响磁盘读取性能。

文件都是1M的情况下,如果block是4K,需250个,如果block是1K,则需要1000个,从读取速度来看,读一个block就是一个IO,则IO消耗分别为250和1000。所以可以归纳结论为:当文件本身比较大的时候,block设置的大点好,会提升磁盘访问效率。ext3、ext4一般设置为4K。

生产环境:block的大小如何配置?

如果是大文件的业务,block尽量设置大一点

如果是小文件的业务,block尽量设置小一点

实际:ext2、ext3、ext4最大只能4K,而工作中几乎没有小于4K的文件,所以ext2、ext3、ext4文件系统,block都分配为4K.

总的小结:

1)、磁盘分区格式化文件系统后,会分为inode和block两部分内容

2)、inode存放文件的属性以及指向文件实体的指针,文件名不在inode中,而是在上级目录的block中。

3)、访问文件,通过文件文件--->inode---->blocks

4)、inode一般情况下默认大小为256B,block大小1K、2K、4K,默认是4K,注意,引导分区等特殊分区除外。

5)、通过df -i 查看inode的数量及使用情况,dumpe2fs /dev/sda3查看inode及block的大小及数量。

6)、一个文件至少要占用一个inode及一个block,多个文件可以占用同一个inode(硬链接),相同文件

7)、一个block只能被一个文件使用,如果文件很小,block很大,剩余空间浪费,无法继续被其他文件使用。

实例演示:

新增加一块硬盘

fdisk -l  #查看磁盘的情况,发现有新加的盘/dev/sdb

fdisk /dev/sdb  #进行分区

n:增加分区  p-主分区;e-逻辑分区  p:打印  w:写入分区表  partprobe:不重启分区表直接生效

mkfs.ext4 -b 8192 /dev/sdb1 ####因为大于4K,会有警告,实际使用过程中是否支持未知(所以不建议)

mkfs.ext4 -b 1024 -I 512/dev/sdb1

mount /dev/sdb1 /mnt/

touch /mnt/aaa.txt

df -Th

umount /mnt/

面试题:

一个100M(100000K)的磁盘分区,分别写入1K的文件或者写入1M的文件,分别可以写多少个?

错误解答:

1K的数量是 100M*1000/1K=100000个

1M的数量是 100M/1M=100个

这道题的答案其实就是答出inode和block相关的知识点就好。参考如下:

时间: 2024-10-23 00:12:45

linux---10-20的相关文章

10.19-10.22 iptables规则备份和恢10.20 firewalld的9个zone

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 # 10.19 iptables 规则备份和恢复 - 保存和备份iptables 的规则 - service iptables save 会把规则保存到 /etc/sysconfig/iptables - 把iptables规则备份到my.ipt 文件中 - iptables-save > my.ipt

10.19 iptables规则备份和恢复 10.20 firewalld

10.19 iptables规则备份和恢复 Linux防火墙-netfilter 1. iptables规则保存: 默认规则保存到:/etc/sysconfig/iptables文件中. [[email protected] ~]# service iptables save 2. iptables规则备份(保存)到指定路径: [[email protected] ~]# iptables-save > /tmp/ipt.txt 3. iptables规则清空 : [[email protect

基于Ubuntu和基于Debian的Linux Mint 20新特性一览

导读 Linux Mint 20 将基于 Ubuntu 20.04 LTS,同时,其 LMDE(Linux Mint Debian Edition,Debian 版本)4 也将到来,LMDE 版本基于 Debian GNU/Linux,提供滚动发布,而不是像常规的 Linux Mint 基于 Ubuntu. 日前 Linux Mint 官方博客释出了关于 Linux Mint 20 与 LMDE 4 的新特性信息. LMDE 4 LMDE 4 将首先发布,基于改进的 Debian 10 软件包,

个人回忆录 2014.10.20 至 2015.7.30

时间过的太快.以至于对我来说都记不起来每天做了些什么事情.工作节奏太快,下班.上班 然后再下班再上班. 每天下班后都晚上9点左右.真的看不见日出看不见日落. 从2014.10.20 到现在已经快10个月了.新的工作环境以及新的同事.上司都已熟悉了.回想刚刚开始进入这个研发团队的时候. 高原反应非常强烈,总是在疑问自己为何选择这个方向—C++ 客户端开发.为何不沿用最熟悉的.NET 平台开发.当从新学习一门新技术的时候 才发现自己太笨.有点像当年的高考,时间很紧.因为没有太多的时间用在学习上.MF

(转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html)WebWork深入浅出

(转自http://www.blogjava.net/moxie/archive/2006/10/20/76375.html) WebWork深入浅出 本文发表于<开源大本营> 作者:钱安川 前言 本篇文章并没有太多WebWork 的实战代码细节.本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理.在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴.围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介.WebWork入门.We

从“假如有以下几种价格10,20,50,请你代码实现将他们排序输出”看着设计模式中的策略模式

今天重温了一下策略模式,将自己的一些感悟与大家分享...本人只是技术渣渣,所理解的东西的难免会有很大的局限性甚至是错误,还请各位带着批判的眼光去看待....不喜请勿吐槽 定义:策略模式属于设计模式中的对象行为型模式,它将用到的算法单独抽象成一个单独的类.通常,我们在多个类完成同一件事情,仅仅完成的方式不同时,我们可以考虑使用这种设计模式. 举例:相信,很多人在看到"假如有以下几种价格10,20,50,请你代码实现将他们排序输出"这种题目的时候,很快就写出了以下代码,写之前还不忘了问一下

给你六种面额1 5 10 20 50 100元的纸币假设每种币值的数量足够多

编写程序求组成N元的不同组合的个数.输入一个数字N输出一个也是数字,为组成N的组合个数.如输入2,输出1,输入5,输出2 背包问题: 1 function fn (all) { 2 const arr = [1, 5, 10, 20, 50, 100], 3 len = arr.length, 4 res = []; 5 for (let i = 0; i <= len; i++) { 6 res[i] = []; 7 res[i][0] = 1; 8 } 9 for (let j = 1; j

SUSE Linux 10配置裸设备(raw devices)

裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲,是不被操作系统直接管理的设备.由于跨过操作系统管理,使得I/O效率更高. 在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式.SUSE Linux裸设备的配置与其他的Linux稍有差异,下面将具体

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21

七周五次课 10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 启动firewalld防火墙,关闭iptables 查看所有的zone和默认的zone 10.21 firewalld关于zone的操作 设置默认zone 设置网卡的zone 10.22 firewal

请从L=[1,10,20,50,20,20,1]中找出重复数。

1 L=[1,10,20,50,20,20,1] 2 L1=[] 3 for i in L: 4 if(L.count(i)>1): 5 L1.append(i) 6 L2=[] 7 for i in L1: 8 if i not in L2: 9 L2.append(i) 10 print L2 原文地址:https://www.cnblogs.com/Python-XiaCaiP/p/8521517.html