bashはファイルシステムと同期しなくなる可能性がありますか?


12

私は質問を正しく表現していないかもしれませんが、私が経験している症状を説明するために最善を尽くします。まず、コンテキストのために、Ubuntuサーバー(GUIなし)、バージョン12.04.3 LTS(lsb_releaseユーティリティーによる)を実行しています。私は通常、tmuxですべての作業を行い、Puttyを介してサーバーに接続し、すべてのテキスト編集にvimを使用します。

症状について。tmuxを使用しているため、通常は常にいくつかのウィンドウを開いています。そのうちの1つには、私が遊んでいるノードサーバーがあり、ユーザーアカウントのホーム(具体的には~/battleship)のサブディレクトリにあります。サーバーは、nginxを使用してサーバーからホストしているWebページと対話し、すべてのWebサイトコードが存在します/usr/share/nginx/www/bs(クライアントソースを編集するために別のウィンドウを開いたままにします)。何が起こるかというと、サーバーウィンドウをアイドル状態のままで数時間放置すると、同期がとれなくなるようです。lsファイルを実行して確認し、編集用に開くことができます(vim server.js)。ただし、それを行うと、変更を加えて保存するか、すぐに終了するかに関係なく、実行時にls繰り返しますが、.server.js.swpファイルが表示されますが、変更(もし行った場合)は一切持続しません。そのディレクトリから出て、そして再び戻った場合、それはそれ自体を修正します-私はそれを閉じるときに.swpを残さずに、ファイルを開いてそれを正常に編集できます。クライアントソースについては、/ wwwフォルダーでは発生しないことに気付いたため、クライアントソースの半分について言及しました(おそらく、ユーザーアカウントのホームディレクトリの外にあるためです)。

テキストのその壁の後、私の質問はこれです:んの誰もが知っている、なぜこれが起こって、そしてどのようにそれを防ぐためですか?Putty経由で接続し、tmux / vimを使用するLinuxサーバーはこれだけではないことを考えると、何らかの方法があるとしか想像できませんが、この奇妙な動作が発生するのはそれだけです。任意の助けをいただければ幸いです。

注:bash、tmux、およびputtyでタグ付けしました。そのうちの1つが原因であると想定しているためです。

更新:これは、cat /proc/mountGillesの要求どおりの出力です(ただし、ユーザー名と値の値ecryptfs_fnek_sigおよびecryptfs_sig検閲済みですが、これら2つのことは実際にはわかりませんが、暗号化に関連しており、申し訳ありませんが安全です)。

rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0

更新2:これはの出力ですuname -a

Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

更新3: memtestのパスを完了しました。これは、上記のテストの結果です。エラーなしで完了したように思えるので、何かの助けになるかどうかわかりません。何らかの方法で役立つ場合に備えて、ハードウェアの詳細を確認することもできます。


3
いいえ、bashは「ファイルシステムと同期をとることができません」。それはとにかく起こっていることではありません。ファイルシステムがファイルシステムと同期していないようです。それは間違いなく問題であり、それは奇妙な問題です。どのファイルシステムを使用していますか(の出力を投稿cat /proc/mounts)?これはおそらく仮想化サーバーですが、どのような仮想化を使用していますか?
ジル「SO-悪であるのをやめる」

1
@Gilles質問を更新して、出力を含めましたcat /proc/mounts。それがあなたにとって何かを意味することを願っています-私はまだLinuxにかなり慣れていないので、やることによって多くのことを学びました。
アレックス

4
そのため、問題はecryptfsファイルシステムで発生します。これは、ecryptfsのバグ、カーネルの他の部分、仮想化ソフトウェア(該当する場合)、またはハードウェア障害のバグのように見えます。これは、ボックス内の独自のハードウェア上またはラック上で実行されていますか?または、これは何らかのホスティングプロバイダーを備えた仮想化サーバーですか?の出力は何ですかuname -a何ですか?ハードウェアの場合は、コンソールを接続して、次回の起動時にメモリテストを実行します。ホストされている場合は、ホスティングプロバイダーに連絡して、これらの症状を説明してください。
ジル 'SO-悪であるのをやめる'

