Không thể xóa thư mục Linux - đệ quy vô hạn


8

Chúng tôi có một NFS mount trên máy ảo RHEL6 hỗ trợ máy chủ kiểm soát phiên bản của chúng tôi - gần đây, một trong những kho lưu trữ đã hơi điên và đây là những gì tôi tìm thấy trên máy chủ:

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

Khi tôi chạy treengược lại thư mục, nó dường như được đệ quy vô hạn - ví dụ:

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

Tôi đã cố gắng xóa kho lưu trữ thông qua ref inode của nó:

[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

Tôi hơi mất công phải làm gì ở đây - thông tin inode trên ls -latrilệnh dường như chỉ ra rằng có 2 thư mục trong thư mục 'Heads' là liên kết cứng đến thư mục Heads?

Mọi ý tưởng về cách dọn dẹp này sẽ được hoan nghênh nhất - nghĩ rằng tôi đã giải quyết được vấn đề ứng dụng mà nó gây ra nhưng vấn đề lớn hơn với hệ thống tập tin cần phải được sắp xếp.

Cảm ơn bạn!

Chỉnh sửa: bit của đầu ra bổ sung:

không có ký tự ẩn:

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

nhưng đây là một số kết quả thú vị khi tôi thực sự ở trong đầu dir:

[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Đầu ra của bạn là số lẻ vì số lượng liên kết cho inode 5551210 là số lẻ nếu có hai thư mục phụ đó. Bạn có thể thử ls -latribkhông? Loại hệ thống tập tin cơ bản là gì?
Paul Haldane

Xin chào, loại hệ thống tệp là nfs4 - đầu ra có cờ -b giống hệt như không có - đã thêm thông tin tôi có thể ở trên
cũ Không có

Bạn đã xem thư mục có vấn đề trên máy chủ NFS (máy chủ mà VM điều khiển phiên bản của bạn đang gắn hệ thống tập tin từ đó) chưa? Tôi nghĩ rằng bạn cần phải xem những gì nó nghĩ đang xảy ra (và đó là loại hệ thống tập tin trên máy chủ NFS mà tôi đã hỏi về).
Paul Haldane

2
Hệ thống tập tin có còn nguyên vẹn không? Những dấu hỏi trong lsđầu ra là nghi ngờ đối với tôi. Bạn đã chạy fsck trên máy chủ NFS chưa?
Lacek

3
Tôi đặc biệt khuyên bạn nên thực hiện một fsck ... đặc biệt, trước khi bạn thấy bất kỳ tham nhũng nào nữa.
Có QUIT - Anony-Mousse

Câu trả lời:


3

Thứ nhất: Git không thể là nguyên nhân cũng như giải pháp của một vấn đề biểu hiện là đầu ra vô nghĩa từ đó ls. Ngừng sử dụng Git hoặc các công cụ khác trên hệ thống tập tin và ngắt kết nối nó để tránh tác hại.

Điều này trông giống như một hệ thống tập tin bị hỏng hoặc gắn kết bị hỏng. Hãy thử ngắt kết nối và đếm lại hệ thống tập tin trên máy khách. Hãy thử khởi động lại hoàn toàn máy khách. Hãy thử thực hiện gắn kết trên một khách hàng khác. Mỗi lần, hãy kiểm tra lsđầu ra đó để xem nó có trở nên bình thường không. Điều này sẽ giúp bạn chẩn đoán xem sự cố nằm ở phía máy chủ NFS. Nếu lsđầu ra tiếp tục trông giống nhau, việc điều tra và sửa chữa hệ thống tập tin ( fsckhoặc bất cứ điều gì) và / hoặc dịch vụ NFS (khởi động lại trình nền liên quan đến NFS; khởi động lại nếu nfsd là trong kernel) cần phải diễn ra ở phía máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.