モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)
目次目次を開く/閉じる

ファイルシステム atime の更新を無効化する

モーダルを閉じる

ステッカーを選択してください

モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2014/11/02
最終更新最終更新
2017/03/06
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    データサイエンティスト。PythonとRでデータ解析を行っています。

    0
    ステッカーを贈るとは?

    Linuxにおいてファイル読み出しを行うと atime が更新されます。ファイル読み出し回数が非常に大きい場合 atime の更新を無効化することで若干のパフォーマンス向上が期待できます。

    ファイルシステムとは

    Windowsでエクスプローラを用いてフォルダやファイルを閲覧できたり、Linuxでcdやlsを用いてディレクトリ移動やファイル閲覧ができるのは、各OSがファイルシステムとよばれる機能を提供しているからです。有名なものは以下の通りです。

    • Windows: FAT (File Allocation Table) および NTFS (NT File System)
    • Mac: HFS (Hierarchical File System)
    • Unix: ext2, ext3, ext4 (extended filesystem の意味。ext2 はトランザクション毎に更新履歴の保存を行う、ジャーナリングに対応していない)

    inodeとは

    Unix系ファイルシステムには inode とよばれる概念があり、具体的にはファイルやディレクトリを表現しています。各 inode にはタイムスタンプ (mtime, atime等) やパーミッション情報が格納されています。

    mtime および atime とは

    • mtime: "time of last modification" の意味で「ファイル書き込み」または "touch -m" を行うと更新されます。"ls -l" で確認できます
    • atime: "time of last access" の意味で「ファイル読み出し」または "touch -a" を行うと更新されます。"ls -lu" で確認できます

    初期状態 (02:06)

    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:06 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:06 2014 test.txt
    

    最終書き込み時刻を変更 (02:09)

    $ touch -m test.txt
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:09 2014 test.txt  ← 変更された
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:06 2014 test.txt
    

    最終読み出し時刻を変更 (02:13)

    $ touch -a test.txt
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:09 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 02:13 2014 test.txt  ← 変更された
    

    atime の更新を無効化

    mtime と比較して atime は更新されなくても問題にならない場合が多いです。atime 更新処理を無効化することで、ファイル読み出し (書き込みではないことに注意) のパフォーマンスを向上させることができます。

    無効化前の確認 (その1)

    $ mount | grep " / "
    /dev/mapper/VolGroup-lv_root on / type ext4 (rw)
    

    無効化前の確認 (その2)

    $ touch test.txt
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:08 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:08 2014 test.txt
    $ (しばらく待つ...)
    $ perl -MIO::File -e '$fh=IO::File->new("test.txt","r"); 1 while(<$fh>)'  ← 読み出し
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:08 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:09 2014 test.txt   ← 変更されることを確認
    

    無効化の実行 (編集して再起動)

    $ sudo vi /etc/fstab
    ...
    #/dev/mapper/VolGroup-lv_root  /    ext4    defaults          1 1    ← コメントアウトして
    /dev/mapper/VolGroup-lv_root   /    ext4    defaults,noatime  1 1    ← これを追記 (noatime)
    ...
    $ sudo reboot
    

    無効化後の確認 (その1)

    $ mount | grep " / "
    /dev/mapper/VolGroup-lv_root on / type ext4 (rw,noatime)  ← noatimeが設定されました
    

    無効化後の確認 (その2)

    $ touch test.txt
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:11 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:11 2014 test.txt
    $ (しばらく待つ...)
    $ perl -MIO::File -e '$fh=IO::File->new("test.txt","r"); 1 while(<$fh>)'  ← 読み出し
    $ ls -l test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:11 2014 test.txt
    $ ls -lu test.txt
    -rw-rw-r--. 1 username username 0 11月  2 03:11 2014 test.txt   ← 変更されないことを確認
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    データサイエンティスト。PythonとRでデータ解析を行っています。

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    さらに詳しく →
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      関連記事

      • 使い所が難しいマイナーな運用コマンド
        コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
        けんちゃんけんちゃん12/1/2022に更新
        いいねアイコン画像0
      • ipコマンドの基本的な使い方
        ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
        こもれびさんこもれびさん3/8/2017に更新
        いいねアイコン画像0
      • プロセス関連のコマンド
        サムネイル画像-7b5901f600
        プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
        kenken12/27/2021に更新
        いいねアイコン画像0
      • rpmとyumのチートシート
        サムネイル画像-f69c6665b8
        rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
        まるたんまるたん3/2/2022に更新
        いいねアイコン画像0
      • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
        メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
        しおまめしおまめ9/30/2017に更新
        いいねアイコン画像0