作成されたファイルは、tmpディレクトリで毎秒削除されます


13

間違って、/ tmpディレクトリにいくつかのファイルが継続的に作成され、すぐに削除されることに気付きました。連続使用ls -l /tmpIは、作成されたファイルをキャッチするために管理しました:

-rw------- 1 root root       0 Apr  2 19:37  YlOmPA069G
-rw------- 1 root root       0 Apr  2 19:37  l74jZzbcs6

または別の例:

-rw------- 1 root root       0 Apr  2 19:44  AwVhWakvQ_
-rw------- 1 root root       0 Apr  2 19:44  RpRGl__cIM
-rw------- 1 root root       0 Apr  2 19:44  S0e72nkpBl
-rw------- 1 root root       0 Apr  2 19:44  emxIQQMSy2

4.18.0-16-genericを使用したUbuntu 18.10についてです。これはほぼ新規インストールです。サーバーソフトウェア(nginx、mysql、php7.2-fpm)を追加しましたが、それらを閉じても問題は解決しません。

作成されるファイルとその理由は何ですか?この動作をどのように停止しますか?SSD上の非常に望ましくないもの

ありがとうございました!

更新

問題は、RAMに/ tmpがない場合(tmpfsがない場合)です。
有罪ソフトウェアですx2goserver.serviceそう持っている必要があります一つ。


2
「SSD上で非常に望ましくないもの」と説明してください。tmpfsとして/ tmpがありませんか?何故なの?メモリー内のファイルがssdに損傷を与えるのはなぜですか?
リンツウィンド

2
それは有効な質問ですので、/ tmpが、必ずしも、tmpfsのではないかもしれない
コリン・イアン・キング

2
はい、SSDでは、少なくともディレクトリメタデータがキャッシュ内でホットのままになるのではなく、実際にディスクに書き戻される場合は望ましくありません。これが/tmp通常tmpfs(ページキャッシュをバッキングストアとして使用するramdiskファイルシステム)上にある理由です。tmpfsで質問にタグを付けたので、SSDに関するコメントは場違いなようです。
ピーター

1
素晴らしい-それは持っている必要があります
-adrhc

2
@PeterCordes「/tmp通常はtmpfsにある」というステートメントが通常のUbuntuユーザーに有効かどうかわからない-デフォルトのUbuntuインストールを使用するだけ/tmpでディスク上にあり、OPは適切なfstabエントリを作成してそれをtmpfs
チャールズグリーン

回答:


17

これらのファイルを作成しているプロセスを検出するには、fnotifystatをインストールして実行することをお勧めします。

sudo apt-get install fnotifystat
sudo fnotifystat -i /tmp

次のようなopen / close / read / writeアクティビティを実行しているプロセスが表示されます。

Total   Open  Close   Read  Write   PID  Process         Pathname
  3.0    1.0    1.0    0.0    1.0   5748 firefox         /tmp/cubeb-shm-5748-input (deleted)
  2.0    0.0    1.0    0.0    1.0  18135 firefox         /tmp/cubeb-shm-5748-output (deleted)
  1.0    1.0    0.0    0.0    0.0   5748 firefox         /tmp/cubeb-shm-5748-output (deleted)

3
追記:私はこのツールの作成者です:kernel.ubuntu.com/~cking/fnotifystat
コリンイアンキング

1
そして、あなたは質問に最初に答えた人でもあります(それはもはや見えません)。ちなみにそれは良いツールです。
adrhc

+1は非常に便利なユーティリティです。私はそれを使用して/tmp/...、より複雑なDBUSの代わりにデーモンとユーザー空間の間でIPCのファイルを作成する次のプロジェクトを監視できるので、タイムリーです。
WinEunuuchs2Unix

8

ファイルに触れているプログラム/プロセスを特定する

などのツールを使用してlsof、どのプロセスとバイナリがどのファイルに触れている/開いているかを判断できます。これは、ファイルが頻繁に変更されると面倒になる可能性があるため、代わりにウォッチを設定して通知することができます。

$ sudo fnotifystat -i /tmp

時々、単にユーザーまたはグループの所有者を見るだけで良いヒントが得られます(例:)ls -lsha


/tmpディスクの代わりにRAMに入れる

必要に応じて、/tmpディレクトリをRAMに配置できます。これが利用可能なRAM、および読み取り/書き込みのサイズと頻度に基づいてスマートな動きであるかどうかを判断する必要があります。

$ sudo vim /etc/fstab

...
# tmpfs in RAM
tmpfs         /tmp         tmpfs         defaults,noatime,mode=1777      0 0
...
$ sudo mount /tmp
$ mount | grep tmp # Check /tmp is in RAM
tmpfs on /tmp type tmpfs (rw,noatime)

十分なRAMがある場合、これはSSDの寿命とシステムの速度の両方に対して非常に良いことと見なすことができます。より積極的に調整するtmpreaper(場合によってはtmpwatch)場合は、少量のRAMでこれを実現することもできます。


6

SSD上の非常に望ましくないもの

