Metadata 元数据信息详解
元数据定义
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
小结:
- mtime 仅当修改文件内容时才会更新,更准确地说是修改了文件的数据块 data block部分;
- ctime 仅当修改文件属性时才会更新,更准确地说是修改了文件的元数据 inode block 部分,例如 重命名文件、修改文件所有者、移动文件等。
- atime 当文件被访问(比如cp拷贝命令、修改文件vi命令等)时就会得到更新
- 修改文件内容,必然更新mtime,也会更新ctime。因为修改文件内容时至少已经修改了inode记录上的mtime,这也属于元数据的部分。
- 针对atime的追踪意义不是很大,主要是基于性能考虑。假设每次读取文件时都即时更新atime就会带来对磁盘额外的写操作,增加系统负担没,没有必要每次更新atime,从CentOS6开始,默认开启relatime选项要求文件atime只有满足两个条件之一才更新:
条件1 文件的atime超过一天以上
条件2 文件的mtime比atime更晚
Metadata 元数据信息详解相关推荐
- HTTP协议的头信息详解
HTTP协议的头信息详解 http://blog.csdn.net/guoguo1980/archive/2008/07/14/2649658.aspx HTTP协议的头信息详解 HTTP(Hyper ...
- crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例
Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android ...
- linux l显示详细信息,fdisk -l显示信息详解
fdisk -l显示信息详解 [root@www.linuxidc.com ~]# fdisk -l Disk /dev/sda: 10.7 GB, 10737418240 bytes 255 hea ...
- Debian操作系统的源配置信息详解--Source.list配置文件详解
转载来源:https://wiki.debian.org/SourcesList#Repository_URL Debian操作系统的源配置信息详解--Source.list配置文件详解 Debian ...
- linux输出文件没有找到,Linux环境下标准输入、输出、错误信息详解
Linux环境下标准输入.输出.错误信息详解 下面我们介绍在Linux环境下标准输入.输出.错误设备.标准输入设备代号为0, 用来显示输入信息,标准输出设备代号为1,用来显示正常信息,标准错误设备代号 ...
- linux查看多核cpu运行状态,Linux下查看多核CPU信息详解
Linux系统下,CPU信息详解(cpuinfo,多核,多线程) 在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/ ...
- Linux中ls -l命令展示信息详解
Linux中ls -l命令展示信息详解 在Linux系统中,ls -l命令是用以列表的形式来查看当前目录下的文件或目录,下面就让我们一起来看看展示的信息是什么意思吧 以CentsOS7为例子 [roo ...
- 英雄联盟s10信息详解
英雄联盟s10信息详解 刚刚获得TGA2019最佳电竞游戏和最佳游戏赛事双奖的中国玩家耳熟能详的英雄联盟s10迎来了两次巨大的修改.两个新射手塞娜和厄斐琉斯给AD位置带来了新的活力:精密系天赋的修改和 ...
- php 文件头部(header)信息详解
有关php文件头部信息(header)的详细介绍,是脚本学堂见过的最详细的一篇. php文件头信息详解. 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* ...
- HTTP协议的头信息详解 1
HTTP协议的头信息详解 我用抓包软件抓了http的包,发现accept大多数有两种情况. # l8 X" o; I5 e# t9 y第一种:Accept: image/gif, image ...
最新文章
- 论如何优雅地进行工作安排
- druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
- Java DecimalFormat 用法 小数位的处理 公司内部处理小数位
- Android studio3.1卡顿严重
- java项目皮肤包_java swing项目皮肤包+使用方法说明
- 51nod 1092 回文字符串【LCS】
- 360导航源码php,仿360网址导航源码v3.0
- [SUCTF 2019]EasyWeb 1
- 关于word中如何生成自动目录以及页码编排
- 展望99股市:谁是重组大黑马?(转)
- 手把手教你ARC——iOS/Mac开发ARC入…
- 接线端子01——常见接线端子介绍
- 微信小程序-获取用户头像信息以及修改用户头像
- ​IT 管理进化论:若运维是眼前的苟且,运营则是诗和远方
- 《JavaScript设计模式》读后感 觉很复杂
- python携程gevent_python gevent 协程
- vs2015-MFC对话框模式,使用Pelco-D协议,控制电动云台
- java 监听jtextfield_java JTextField之监听器
- AI工程师的笔记本环境配置
- 虚拟服务器windows硬盘30t,避坑指南:基于Windows系统的NAS通过NFS将硬盘空间共享给Hyper-V黑群晖...