■atime mtime ctime statコマンド
【centos7のXFSの場合】
せ7> mount
・・・前略・・・
/dev/sda3 on / type xfs (rw,relatime,attr2,inode64,noquota)
・・・後略・・・
Relatime
では atime
データを維持しますが、ファイルがアクセスされる度の書き込み動作はしません。このオプションを有効にすると、ファイルが変更された、つまり atime
が更新された (mtime
) 場合、またはファイルが最後にアクセスされてから一定以上の時間 (デフォルトでは 1 日) が経過している場合に限り、atime
データがディスクに書き込まれます。
せ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"
【敗走ブログ関連記事】