3 cách hàng đầu để sửa lỗi “Không còn dung lượng trên thiết bị” trong Linux

Lỗi mà không có nguyên nhân rõ ràng là những vấn đề khó chịu nhất để giải quyết. Và trong khi Linux thường cụ thể trong các thông báo lỗi của nó, đây là một trong số ít những lần nó làm rơi bóng.

Lỗi "Không còn chỗ trên thiết bị" giải thích rất ít, đặc biệt nếu ổ đĩa của bạn sắp đầ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 sửa nó như thế nào?

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

Ổ cứng(Hard Drive Actually Have Enough Space) của bạn có đủ dung lượng không ?

Trước khi bạn vội vàng tìm cách khắc phục, hãy chắc chắn rằng có một vấn đề, để bắt đầu. Sau cùng, 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 lo lắng. 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 không gian đĩa, trong khi lệnh df phân tích dung lượng trống hiện có trên đĩa. Sử dụng chúng kết hợp với sudo cung cấp cho bạn một 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ác cờ -s và -h. -s tóm tắt kết quả, trong khi -h đảm bảo rằng con người có thể đọc được. Vì vậy, hãy nhập lệnh sudo du -sh / where / trỏ đến thư mục cơ sở.

  1. Đừng lo lắng về tất cả các thông báo bị từ chối cho phép - đó là cách nó rà soát 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 trong một thời gian, vì nó đi qua mọi thứ một cách đệ quy.

  1. Khi du hoàn tất quá trình quét, nó sẽ xuất ra một danh sách các thư mục đơn giản 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.

Bây giờ chúng ta sẽ sử dụng df để xem còn bao nhiêu dung lượng trống. Lệnh df dễ sử dụng hơn nhiều vì nó chỉ hiển thị các hệ thống tệp được gắn kết và số liệu thống kê sử dụng của chúng. Một lần nữa, chúng tôi sẽ sử dụng cờ -h để con người có thể đọc được đầu ra.

sudo df -h

Ý tưởng là kiểm đếm kết quả của các lệnh du và df. Bất kỳ sự khác biệt nào chỉ ra không gian đĩa không còn trống mặc dù không được sử dụng bởi bất kỳ tệp hoặc thư mục nào.

Tại sao Linux hiển thị(Does Linux Show) “Không còn dung lượng(Space Left) 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ống trên thiết bị” mặc dù có đủ dung lượng trống trên đĩa của bạn, thì đó không phải là lỗi 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 để gặp lỗi này là tệp đã bị xóa gần đây. Thường thì một tệp sẽ bị xóa trong khi một tiến trình vẫn đang sử dụng nó, giữ nguyên dung lượng mặc dù tệp đã biến mất.
  • Không đủ Inodes(Enough Inodes) : Một nguyên nhân thường xuyên khác là không có đủ Inodes . Inodes là các trang chỉ mục của hệ thống tệp Unix , giữ siêu dữ liệu của mọi tệp trên bộ nhớ. Tuy nhiên, số inodes không giới hạn và việc hết inodes trước khi dung lượng lưu trữ có thể khiến bạn gặp lỗi "Không còn dung lượng trên thiết bị".
  • cứng(Hard) bị lỗi: 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 thể ghi bất kỳ tệp nào vào các vị trí này, nó sẽ gây ra lỗi.

Khắc phục 1: Khởi động lại quy trình bằng cách sử dụng tệp đã xóa(Using Deleted Files)

Nguyên nhân có thể xảy ra nhất của lỗi “Không còn dung lượng trên thiết bị” là quá trình vẫn sử dụng tệp đã 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(restart the process) để giải phóng dung lượng đã dự trữ.

  1. Để tìm ra quá 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 quy 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 bị xóa trong đó / 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 quá trình bị ảnh hưởng bằng lệnh sudo systemctl khởi động lại 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.

  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. Điều này tạo lại tất cả các phụ thuộc, có tính đến bất kỳ thay đổi nào trong hệ thống tệp.

Sau đó, không gian lưu trữ do quá trình giữ lại sẽ khả dụng trở lại, cho phép bạn ghi tệp mà không gặp bất kỳ lỗi nào.

Khắc phục 2: Kiểm tra Inodes

Mặc dù mỗi ổ đĩa có một số lượng lớn các inodes, nhưng nó là hữu hạn. Và nếu hệ thống của bạn chứa nhiều tệp đáng kinh ngạc, thì 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 tốt hơn nên có các tệp lớn hơn là quá nhiều tệp nhỏ.

Bạn có thể dễ dàng kiểm tra tính khả dụng của các inodes 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ố inode 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 inodes trống trên hệ thống của bạn, đây là nguồn gốc của lỗi "Không còn dung lượng trên thiết bị".

Vì inodes chỉ được tạo khi định dạng ổ đĩa lần đầu tiên, nên không có cách nào để tạo thêm inodes. 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 inodes cho các tệp trong tương lai.

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

Dữ liệu(Data) bị hỏng là số phận không thể tránh khỏi của bất kỳ ổ cứng nào. Mặc dù một ổ đĩ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 "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 vẫn coi chúng là chức năng. Những khối xấu này làm tăng sai không gian 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ị", vì hệ điều hành cố gắng và không lưu trữ được bất kỳ dữ liệu nào trên các vị trí này.

Không có cách thực sự nào để 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.

Việc này yêu cầu bạn khởi động từ đĩa CD trực tiếp(Live CD) , vì bạn không thể thực hiện Kiểm tra Hệ thống Tệp(File System Check) 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 thể sử dụng được. Tuy nhiên, nó sẽ không cung cấp cho bạn thêm dung lượng lưu trữ, vì vậy hãy chuẩn bị để dọn dẹp một số tệp vô dụng để giải phóng dung lượng trên ổ đĩa.

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

Lý do thông thường để 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 đã bị xóa vẫn đang được sử dụng bởi một quá trình đang chạy. Điều này bảo lưu bộ nhớ đã bị chiếm bởi tệp, 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ễ dàng nhất, vì tất cả những gì bạn cần làm là khởi động lại quá trình được đề cập. Tuy nhiên, các nguyên nhân khác của 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 hoặc đã hết inodes, không có cách nào trực tiếp để khắc phục những vấn đề 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.



About the author

Tôi là một chuyên gia máy tính với hơn 10 năm kinh nghiệm. Khi rảnh rỗi, tôi thích giúp việc tại bàn văn phòng và dạy bọn trẻ cách sử dụng Internet. Kỹ năng của tôi bao gồm nhiều thứ, nhưng điều quan trọng nhất là tôi biết cách giúp mọi người giải quyết vấn đề. Nếu bạn cần ai đó có thể giúp bạn trong việc khẩn cấp hoặc chỉ muốn một số mẹo cơ bản, vui lòng liên hệ với tôi!



Related posts