Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn khắc phục sự cố Ubuntu No space left on device root chi tiết và nhanh chóng

    Nguyễn Hưng

    Ngày đăng:

    09/03/2026

    Cập nhật lần cuối:

    09/03/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    09/03/2026

    Cập nhật lần cuối:

    09/03/2026

    Mục lục

    Thông báo lỗi No space left on device trên Ubuntu nghĩa là phân vùng đang dùng đã hết tài nguyên khiến hệ thống không ghi thêm dữ liệu. Nguyên nhân thường gặp nhất là do đầy dung lượng ổ đĩa hoặc hết inodes do có quá nhiều file nhỏ. Trong bài viết dưới đây, mình sẽ hướng dẫn bạn các khắc phục lỗi này hiệu quả, chi tiết.

    Những điểm chính

    • Định nghĩa lỗi “no space left on device”: Hiểu rõ lỗi này xảy ra khi phân vùng root cạn kiệt tài nguyên lưu trữ, có thể do hết dung lượng vật lý hoặc hết inodes.
    • Nguyên nhân gây lỗi: Nắm được các nguyên nhân chính khiến phân vùng root bị đầy, làm cơ sở để xác định hướng khắc phục.
    • Cách khắc phục lỗi hiệu quả: Nắm vững quy trình từng bước để chẩn đoán và giải phóng dung lượng, từ việc kiểm tra bằng df -h đến dọn dẹp cache, log và các phiên bản kernel cũ.
    • Cách ngăn ngừa lỗi: Biết được các biện pháp phòng ngừa hiệu quả để tránh gặp lại lỗi này, bao gồm quy hoạch phân vùng, kiểm soát log và tự động hóa việc dọn dẹp.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như cách phân biệt giữa hết dung lượng và hết inode, cách dọn dẹp Docker và khi nào nên chỉnh lại phân vùng.

    Lỗi Ubuntu No space left on device root là gì?

    “No space left on device” (Mã lỗi hệ thống: ENOSPC) là thông báo lỗi tới hạn từ Kernel Linux cho biết phân vùng gốc đã hết tài nguyên lưu trữ và không thể thực hiện tác vụ ghi dữ liệu mới. Trong kỹ thuật hệ thống, lỗi này được định nghĩa qua hai trường hợp cụ thể:

    • Cạn kiệt khối dữ liệu: Tổng dung lượng vật lý được cấp phát cho phân vùng root đã bị chiếm dụng 100%.
    • Cạn kiệt Inode: Mặc dù dung lượng ổ cứng có thể vẫn còn trống, nhưng bảng quản lý file đã đầy.
    Lỗi ubuntu no space left on device root là thông báo cho biết phân vùng gốc đã hết tài nguyên lưu trữ
    Lỗi Ubuntu No space left on device root là thông báo cho biết phân vùng gốc đã hết tài nguyên lưu trữ

    Nguyên nhân gây lỗi No space left on device trong Linux

    Một số nguyên nhân phổ biến gồm:

    • Dung lượng ổ đĩa root quá nhỏ so với nhu cầu sử dụng ban đầu.
    • Log hệ thống tăng quá nhanh (đặc biệt trong /var/log) do dịch vụ hoặc ứng dụng ghi lỗi liên tục.
    • Cài đặt nhiều gói phần mềm, cập nhật hoặc kernel cũ nhưng chưa được dọn dẹp.
    • Thư mục cache và file tạm (như /var/cache/apt, /tmp) chiếm nhiều dung lượng.
    • Ứng dụng hoặc container (Docker, Snap, VM) lưu dữ liệu trực tiếp trên phân vùng root.
    • File lớn hoặc dữ liệu sao lưu vô tình được lưu trong / thay vì phân vùng khác.

    Khi phân vùng root bị đầy, nhiều dịch vụ có thể hoạt động không ổn định hoặc ngừng hẳn, vì vậy cần kiểm tra và giải phóng dung lượng kịp thời.

    Bước 1: Kiểm tra hiện trạng phân vùng

    Đầu tiên, bạn cần xác định dung lượng khả dụng trên hệ thống file bằng lệnh df kết hợp với tham số -h để hiển thị thông tin dễ đọc:

    df -h

    Lệnh trên sẽ hiển thị dung lượng của các phân vùng, bao gồm phân vùng root (/). Nếu cột Use% hiển thị tỷ lệ cao (ví dụ: 90% – 100%) và cột Avail (dung lượng trống) ở mức thấp, đây là nguyên nhân trực tiếp gây ra lỗi.

    Kiểm tra hiện trạng phân vùng
    Kiểm tra hiện trạng phân vùng

    Ở đây, phân vùng root (/dev/sda1) chỉ còn 3GB dung lượng trống và đang sử dụng tới 93% dung lượng. Lúc này, hệ thống sẽ không thể cài đặt thêm phần mềm hoặc ghi các file mới vào phân vùng này.

    Bước 2: Giải phóng dung lượng Root

    Để khôi phục hoạt động của hệ thống, bạn cần dọn dẹp và thu hồi không gian lưu trữ theo các bước sau:

    1. Dọn dẹp cache trình quản lý gói và Log hệ thống

    Các file tạm thời từ trình quản lý gói và nhật ký hệ thống thường chiếm dụng nhiều tài nguyên.

    • Xóa cache của APT: Bạn tiến hành xóa các gói tin đã tải về và gỡ bỏ các gói phụ thuộc không còn cần thiết bằng cách chạy lệnh sau:
    sudo apt clean
    sudo apt autoremove
    Xóa cache của APT
    Xóa cache của APT
    • Tối ưu hóa Journal Logs: Cách này sẽ giúp bạn giới hạn dung lượng lưu trữ của journal logs. Ví dụ, để giữ lại tối đa 100MB, bạn thực hiện lệnh sau đây:
    sudo journalctl --vacuum-size=100M
    Tối ưu hóa Journal Logs
    Tối ưu hóa Journal Logs

    2. Kiểm tra và xử lý thư mục /var

    Thư mục /var là nơi chứa dữ liệu biến đổi thường xuyên như log, cache ứng dụng,… Để xác định các thư mục con đang chiếm dụng nhiều dung lượng nhất, bạn sử dụng lệnh sau:

    sudo du -sh /var/*

    Bạn hãy kiểm tra các thư mục lớn có thể chưa nhiều file không cần thiết như /var/log/var/cache rồi thực hiện xóa hoặc xoay vòng các file cũ không còn giá trị sử dụng.

    Kiểm tra và xử lý thư mục /var
    Kiểm tra và xử lý thư mục /var

    3. Xóa các file không cần thiết trong /home

    Trong trường hợp thư mục /home không được phân tách thành phân vùng riêng, dữ liệu người dùng sẽ chiếm dụng không gian của root. Bạn tiến hành kiểm tra dung lượng chi tiết bằng lệnh sau:

    sudo du -sh /home/*

    Sau đó, bạn xác định các user chiếm nhiều dung lượng để xóa bỏ hoặc di chuyển dữ liệu sang phân vùng lưu trữ khác.

    Xác định các user chiếm nhiều dung lượng
    Xác định các user chiếm nhiều dung lượng

    4. Loại bỏ các phiên bản Kernel cũ

    Hệ điều hành Linux thường giữ lại các phiên bản kernel cũ sau khi cập nhật gây tiêu tốn đáng kể dung lượng phân vùng /boot hoặc root. Để xóa các kernel cũ, bạn thực hiện các bước sau:

    Bước 1: Bạn chạy lệnh sau để liệt kê các kernel đã cài đặt:

    dpkg --list | grep linux-image
    Bạn liệt kê các kernel đã cài đặt
    Bạn liệt kê các kernel đã cài đặt

    Bước 2: Tiếp theo, bạn thực hiện lệnh dưới đây để chỉ giữ lại phiên bản kernel đang hoạt động và gỡ bỏ các phiên bản cũ cụ thể:

    sudo apt-get remove --purge linux-image-<version>

    Thay thế <version> bằng phiên bản kernel cụ thể bạn cần xóa.

    5. Sử dụng Live USB

    Nếu phân vùng root đã đầy và bạn không thể thực hiện các lệnh dọn dẹp trực tiếp, bạn có thể sử dụng một Live USB của Ubuntu hoặc các bản phân phối Linux. Việc này giúp bạn truy cập vào hệ thống mà không cần phải khởi động trực tiếp từ ổ cứng đang bị đầy.

    • Bước 1: Đầu tiên, bạn khởi động hệ thống từ Live USB.
    • Bước 2: Tiếp theo, bạn mở Terminal và gắn kết (mount) phân vùng root của ổ cứng:
    sudo mount /dev/sda1 /mnt 
    # Thay sda1 bằng phân vùng root của bạn
    • Bước 3: Sau đó, bạn truy cập vào /mnt để xóa các file không cần thiết, giải phóng dung lượng tối thiểu để hệ thống có thể khởi động lại.

    Cách ngăn ngừa lỗi Ubuntu No space left on device root

    Để hạn chế và tránh gặp lỗi No space left on device, bạn có thể áp dụng các biện pháp sau:

    • Phân bổ dung lượng hợp lý ngay từ đầu: Tạo phân vùng root (/) đủ lớn hoặc tách riêng các thư mục như /home, /var, /tmp sang các phân vùng khác có dung lượng lớn hơn để giảm tải cho phân vùng gốc.
    • Theo dõi dung lượng ổ đĩa thường xuyên: Sử dụng các công cụ giám sát, tác vụ định kỳ (cron) hoặc cảnh báo email để phát hiện sớm khi dung lượng root gần đầy.
    • Dọn dẹp hệ thống định kỳ: Xóa file tạm, cache, log cũ và các gói phần mềm không còn sử dụng để giải phóng không gian.
    • Tự động hóa việc dọn dẹp: Áp dụng các công cụ như logrotate hoặc cron job để xoay vòng, xóa hoặc lưu trữ log cũ tự động.
    • Tránh lưu file lớn trong thư mục /: Các file sao lưu, dữ liệu tải về hoặc media nên được lưu trên phân vùng dữ liệu riêng hoặc ổ đĩa đã mount, không để chiếm dung lượng phân vùng gốc.
    Bạn cần phân bổ phân vùng lưu trữ phù hợp
    Bạn cần phân bổ phân vùng lưu trữ phù hợp (Nguồn: Internet)

    Câu hỏi thường gặp

    Làm sao phân biệt hết dung lượng ổ đĩa và hết inode khi lỗi ENOSPC?

    Bạn có thể dùng df -h để kiểm tra dung lượng và df -i để kiểm tra inode; nếu Use% của inode ở mức 100% trong khi dung lượng vẫn còn, nghĩa là bạn bị đầy inode chứ không phải hết dung lượng vật lý. Trong trường hợp này, cần tập trung xóa bớt số lượng file nhỏ thay vì chỉ tìm các file lớn.

    Khi dùng Docker trên Ubuntu hay bị “No space left on device”, nên dọn dẹp thế nào cho an toàn?

    Docker thường chiếm nhiều dung lượng qua image, container dừng, volume không dùng và build cache. Bạn có thể dùng docker system df để xem chi tiết, sau đó dùng docker system prune hoặc docker system prune -a --volumes và lên kế hoạch gắn thêm phân vùng/ổ đĩa riêng cho Docker nếu workload lớn.

    Có nên chỉnh lại phân vùng khi root thường xuyên đầy, hay chỉ dọn dẹp là đủ?

    Nếu lỗi chỉ xảy ra thỉnh thoảng do log tăng đột biến thì bạn dọn dẹp, tối ưu logrotate, journalctl, APT cache,… là đủ. Nhưng nếu phân vùng root quá nhỏ so với mô hình sử dụng (dịch vụ log nhiều, dùng Docker/Kubernetes, CI/CD,…) thì bạn nên quy hoạch lại bằng cách: Dùng LVM hoặc tăng dung lượng/di dời dữ liệu sang phân vùng riêng như /var, /home, /var/lib/docker để tránh tái diễn.

    Lỗi Ubuntu No space left on device root là sự cố phổ biến trong vận hành Linux, đặc biệt với các máy chủ có tài nguyên hạn chế. Việc nắm vững quy trình kiểm tra df, du và kỹ năng dọn dẹp hệ thống là yêu cầu thiết yếu để duy trì hiệu suất và tính sẵn sàng cho hệ thống của bạn.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng
    Hướng dẫn sử dụng lệnh pidstat trong Linux để giám sát tài nguyên các tiến trình sử dụng

    Lệnh pidstat là công cụ chuyên dụng trên hệ thống Linux, được sử dụng để giám sát tài nguyên mà các tiến trình đang sử dụng. Bài viết này được mình đúc kết từ quá trình trực tiếp xử lý hàng nghìn ticket tối ưu hệ thống cho khách hàng tại Vietnix, nơi mà mỗi…

    20/04/2026

    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng
    smartctl là gì? Cách sử dụng smartctl trong Linux để kiểm tra sức khỏe ổ cứng

    smartctl là một tiện ích dòng lệnh giúp quản lý và giám sát hệ thống S.M.A.R.T., từ đó theo dõi chi tiết sức khỏe ổ cứng HDD/SSD trong môi trường máy chủ lẫn máy trạm cá nhân. Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt, sử dụng các lệnh smartctl quan trọng…

    14/04/2026

    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux
    cryptsetup là gì? Cách mã hóa phân vùng với cryptsetup (LUKS) trên Linux

    cryptsetup là tiện ích dòng lệnh nguồn mở trong Linux dùng để quản lý mã hóa đĩa dựa trên dm-crypt và chuẩn LUKS, hỗ trợ tạo volume an toàn với nhiều khóa và tương thích cao. Bài viết này hướng dẫn toàn diện về cryptsetup từ cài đặt, quy trình mã hóa, quản lý key…

    14/04/2026

    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux
    Aureport là gì? Hướng dẫn sử dụng lệnh aureport trên Linux

    Aureport là công cụ dòng lệnh mạnh mẽ trong hệ thống auditd Linux, chuyên tạo báo cáo thống kê tóm tắt từ các tệp nhật ký kiểm toán. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng aureport để giám sát bảo mật và phân tích hoạt động hệ thống hiệu quả. Những…

    09/04/2026

    linux

    system-linux

    text