Linuxディレクトリを削除できません-無限再帰


8

バージョン管理サーバーをサポートするRHEL6 VMにNFSマウントがあります。最近、リポジトリの1つが少しおかしくなり、サーバー上でこれが見つかりました。

ls -latri repo.git/refs/heads/

total 28
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..

私がtreeディレクトリに対して実行すると、それは無限に再帰的であるように見えます-例:

repo.git/refs/heads/
├──
│   ├──
│   │   ├──
│   │   │   ├──
│   │   │   │   ├──
│   │   │   │   │   ├──
│   │   │   │   │   │   ├──
│   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──

私はそのiノード参照を介してリポジトリを削除しようとしました:

[root@node repo.git/refs]# ls -latri
total 16
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 heads

[root@node repo.git/refs]# find . -inum 5551210 -exec rm -rf {} \;
rm: cannot remove `./refs/heads': Directory not empty
find: `./refs/heads/': No such file or directory
find: `./refs/heads/': No such file or directory

私はここで何をするか少し迷っています- ls -latriコマンドのiノード情報は、「heads」ディレクトリに、headsディレクトリへのハードリンクである2つのディレクトリがあることを示しているようです。

これをクリーンアップする方法についてのアイデアは大歓迎です-私がそれが引き起こしていたアプリケーションの問題を解決したと思いますが、ファイルシステムのより大きな問題はソートする必要があります。

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

編集:追加出力のビット:

隠し文字なし:

[root@node repo.git/refs]# ls -latrib heads/
total 28
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..

しかし、ここに私が実際ヘッドディレクトリにいるときの楽しい出力があります:

[root@node repo.git/refs/heads]# ls -latrib
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
total 12
      ? -?????????? ? ?   ?      ?            ?
      ? -?????????? ? ?   ?      ?            ?
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..

あなたのls -latriこれら2つの追加のディレクトリがある場合、iノード5551210のためのリンク数が奇数であると出力は奇数です。やってみls -latribませんか?基本的なファイルシステムのタイプは何ですか?
Paul Haldane 2017年

ファイルシステムタイプはnfs4です。-bフラグを指定した場合の出力は、指定しない場合とまったく同じです。上記の情報を追加しました
oldNoakes

NFSサーバー(バージョン管理VMがファイルシステムをマウントしているサーバー)の問題のあるディレクトリを確認しましたか?私はあなたがそれが何が起こっているのかを見る必要があると思います(そして私が尋ねていたのはNFSサーバー上のファイルシステムタイプでした)。
Paul Haldane 2017年

2
ファイルシステムは損なわれていませんか?ls出力にあるこれらの疑問符は私にとって疑わしいものです。NFSサーバーでfsckを実行しましたか?
Lacek

3
私はfsckを実行することを強くお勧めします...特に、これ以上の破損が見られる前に
QUITあり--Anony-Mousse 2017年

回答:


3

まず、Gitは、からの無意味な出力として現れる問題の原因でも解決策でもありませんls。害を避けるために、ファイルシステムでGitまたは他のツールの使用を停止し、マウント解除します。

これは、壊れたファイルシステムまたは壊れたマウントのように見えます。クライアントのファイルシステムをアンマウントして再マウントしてみてください。クライアントを完全に再起動してみてください。別のクライアントで同じマウントを実行してみてください。毎回、そのls出力をチェックして、正常になるかどうかを確認します。これは、問題がNFSサーバー側にあるかどうかを診断するのに役立ちます。ls出力が同じように見える場合は、ファイルシステム(fsckまたはその他)および/またはNFSサービス(NFS関連のデーモンを再起動します。nfsdがカーネルにある場合は再起動)の調査と修復をサーバー側で行う必要があります。

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