3 cách hàng đầu để khắc phục lỗi “Không còn chỗ trống trên thiết bị” trong Linux


Những lỗi không có nguyên nhân rõ ràng là những vấn đề khó giải quyết nhất. Và mặc dù Linux thường đưa ra các thông báo lỗi cụ thể, nhưng đây là một trong số ít trường hợp nó thất bại.

Việc xảy ra lỗi “Không còn chỗ trống trên thiết bị” giải thích rất ít, đặc biệt nếu ổ đĩa của bạn chưa đầy. Tại sao thông báo lỗi này hiển thị? Tại sao bạn không thể tạo tệp mới mặc dù có đủ dung lượng trên đĩa? Và quan trọng nhất là bạn khắc phục nó như thế nào?

Hãy cùng tìm hiểu.

Ổ cứng của bạn thực sự có đủ dung lượng không?

Trước khi vội vàng tìm cách khắc phục, hãy đảm bảo rằng ngay từ đầu đã có vấn đề. Rốt cuộc, nếu dung lượng ổ đĩa thực sự đã hết trên hệ thống của bạn, bạn không cần phải hoảng sợ. Bạn chỉ có thể xóa dữ liệu không cần thiết để giải phóng thêm dung lượng.

Có hai lệnh hệ thống Linux để lấy thông tin về dung lượng ổ đĩa – du và df. Lệnh du ước tính mức sử dụng dung lượng ổ đĩa, trong khi lệnh df phân tích dung lượng trống hiện có trên đĩa. Việc sử dụng chúng kết hợp với sudo sẽ cung cấp cho bạn báo cáo chính xác về dung lượng thực sự có sẵn trên đĩa.

  1. Hãy bắt đầu với lệnh du. Đầu ra của nó có thể khá dài và cồng kềnh để thực hiện, vì vậy chúng tôi sẽ sử dụng cờ -s và -h. -s tóm tắt kết quả, trong khi -h đảm bảo con người có thể đọc được. Vì vậy, hãy nhập lệnh sudo du -sh /trong đó /trỏ đến thư mục cơ sở.
    1. Đừng lo lắng về tất cả các thư bị từ chối cấp phép – đó là cách nó truy tìm tất cả các thư mục con của hệ thống. Tùy thuộc vào kích thước của ổ đĩa, bạn có thể phải để nó chạy một lúc vì nó sẽ xử lý mọi thứ một cách đệ quy.
      1. Khi quét xong, nó sẽ xuất ra một danh sách đơn giản các thư mục cùng với kích thước của chúng. Ví dụ: đây là đầu ra của lệnh du được áp dụng cho một thư mục thông thường.
      2. Bây giờ chúng ta sẽ sử dụng df để xem dung lượng trống còn trống là bao nhiêu. Lệnh df sử dụng đơn giản hơn nhiều vì nó chỉ hiển thị các hệ thống tệp được gắn và số liệu thống kê sử dụng của chúng. Một lần nữa, chúng ta sẽ sử dụng cờ -h để làm cho kết quả đầu ra có thể đọc được.

        sudo df -h .

        Ý tưởng là kiểm đếm kết quả của lệnh du và df. Mọi sự khác biệt đều cho thấy dung lượng ổ đĩa không có sẵn miễn phí mặc dù không được bất kỳ tệp hoặc thư mục nào sử dụng.

        Tại sao Linux hiển thị "Không còn chỗ trống trên thiết bị"?

        Nếu bạn thấy thông báo lỗi “Không còn dung lượng trên thiết bị” mặc dù có đủ dung lượng trống trên đĩa thì nguyên nhân không phải do phần cứng. Việc tìm ra nguyên nhân chính xác gây ra lỗi có thể mất một chút thời gian để khắc phục sự cố.

        • Tệp đã xóa gần đây: Lý do phổ biến nhất dẫn đến lỗi này là do tệp đã bị xóa gần đây. Thông thường, một tệp sẽ bị xóa trong khi một quy trình vẫn đang sử dụng nó, giữ cho không gian được dành riêng ngay cả khi tệp đã hết.
        • Không đủ Inode: Một nguyên nhân thường gặp khác là không có đủ inode. Inode là các trang chỉ mục của hệ thống tệp Unix, chứa siêu dữ liệu của mọi tệp được lưu trữ. Tuy nhiên, inode không phải là vô hạn và việc hết inode trước khi có dung lượng lưu trữ có thể gây ra lỗi “Không còn dung lượng trên thiết bị”.
        • Ổ cứng bị lỗi: Khi đó tất nhiên có khả năng ổ cứng bị lỗi và phần lớn dung lượng trống rõ ràng đã bị các thành phần xấu chiếm dụng. Vì hệ thống không ghi được bất kỳ tệp nào vào những vị trí này nên nó sẽ báo lỗi.
        • Khắc phục 1: Khởi động lại quy trình bằng tệp đã xóa

          Nguyên nhân có thể xảy ra nhất gây ra lỗi “Không còn dung lượng trên thiết bị” là do quá trình vẫn sử dụng tệp đã bị xóa. Rất may, việc sửa lỗi này rất dễ dàng. Bạn chỉ cần khởi động lại quá trình để giải phóng bộ nhớ dự trữ.

          1. Để tìm ra quy trình có vấn đề, bạn cần sử dụng lệnh lsof và grep. Lệnh lsof sẽ cung cấp cho bạn danh sách tất cả các tệp đang mở đang được sử dụng bởi các tiến trình đang chạy và grep có thể thu hẹp lựa chọn thành những tệp đã bị xóa. Vì vậy hãy nhập Sudo lsof / | grep đã xóatrong đó / là thư mục cơ sở và | một đường ống để liên kết đầu ra của lsof với grep.
            1. Bây giờ, bạn có thể khởi động lại quy trình bị ảnh hưởng bằng lệnh sudo systemctl restart service_name, trong đó tên dịch vụ là tên của dịch vụ xuất hiện trong tìm kiếm.
            2. .
              1. Nếu có nhiều quy trình như thế này hoặc bạn không muốn bận tâm đến việc tìm kiếm các dịch vụ cụ thể, bạn có thể đặt lại tất cả chúng bằng lệnh sudo systemctl daemon-reload. Thao tác này sẽ tạo lại tất cả các phần phụ thuộc, có tính đến mọi thay đổi trong hệ thống tệp.
              2. Sau đó, không gian lưu trữ bị quá trình chiếm giữ sẽ sẵn sàng trở lại, cho phép bạn ghi tệp mà không gặp phải bất kỳ lỗi nào.

                Cách khắc phục 2: Kiểm tra Inode

                Mặc dù mỗi ổ đĩa có số lượng nút lớn nhưng số lượng này là hữu hạn. Và nếu hệ thống của bạn chứa quá nhiều tệp, bạn có thể đạt đến giới hạn này trước khi cạn kiệt dung lượng lưu trữ của ổ đĩa. Đây là lý do tại sao nên có tệp lớn thay vì có quá nhiều tệp nhỏ.

                Bạn có thể dễ dàng kiểm tra tính khả dụng của inode bằng cách sử dụng cờ -i với lệnh df. Như thế này:

                sudo df -i

                Điều này sẽ cho biết rõ ràng tổng số nút có trong hệ thống tệp, cùng với số lượng hiện đang được sử dụng. Nếu không còn nút trống nào trên hệ thống của bạn thì đây là nguyên nhân gây ra lỗi “Không còn chỗ trống trên thiết bị”.

                Vì các nút chỉ được tạo khi định dạng ổ đĩa lần đầu nên không có cách nào để tạo thêm các nút. Tất cả những gì bạn có thể làm là xóa mọi tệp không cần thiết để giải phóng inode cho các tệp trong tương lai.

                Cách khắc phục 3: Đánh dấu các khối xấu

                Hỏng dữ liệu là số phận tất yếu của bất kỳ ổ cứng nào. Mặc dù ổ đĩa mới sẽ không gặp phải vấn đề này nhưng các ổ đĩa cứng cũ hơn sẽ dần dần bắt đầu bị “xấu”.

                Điều này có nghĩa là các phần của ổ cứng không thể sử dụng được, mặc dù hệ thống tập tin vẫn coi chúng vẫn hoạt động. Các khối xấu này làm tăng sai dung lượng trống rõ ràng trên ổ đĩa, trong khi thực tế là không có tệp nào có thể được ghi vào chúng. Điều này dẫn đến lỗi “Không còn dung lượng trên thiết bị” do hệ điều hành cố gắng lưu trữ bất kỳ dữ liệu nào trên các vị trí này nhưng không thành công.

                Không có cách nào thực sự để khắc phục vấn đề này vì các thành phần xấu là kết quả của sự hao mòn vật lý của ổ cứng. Điều duy nhất bạn có thể làm là đánh dấu các thành phần xấu để chúng không còn được hệ thống tệp tham chiếu nữa..

                Việc thực hiện việc này yêu cầu bạn phải khởi động từ CD trực tiếp vì bạn không thể thực hiện Kiểm tra hệ thống tệp trong ổ đĩa đang chạy. Khi bạn làm điều đó, chỉ cần sử dụng lệnh sau:

                sudo fsck -vcck /dev/sda

                Điều này thay thế /dev/sda bằng đường dẫn của ổ đĩa bạn muốn sửa chữa. Điều này sẽ tự động phát hiện tất cả các khối xấu trên ổ đĩa và đánh dấu chúng là không sử dụng được. Tuy nhiên, nó sẽ không cung cấp thêm dung lượng lưu trữ cho bạn, vì vậy hãy chuẩn bị dọn sạch một số tệp vô dụng để giải phóng dung lượng trên ổ đĩa.

                Cách tốt nhất để khắc phục lỗi “Không còn dung lượng trên thiết bị” là gì?

                Lý do thông thường khiến bạn gặp lỗi “Không còn dung lượng trên thiết bị” trên Ubuntu hoặc bất kỳ bản phân phối Linux nào khác là một tệp đã xóa vẫn đang được sử dụng bởi một quy trình đang chạy. Thao tác này sẽ dự trữ dung lượng lưu trữ đã bị tệp chiếm giữ, ngăn các hoạt động khác ghi dữ liệu vào không gian đó.

                Khắc phục sự cố này cũng là cách dễ nhất vì tất cả những gì bạn cần làm là khởi động lại quy trình được đề cập. Tuy nhiên, các nguyên nhân khác gây ra lỗi không dễ giải quyết.

                Cho dù ổ đĩa của bạn bị cản trở bởi các khối dữ liệu xấu hay đã hết inode, không có cách nào trực tiếp để khắc phục những sự cố này. Bạn phải xóa các tệp hiện có để nhường chỗ cho dữ liệu mới được ghi.

                .

                bài viết liên quan:


                30.08.2022