RHEL7.2 如何设置block
[root@localhost ~]# mkfs.xfs -b size=1024 /dev/sdb1 -f
meta-data=/dev/sdb1 isize=256 agcount=4, agsize=24064 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=1024 blocks=96256, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=1024 blocks=2564, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
注:
[root@localhost ~]# mkfs.ext4 -b 1024 /dev/sdb1

Linux文件系统由三部分组成 :文件名,inode,block(真正存数据)
inode:文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

inode的内容
inode包含文件的元信息,具体来说有以下内容:
   文件的字节数
  
文件拥有者的User ID
   文件的Group ID
  
文件的读、写、执行权限
   文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  
链接数,即有多少文件名指向这个inode

  • 文件数据block的位置

[root@localhost ~]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 36433003 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-02-24 08:45:42.182854288 -0500
Modify: 2016-02-24 08:45:42.182854288 -0500
Change: 2016-02-24 08:45:42.182854288 -0500

[root@localhost ~]# ll a.txt
-rw-r--r-- 1 root root 0 Feb 24 08:45 a.txt

inode的大小
inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

16G
1 G = 1024 MB =1024 1024 KB
1 G = 1000 MB =1000
1000 KB

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/rhel-root 10485760 138134 10347626 2% /
devtmpfs 500087 404 499683 1% /dev
tmpfs 503976 6 503970 1% /dev/shm
tmpfs 503976 563 503413 1% /run
tmpfs 503976 13 503963 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt
/dev/sda1 204800 327 204473 1% /boot
tmpfs 503976 17 503959 1% /run/user/42
tmpfs 503976 1 503975 1% /run/user/0

使用ls -i命令,可以看到文件名对应的inode号码:
[root@localhost ~]# ls -i a.txt
36433003 a.txt
查看目录的inode号
[root@localhost ~]# ll -di /etc/
16777345 drwxr-xr-x. 136 root root 8192 Feb 24 08:03 /etc/

扩展:linux中ctime,mtime,atime的区别
ctime:“改变时间(change time)”
mtime :“修改时间(modification time)”
改变和修改之间的区别在于是改文件的属性还是更改它的内容。chmod a-w myfile,那么这是一个改变;
echo foo >> myfile,那么这是一个修改。
改变是文件的索引节点发生了改变;修改是文本本身的内容发生了变化。
atime :“访问时间(access time)”
访问时间是文件最后一次被读取的时间。因此阅读一个文件会更新它的访问时间。但是它的改变时间和修改时间并没有变。

ls -lc filename         列出文件的 ctime
ls -lu filename         列出文件的 atime
ls -l filename          列出文件的 mtime 

实例:
web服务器中小文件很多,导致硬盘有空间,但无法创建文件。
inode数被用光了。
[root@localhost ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/rhel-root 10485760 138138 10347622 2% /
devtmpfs 500087 404 499683 1% /dev
tmpfs 503976 6 503970 1% /dev/shm
tmpfs 503976 563 503413 1% /run
tmpfs 503976 13 503963 1% /sys/fs/cgroup
/dev/sr0 0 0 0 - /mnt
/dev/sda1 204800 327 204473 1% /boot
tmpfs 503976 17 503959 1% /run/user/42
tmpfs 503976 1 503975 1% /run/user/0