元数据定义
MetaData元数据是描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据。
在集群文件系统中,也会看到DateNode和MetaNode,后者就是描述文件在集群中的位置。
不论在单机环节或集群环境,用户操作一个文件前,必须首先得到它的元数据,才能定位到文件的位置并且得到文件的内容或相关属性。

查看命令:stat

[root@oracle tmp]# stat profileFile: 'profile'Size: 1579          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 13:25:00.903142426 +0800
Modify: 2020-04-22 13:24:57.440986257 +0800
Change: 2020-04-22 13:24:57.441986302 +0800
  • File:文件名称
  • Size:文件大小
  • Blocks:占据的磁盘块数
  • IO Block:IO块大小
  • Rregular file:普通文件
  • Device:所在设备
  • Inode:Inode节点号
  • Links:被硬链接次数
  • Access:访问权限
  • Uid:uid号和属主
  • Gid:gid号和属组
  • Access: 文件最近一次被访问的时间
  • Modify: 文件最近一次被修改的时间
  • Change:元数据最近一次被修改的时间
    备注:

    • 时间字段是完整的年月日、时分秒 以及纳秒数和时区
    • 通过以下小实验求证其正确的定义,依靠date +%N打印出纳秒数
    • 因为已经是极致,即使通过命令让以下命令“几乎同时运行”,仍然存在滞后
[root@oracle tmp]# touch test10; stat test10 ; echo "Nowtime" "`date +%F" "%T.%N" "%z`"File: ’test10'Size: 0            Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 2228238     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 18:11:59.903022404 +0800
Modify: 2020-04-22 18:11:59.903022404 +0800
Change: 2020-04-22 18:11:59.903022404 +0800
Nowtime 2020-04-22 18:11:59.914273670 +0800

如何修改文件的时间戳信息?
命令touch可以同时刷新元数据的时间戳信息

  File: 'profile'Size: 1827        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:12:37.165113482 +0800
Modify: 2020-04-22 21:13:47.816084697 +0800
Change: 2020-04-22 21:21:30.586551224 +0800
[root@oracle tmp]# touch profile
[root@oracle tmp]# stat profileFile: 'profile'Size: 1827         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:26:33.237331074 +0800
Modify: 2020-04-22 21:26:33.237331074 +0800
Change: 2020-04-22 21:26:33.237331074 +0800

或者利用touch的参数修改指定时间戳的信息:
touch命令 格式:touch [OPTION]… FILE…
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳

不同的文件操作如何影Metadata?

mv操作 影响ctime和inode (Device可能会更新 )

  • 移动前
[root@oracle tmp]# stat profileFile: 'profile'Size: 1579          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 13:25:00.903142426 +0800
Modify: 2020-04-22 13:24:57.440986257 +0800
Change: 2020-04-22 13:24:57.441986302 +0800
  • 移动后
[root@oracle tmp]# mv profile /home/
[root@oracle tmp]# ls /home/profile
/home/profile
[root@oracle tmp]# stat /home/profile File: '/home/profile'Size: 1579        Blocks: 8          IO Block: 4096   regular file
Device: fd02h/64770d    Inode: 881         Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 13:25:00.903142426 +0800
Modify: 2020-04-22 13:24:57.440986257 +0800
Change: 2020-04-22 17:29:29.229779538 +0800

创建链接 影响 ctime和Links

[root@oracle tmp]# stat profile File: 'profile'
Size: 1823          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 17:33:26.150897074 +0800
Modify: 2020-04-22 17:33:26.151897121 +0800
Change: 2020-04-22 17:33:26.151897121 +0800
[root@oracle tmp]# ln profile profile.link
[root@oracle tmp]# stat profileFile: 'profile'Size: 1823         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 17:33:26.150897074 +0800
Modify: 2020-04-22 17:33:26.151897121 +0800
Change: 2020-04-22 17:33:41.302607186 +0800

echo 重定向 影响mtime和ctime(size、Blocks随着内容的增加会放大)

[root@oracle tmp]# stat profileFile: 'profile'Size: 1823          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 17:33:26.150897074 +0800
Modify: 2020-04-22 17:33:26.151897121 +0800
Change: 2020-04-22 17:33:41.302607186 +0800
[root@oracle tmp]# echo a >> profile
[root@oracle tmp]# stat profileFile: 'profile'Size: 1825         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 17:33:26.150897074 +0800
Modify: 2020-04-22 21:11:06.772137866 +0800
Change: 2020-04-22 21:11:06.772137866 +0800

vi不修改内容后退出 只会影响atime
vi修改内容后退出 影响mtime和ctime (size、Blocks随着内容的增加会放大)

[root@oracle tmp]# stat profileFile: 'profile'Size: 1825          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:12:37.165113482 +0800
Modify: 2020-04-22 21:11:06.772137866 +0800
Change: 2020-04-22 21:11:06.772137866 +0800
[root@oracle tmp]# vi profile
[root@oracle tmp]# stat profileFile: 'profile'Size: 1827         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:12:37.165113482 +0800
Modify: 2020-04-22 21:13:47.816084697 +0800
Change: 2020-04-22 21:13:47.818084782 +0800

拷贝操作 影响atime

[root@oracle tmp]# stat profileFile: 'profile'Size: 1827          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:26:33.237331074 +0800
Modify: 2020-04-22 21:26:33.237331074 +0800
Change: 2020-04-22 21:26:33.237331074 +0800
[root@oracle tmp]# cp profile profile.bakbak
[root@oracle tmp]# stat profileFile: 'profile'Size: 1827         Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 2228228     Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-04-22 21:35:38.026422960 +0800
Modify: 2020-04-22 21:26:33.237331074 +0800
Change: 2020-04-22 21:26:33.237331074 +0800

