Tidak dapat menghapus direktori Linux - rekursi tak terbatas

8

Kami memiliki NFS mount pada RHEL6 VM yang mendukung server kontrol versi kami - baru-baru ini, salah satu repositori menjadi sedikit gila dan ini yang saya temukan di server:

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 ..

Ketika saya berlari treemelawan dir, tampaknya bersifat rekursif tanpa batas - misalnya:

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

Saya telah berusaha menghapus repositori melalui inode refnya:

[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

Saya sedikit bingung apa yang harus dilakukan di sini - info inode pada ls -latriperintah tampaknya menunjukkan bahwa ada 2 direktori di direktori 'kepala' yang merupakan hardlink ke direktori kepala?

Setiap ide tentang cara membersihkan ini akan sangat disambut baik - saya pikir saya telah memecahkan masalah aplikasi yang disebabkannya tetapi masalah yang lebih besar dengan sistem file perlu disortir.

Terima kasih!

Edit: sedikit output tambahan:

tidak ada karakter tersembunyi:

[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 ..

tapi di sini ada beberapa output yang menyenangkan ketika saya benar-benar di dir head:

[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 ..
oldNoakes
sumber
ls -latriOutput Anda aneh karena jumlah tautan untuk inode 5551210 aneh jika ada dua direktori tambahan. Bisakah kamu mencoba ls -latrib? Apa tipe sistem file yang mendasarinya?
Paul Haldane
Hei, tipe sistem file adalah nfs4 - output dengan flag -b sama persis dengan tanpa - telah menambahkan info apa yang saya dapat di atas
oldNoakes
Sudahkah Anda melihat direktori yang bermasalah pada server NFS (server tempat VM Anda mengendalikan versi memasang sistem file)? Saya pikir Anda perlu melihat apa yang dipikirkannya terjadi (dan itu adalah tipe sistem file pada server NFS yang saya tanyakan).
Paul Haldane
2
Apakah sistem file utuh? Tanda-tanda tanya di bagian lskeluaran itu mencurigakan bagi saya. Sudahkah Anda menjalankan fsck di server NFS?
Lacek
3
Saya sangat menyarankan untuk melakukan fsck ... khususnya, sebelum Anda melihat korupsi lebih lanjut.
Memiliki QUIT - Anony-Mousse

Jawaban:

3

Pertama: Git tidak bisa menjadi penyebab atau solusi dari masalah yang bermanifestasi sebagai keluaran yang tidak masuk akal dari ls. Hentikan penggunaan Git atau alat lain di sistem file dan lepaskan itu untuk menghindari bahaya.

Ini terlihat seperti sistem file yang rusak atau gunung yang rusak. Coba unmount dan remount sistem file pada klien. Coba reboot sepenuhnya klien. Coba lakukan pemasangan yang sama pada klien lain. Setiap kali, periksa lsoutput itu untuk melihat apakah itu menjadi normal. Ini akan membantu Anda mendiagnosis apakah masalahnya ada di sisi server NFS. Jika lsoutput terus terlihat sama, investigasi dan perbaikan filesystem ( fsckatau apa pun) dan / atau layanan NFS (restart daemoon terkait NFS; reboot jika nfsd di-kernel) perlu dilakukan di sisi server.

kehancuran
sumber