1
走ったら sudo sync、ファイルは更新されますか?
ブライアン

1
syncコマンドを試してください。また、df cmdは、ディレクトリの場所を示すのに便利です。/ proc / mountに似ていますが、より読みやすい出力です。やりますdf -h /www ~/battleship /usr/share/nginx/www/bs。encryptfsマウントに問題がありますか?そのディスクへの書き込みには余分なsw処理が必要なのかもしれません。
gaoithe

回答:


1

このようなことで私が見た唯一の経験は、ディレクトリが削除され、新しいディレクトリが作成されたときでした。AIXとSolarisには、この問題が何年も前にありました。削除されたディレクトリにオープンシェルセッションがある場合、ファイルシステムが同期しなくなったように見える予測不能な結果を​​取得できます。

bash1: mkdir test1
bash2: cd test1
bash1: touch test1/testfile
bash1: ls test1
testfile
bash2: ls
testfile
bash1: rm -rf test1
bash2: ls
???(unknown results)???

暗号化されたファイルシステムは、レビューするもののようにも聞こえます。暗号化されていないファイルシステムで試しましたか?

申し訳ありませんが、まだコメントを投稿できません。ポイントが足りません。


これは質問に関連しており、bashシェルには存在しないデフォルトのディレクトリが残っており、ファイルを作成することはできません。
ubfan1 14年

1
私はこの小さな実験を試すことができますが、この時点ではそれがecryptfsの問題であると確信しています。問題のディレクトリは間違いなく存在しています。cd .しばらくしてからセッションに戻ると、単純な作業の後でも正常に作業できます。現時点では、すべてをバックアップし、サーバーを消去し、暗号化されたファイルシステムなしで再インストールすることを検討しています。リモートで重要なものは何も保持しないので、ファイルの暗号化についてはあまり気にしません。
アレックス14年

UbuntuのeCryptfsメンテナー/著者は、バグレポートに非常に敏感です。解決策が見つからない場合は、おそらく彼に尋ねるか、バグレポートを提出する価値があります。
ブルージェイ

0

bashコマンドの間にsyncコマンドを実行してみてください。

sync - flush file system buffers

私はその必要性を自分で見つけたことがありませんが、実際に2番目のコマンドごとにタイプした少なくとも1人の人を知っています!遅いディスクで過去にひどく焼かれたに違いありません。

インターネットは、syncコマンドの使用に関する議論が少ないようです。ここでは非常に短い手動入力へのリンクですsynchttp://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.html

syncデータがメモリからディスクデバイスに書き込まれることを保証します。ディスクデバイス自体が遅い場合や問題がある場合、データはまだディスクデバイスキャッシュメモリにあり、ディスクに書き込まれない可能性があります。

ubuntuサーバーを実行しています。。。それはデスクトップ上のマシンですか?それともクラウド内ですか?または。。。他に何か?こちらをご覧くださいhttps : //serverfault.com/questions/534627/what-does-the-sync-command-doハードディスクの問題またはAmazon AWSの小さなインスタンスに関連するメモリからディスクへの低速同期。


1
役に立つかどうかsyncはわかりません。cd .とにかく問題を軽減するだけであることがわかりました。エイリアスを作成しrefました(1文字を保存するのは少しばかげていることは知っています)。これは、古いセッションに戻るたびに使用する習慣になっています。サーバーが何であるかについては、Ubuntuディストリビューションを実行している私のリビングルームの隅に住んでいるのは私の古いデスクトップタワーです(昨年新しいタワーを建てました)その上。
アレックス14年

0

FWIW問題はbashではなくlsコマンドによって表示されます。

ファイルを見るという事実は、それがまだそこにあることを意味します。他のものと同期していないものはなく、実行中の同期の量によって、関連するファイルシステムデータのキャッシュされたコピーのみの使用が妨げられることはありません。syncは、データを永続的なストレージにコミットするだけで、ビューを変更しません。

VIMセッションを使用していますか?VIMセッションは知らないので、自分で使用したことはありませんが、tmuxによってVIセッションマネージャーがファイルが閉じていることを認識せず、変更を追跡し続ける可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.