小结:

  1. mtime 仅当修改文件内容时才会更新,更准确地说是修改了文件的数据块 data block部分;
  2. ctime 仅当修改文件属性时才会更新,更准确地说是修改了文件的元数据 inode block 部分,例如 重命名文件、修改文件所有者、移动文件等。
  3. atime 当文件被访问(比如cp拷贝命令、修改文件vi命令等)时就会得到更新
  4. 修改文件内容,必然更新mtime,也会更新ctime。因为修改文件内容时至少已经修改了inode记录上的mtime,这也属于元数据的部分。
  5. 针对atime的追踪意义不是很大,主要是基于性能考虑。假设每次读取文件时都即时更新atime就会带来对磁盘额外的写操作,增加系统负担没,没有必要每次更新atime,从CentOS6开始,默认开启relatime选项要求文件atime只有满足两个条件之一才更新:
    条件1 文件的atime超过一天以上
    条件2 文件的mtime比atime更晚

Metadata 元数据信息详解相关推荐

  1. HTTP协议的头信息详解

    HTTP协议的头信息详解 http://blog.csdn.net/guoguo1980/archive/2008/07/14/2649658.aspx HTTP协议的头信息详解 HTTP(Hyper ...

  2. crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例

    Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android ...

  3. linux l显示详细信息,fdisk -l显示信息详解

    fdisk -l显示信息详解 [root@www.linuxidc.com ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 hea ...

  4. Debian操作系统的源配置信息详解--Source.list配置文件详解

    转载来源:https://wiki.debian.org/SourcesList#Repository_URL Debian操作系统的源配置信息详解--Source.list配置文件详解 Debian ...

  5. linux输出文件没有找到,Linux环境下标准输入、输出、错误信息详解

    Linux环境下标准输入.输出.错误信息详解 下面我们介绍在Linux环境下标准输入.输出.错误设备.标准输入设备代号为0, 用来显示输入信息,标准输出设备代号为1,用来显示正常信息,标准错误设备代号 ...

  6. linux查看多核cpu运行状态,Linux下查看多核CPU信息详解

    Linux系统下,CPU信息详解(cpuinfo,多核,多线程) 在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/ ...

  7. Linux中ls -l命令展示信息详解

    Linux中ls -l命令展示信息详解 在Linux系统中,ls -l命令是用以列表的形式来查看当前目录下的文件或目录,下面就让我们一起来看看展示的信息是什么意思吧 以CentsOS7为例子 [roo ...

  8. 英雄联盟s10信息详解

    英雄联盟s10信息详解 刚刚获得TGA2019最佳电竞游戏和最佳游戏赛事双奖的中国玩家耳熟能详的英雄联盟s10迎来了两次巨大的修改.两个新射手塞娜和厄斐琉斯给AD位置带来了新的活力:精密系天赋的修改和 ...

  9. php 文件头部(header)信息详解

    有关php文件头部信息(header)的详细介绍,是脚本学堂见过的最详细的一篇. php文件头信息详解. 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* ...

  10. HTTP协议的头信息详解 1

    HTTP协议的头信息详解 我用抓包软件抓了http的包,发现accept大多数有两种情况. # l8 X" o; I5 e# t9 y第一种:Accept: image/gif, image ...

最新文章

  1. 论如何优雅地进行工作安排
  2. druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
  3. Java DecimalFormat 用法 小数位的处理 公司内部处理小数位
  4. Android studio3.1卡顿严重
  5. java项目皮肤包_java swing项目皮肤包+使用方法说明
  6. 51nod 1092 回文字符串【LCS】
  7. 360导航源码php,仿360网址导航源码v3.0
  8. [SUCTF 2019]EasyWeb 1
  9. 关于word中如何生成自动目录以及页码编排
  10. 展望99股市:谁是重组大黑马?(转)
  11. 手把手教你ARC——iOS/Mac开发ARC入…
  12. 接线端子01——常见接线端子介绍
  13. 微信小程序-获取用户头像信息以及修改用户头像
  14. ​IT 管理进化论:若运维是眼前的苟且,运营则是诗和远方
  15. 《JavaScript设计模式》读后感 觉很复杂
  16. python携程gevent_python gevent 协程
  17. vs2015-MFC对话框模式,使用Pelco-D协议,控制电动云台
  18. java 监听jtextfield_java JTextField之监听器
  19. AI工程师的笔记本环境配置
  20. 虚拟服务器windows硬盘30t,避坑指南:基于Windows系统的NAS通过NFS将硬盘空间共享给Hyper-V黑群晖...

热门文章

  1. oracle无法进入nomount状态,数据库进入nomount状态
  2. _f5是c语言合法变量,C语言练习题1
  3. Java.千呼万唤始出来
  4. python反转整数的几种方法_小白python整数反转
  5. 如何使虚拟机VMware workstation连接局域网
  6. 大型网站技术架构核心原理与案例分析(李智慧)学习笔记2--大型网站架构五大核心要素
  7. 中国Android应用商店汇总
  8. Python 网络爬虫实现 QQ 音乐下载
  9. 【120天】尚学堂高琪Java300集视频精华笔记(31-36)
  10. 大屏可视化解决方案:公安大数据平台建设