■atime mtime ctime statコマンド

 

【centos7のXFSの場合】

せ7> mount

・・・前略・・・

/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)

・・・後略・・・

Relatime では atime データを維持しますが、ファイルがアクセスされる度の書き込み動作はしません。このオプションを有効にすると、ファイルが変更された、つまり atime が更新された (mtime) 場合、またはファイルが最後にアクセスされてから一定以上の時間 (デフォルトでは 1 日) が経過している場合に限り、atime データがディスクに書き込まれます。

3.9. RELATIME ドライブアクセス最適化

せ7> echo a > a.txt
せ7> stat a.txt

  File: ‘a.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 07:58:54.652169040 -0800
Modify: 2018-02-02 07:58:54.652169040 -0800
Change: 2018-02-02 07:58:54.652169040 -0800
 Birth: -

せ7> cat a.txt      ←a.txtをreadする

a

せ7> stat a.txt
  File: ‘a.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 07:59:54.828939230 -0800    
 ←atimeが更新された
Modify: 2018-02-02 07:58:54.652169040 -0800
Change: 2018-02-02 07:58:54.652169040 -0800
 Birth: -

せ7> touch a.txt
せ7> stat a.txt

  File: ‘a.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:02:08.595997830 -0800   
 ←atimeが更新された
Modify: 2018-02-02 08:02:08.595997830 -0800    
 ←mtimeが更新された
Change: 2018-02-02 08:02:08.595997830 -0800   
 ←ctimeが更新された
 Birth: -

せ7> echo b >> a.txt
せ7> stat a.txt

  File: ‘a.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1   
 ←inodeは更新されない
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:02:08.595997830 -0800
Modify: 2018-02-02 08:03:52.119615445 -0800    
 ←mtimeが更新された
Change: 2018-02-02 08:03:52.119615445 -0800   
 ←ctimeが更新された
 Birth: -

せ7> chmod 777 a.txt
せ7> stat a.txt

  File: ‘a.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:02:08.595997830 -0800
Modify: 2018-02-02 08:03:52.119615445 -0800
Change: 2018-02-02 08:07:31.577435722 -0800   
 ←ctimeだけ更新された
 Birth: -

せ7> cat a.txt
a
b

せ7> stat a.txt
  File: ‘a.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800   
 ←atimeだけ更新された
Modify: 2018-02-02 08:03:52.119615445 -0800
Change: 2018-02-02 08:07:31.577435722 -0800
 Birth: -

せ7> cp -p a.txt b.txt
せ7> stat b.txt

  File: ‘b.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787420    Links: 1   
 ←inodeは当然変わる
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:03:52.119615445 -0800
Change: 2018-02-02 08:10:53.826753216 -0800   
 ←ctimeだけ更新された
 Birth: -

せ7> stat a.txt
  File: ‘a.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:03:52.119615445 -0800
Change: 2018-02-02 08:07:31.577435722 -0800
 Birth: -

せ7> mv a.txt c.txt
せ7> stat c.txt

  File: ‘c.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1   
 ←inodeは更新されない
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:03:52.119615445 -0800
Change: 2018-02-02 08:13:42.844925373 -0800   
 ←ctimeだけ更新された
 Birth: -

せ7> ls -lu c.txt
-rwxrwxrwx 1 root root 3 Feb  2 08:09 c.txt
せ7> ls -l c.txt
-rwxrwxrwx 1 root root 3 Feb  2 08:03 c.txt
せ7> ls -lc c.txt
-rwxrwxrwx 1 root root 3 Feb  2 08:13 c.txt

せ7> echo c > c.txt

せ7> stat c.txt
  File: ‘c.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1   
 ←inodeは更新されない
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:26:16.167408121 -0800   
  ←mtimeが更新された
Change: 2018-02-02 08:26:16.167408121 -0800   
 ←ctimeが更新された
 Birth: -

せ7> echo c >> c.txt
せ7> stat c.txt

  File: ‘c.txt’
  Size: 4               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1   
 ←inodeは更新されない
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:28:24.881919648 -0800   
  ←mtimeが更新された
Change: 2018-02-02 08:28:24.881919648 -0800   
 ←ctimeが更新された
 Birth: -

せ7> vi c.txt
・・・c.txtを変更して保存・・・
せ7> stat c.txt
  File: ‘c.txt’
  Size: 3               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787419    Links: 1   
 ←inodeは更新されない
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:30:40.339751933 -0800   
  ←atimeはviで開いた時刻
Modify: 2018-02-02 08:30:58.459258315 -0800   
  ←mtimeは保存時刻
Change: 2018-02-02 08:30:58.461265572 -0800   
  ←ctimeは保存時刻
 Birth: -

せ7> ln -s b.txt bs
せ7> stat bs

  File: ‘bs’ -> ‘b.txt’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: 803h/2051d      Inode: 18787421    Links: 1   
  ←リンク元とシンボリックリンクのinodeは当然別
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:54:17.272184311 -0800
Modify: 2018-02-02 08:54:17.272184311 -0800
Change: 2018-02-02 08:54:17.272184311 -0800
 Birth: -

せ7> echo b > b.txt
せ7> stat bs

  File: ‘bs’ -> ‘b.txt’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: 803h/2051d      Inode: 18787421    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:54:17.298278703 -0800    ←?
Modify: 2018-02-02 08:54:17.272184311 -0800   
  ←リンク元が変わってもシンボリックリンクは変わらず
Change: 2018-02-02 08:54:17.272184311 -0800   
 ←リンク元が変わってもシンボリックリンクは変わらず
 Birth: -