あなたはで質問にタグを付けたので、これがSSDにどのように関係するのかは私には全くわかりません。Tmpfsはインメモリ(より正確にはインブロックキャッシュ)ファイルシステムであるため、物理ディスクにヒットすることはありません。

さらに、/tmpファイルシステムに物理的なバッキングストアがあったとしても、RAMが数キロバイトしかないシステムがない限り、これらの短命のファイルはディスクにヒットすることはなく、すべての操作はキャッシュで行われます。

つまり、言い換えると、tmpfsを使用しているので心配する必要はありません。もしそうでなかったとしても、心配する必要はありません。


/ tmpはRAMに保持しているので、誤って現在のfsタイプ(tmpfs)もタグ付けしました。私は今それを削除しましたが、私もあなたからの回答が有用だと思います。
-adrhc

@adrhc:/tmpRAM内にある場合、SSDとは何の関係もないため、望ましいものでも望ましくないものでもありませんが、実際には完全に無関係です。
ヨルグWミットタグ

私は同意しますが、質問はRAMに/ tmpがない場合についてです。たまたまRAMに/ tmpがありました。それでも、問題は私を魅了しました。
adrhc

0

人々はSSDの書き込み耐久性について心配しすぎています。空のファイルを作成および削除すると毎秒24 kBが書き込まれ、人気のSamsung 860 EVO 250 GBの150 TBW仕様を使用すると、摩耗には193年かかります。

(150 * 10 ^ 12)/((2 * 3 * 4 * 1024)* 60 * 60 * 24 * 365.25)= 193

ext4ファイルシステムの場合、「tune2fs -l」を使用してLifetime書き込みを見つけます。または、「smartctl -a」を使用して、Total_LBAs_Writtenを探します。SSDには多くの命が残っています。


質問は、「作成されたファイルとその理由は何ですか?この動作をどのように停止しますか?」、「答え」は質問にどのように適合しますか?
bummi

質問に直接答えてはいませんが、これらのコマンドの使用方法に関してはあまり正確ではありませんが、この情報も役立ちます。例えばtune2fsで私は得るtune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1 Found a gpt partition table in /dev/nvme0n1
-adrhc

0

間違った/dev/nvme0...名前を使用していました:

$ sudo tune2fs -l /dev/nvme0n1
tune2fs 1.42.13 (17-May-2015)
tune2fs: Bad magic number in super-block while trying to open /dev/nvme0n1
Couldn't find valid filesystem superblock.

正しい形式は次のとおりです。

$ sudo tune2fs -l /dev/nvme0n1p6
tune2fs 1.42.13 (17-May-2015)
Filesystem volume name:   New_Ubuntu_16.04
Last mounted on:          /
Filesystem UUID:          b40b3925-70ef-447f-923e-1b05467c00e7
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2953920
Block count:              11829504
Reserved block count:     534012
Free blocks:              6883701
Free inodes:              2277641
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1021
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8160
Inode blocks per group:   510
Flex block group size:    16
Filesystem created:       Thu Aug  2 20:14:59 2018
Last mount time:          Thu Apr  4 21:05:29 2019
Last write time:          Thu Feb 14 21:36:27 2019
Mount count:              377
Maximum mount count:      -1
Last checked:             Thu Aug  2 20:14:59 2018
Check interval:           0 (<none>)
Lifetime writes:          4920 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       1308352
Default directory hash:   half_md4
Directory Hash Seed:      a179d56c-6c68-468c-8070-ffa5bb7cd973
Journal backup:           inode blocks

NVMe SSDの寿命に関する限り:

$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning                    : 0
temperature                         : 38 C
available_spare                     : 100%
available_spare_threshold           : 10%
percentage_used                     : 0%
data_units_read                     : 22,351,778
data_units_written                  : 14,667,833
host_read_commands                  : 379,349,109
host_write_commands                 : 127,359,479
controller_busy_time                : 952
power_cycles                        : 1,925
power_on_hours                      : 1,016
unsafe_shutdowns                    : 113
media_errors                        : 0
num_err_log_entries                 : 598
Warning Temperature Time            : 0
Critical Composite Temperature Time : 0
Temperature Sensor 1                : 38 C
Temperature Sensor 2                : 49 C
Temperature Sensor 3                : 0 C
Temperature Sensor 4                : 0 C
Temperature Sensor 5                : 0 C
Temperature Sensor 6                : 0 C
Temperature Sensor 7                : 0 C
Temperature Sensor 8                : 0 C

ここで重要なのは:

percentage_used                     : 0%

18か月の使用後、SSDの使用率は0%です。3年間使用してから1%に達した場合、SSDは300年間持続することを知っています。

明らかに、この回答は、他のコメントに返信するためのコメントセクションには収まりません。


tune2fs出力のどの部分がSSDの寿命に関係していますか?
-adrhc

@adrhc エラーメッセージを示すFraser Gunnの回答に対するtune2fsあなたのコメントに応じて、正しい呼び出し方法を示していました。
WinEunuuchs2Unix
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.