せ7> echo b > bs
せ7> stat bs

  File: ‘bs’ -> ‘b.txt’
  Size: 5               Blocks: 0          IO Block: 4096   symbolic link
Device: 803h/2051d      Inode: 18787421    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:54:17.298278703 -0800
Modify: 2018-02-02 08:54:17.272184311 -0800   
  ←リンク元が変わってもシンボリックリンクは変わらず
Change: 2018-02-02 08:54:17.272184311 -0800   
  ←リンク元が変わってもシンボリックリンクは変わらず
 Birth: -

せ7> ln b.txt bh
せ7> stat b.txt

  File: ‘b.txt’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787420    Links: 2
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:54:17.397638118 -0800
Change: 2018-02-02 08:54:17.485957598 -0800
 Birth: -

せ7> stat bh
  File: ‘bh’
  Size: 2               Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 18787420    Links: 2
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-02 08:09:05.019349703 -0800
Modify: 2018-02-02 08:54:17.397638118 -0800
Change: 2018-02-02 08:54:17.485957598 -0800
 Birth: -

 

【centos6のEXT4の場合】

せ> mount
/dev/sda2 on / type ext4 (rw)

・・・後略・・・

せ> echo a > a.txt

せ> stat a.txt
  File: `a.txt'
  Size: 2               Blocks: 8          IO Block: 4096   通常ファイル
Device: 802h/2050d      Inode: 2217752     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-03 00:33:54.534927541 +0900
Modify: 2018-02-03 00:33:54.534927541 +0900
Change: 2018-02-03 00:33:54.534927541 +0900

せ> cat a.txt
a
せ> stat a.txt
  File: `a.txt'
  Size: 2               Blocks: 8          IO Block: 4096   通常ファイル
Device: 802h/2050d      Inode: 2217752     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-03 00:46:51.008545792 +0900   
 ←atimeだけ更新された
Modify: 2018-02-03 00:33:54.534927541 +0900
Change: 2018-02-03 00:33:54.534927541 +0900

※centos6とcentos7はこの辺おんなじみたい

 

 

 XFSとext4で機能ごとに使用するコマンドの対応

機能 XFS ext4
ファイルシステムの作成 mkfs.xfs, (mkfs -t xfs) mke2fs, mkfs.ext4, (mkfs -t ext4)
ファイルシステムの情報表示 xfs_info dumpe2fs
ファイルシステムのマウント mount mount
ファイルシステムのメタデータの変更 xfs_admin tune2fs
ファイルシステムのチェック、修復 xfs_repair e2fsck, fsck.ext4
ファイルシステムのバックアップ xfsdump dump
ファイルシステムのリストア xfsrestore restore
ファイルシステムの拡張 xfs_growfs resize2fs
ファイルシステムのクォータ設定 xfs_quota quota, quotaon, repquotaなど
ファイルのディスク上のブロック一覧表示 xfs_bmap filefrag
ファイルシステムのデフラグ xfs_fsr e4defrag
ファイルシステムの一時停止 xfs_freeze, fsfreeze fsfreeze

http://www.intellilink.co.jp/article/column/oss-rh02.html

 

せ7> xfs_info /dev/sda3
meta-data=/dev/sda3              isize=512      agcount=4, agsize=1160384 blks
               =                            sectsz=512   attr=2, projid32bit=1
               =                            crc=1           finobt=0 spinodes=0
data         =                            bsize=4096    blocks=4641536, imaxpct=25
               =                            sunit=0         swidth=0 blks
naming      =version 2               bsize=4096    ascii-ci=0 ftype=1
log            =internal                 bsize=4096    blocks=2560, version=2
                =                           sectsz=512    sunit=0 blks, lazy-count=1
realtime     =none                    extsz=4096    blocks=0, rtextents=0

 

 

■拡張属性 (xattr)

RHEL7 ストレージ管理ガイド第6章 XFS ファイルシステム
このシステムにより、ファイルごとの名前と値の複数の組み合わせを追加で関連付けられるようになります。これはデフォルトで有効にされます。

■acl

もし、それぞれのファイルシステム上のデータをtarでアーカイブ化するとき、--aclsと--xattrsオプションを付けた場合と付けない場合でアーカイブから取り出したファイルはacl属性や拡張属性が保持されていないのでどんな不具合が想定される?

※XFSのaclとはファイルやディレクトリに、複数のotherユーザごとの権限を付与できる属性。ようは、NTFSのように、Aさん所有のファイルに、Bさんは書込可、Cさんは書込不可のようなきめ細やかな権限設定をできるXFSの拡張属性。

このブログの記事が参考になった

 

【課題】

■XFSなどファイルシステムの属性で注意しないといけないことは、

・XFSやEXT3にどんな拡張属性があるのか

・どんなアプリがどんな拡張属性を利用しているのか

・コピー/移動系コマンド(アーカイバ含む)がこれらの拡張属性を保持するのか?

※EXT3⇔XFS、NTFS⇔XFS

※広義のファイル移動/コピー系コマンド(アーカイバも含む)において、ファイルA→A'→A"

のように変換したとき、A'、A"がAの帯びていた「すべての属性」を継承できているかどうかは、コピー/移動系コマンドやアプリケーションごとに調べなければいけないってこと。

そのファイルが帯びている拡張属性を利用してるアプリと利用してないアプリがあるので、もし利用しているなら、拡張属性を正しく継承させる必要がある。

例)  tar -C / --acl --xattrs -zcvf /tmp/hoge.tgz /usr/local/apache2

※上記の場合、「hoge.tgz」がA'、展開先がA"

 

【敗走ブログ関連記事】

tarとシンボリックリンク再考