Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Theo mặc định, Docker lưu trữ mọi thứ bên trong “/var/lib/docker”, nằm trên phân vùng gốc (/). Khi vùng chứa của bạn tăng lên, thư mục này có thể đầy nhanh chóng. Nếu bạn nhận thấy máy chủ của mình chạy chậm, không lưu được dữ liệu hoặc gặp sự cố ngẫu nhiên thì có thể là do phân vùng gốc đã hết dung lượng. Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn các phương pháp để di chuyển khối lượng Docker (hoặc dữ liệu) của bạn sang một phân vùng khác và giải phóng dung lượng trong phân vùng gốc.

Mục lục

Tại sao bạn cần di chuyển các ổ Docker sang phân vùng khác

Các vùng chứa Docker thường tạo ra một lượng lớn dữ liệu liên tục. Theo thời gian, dữ liệu này có thể tiêu tốn dung lượng lưu trữ của phân vùng gốc của bạn. Di chuyển khối Docker sang phân vùng khác giúp bạn:

  • Không gian trống trên hệ thống tập tin gốc
  • ngăn chặn sự cố hệ thống do hết đĩa
  • lưu trữ dữ liệu ứng dụng lớn trên bộ nhớ chuyên dụng
  • cải thiện quản lý bộ nhớ tổng thể

Ví dụ:các vùng chứa cơ sở dữ liệu như MySQL hoặc PostgreSQL có thể lưu trữ hàng gigabyte dữ liệu trong các ổ đĩa. Di chuyển những ổ đĩa đó sang một phân vùng chuyên dụng lớn hơn có thể giúp duy trì sự ổn định của hệ thống.

Xác định vị trí thư mục ổ đĩa Docker

Trước khi di chuyển một khối Docker, trước tiên chúng ta cần xác định vị trí Docker lưu trữ nó trên hệ thống. Chạy lệnh sau để liệt kê tất cả các khối Docker có sẵn:

docker volume ls
Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Sau khi xác định tên ổ đĩa, hãy chạy lệnh bên dưới để kiểm tra ổ đĩa cụ thể đó:

docker volume inspect volume_name

Lệnh này hiển thị thông tin chi tiết về ổ đĩa. Ở đầu ra, hãy tìm Mountpoint lĩnh vực. Nó hiển thị chính xác thư mục nơi Docker lưu trữ dữ liệu ổ đĩa.

Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Di chuyển toàn bộ gốc dữ liệu Docker

Một cách để di chuyển dữ liệu Docker sang một phân vùng khác là di chuyển toàn bộ thư mục lưu trữ Docker, bao gồm các ổ đĩa, hình ảnh, vùng chứa và nhật ký. Đây là phương pháp sạch sẽ và an toàn nhất nếu “/var/lib/docker” đang đầy.

Với mục đích này, trước tiên, bạn cần dừng dịch vụ Docker để đảm bảo không có tệp nào thay đổi trong quá trình di chuyển:

sudo systemctl stop docker

Tiếp theo, bạn có thể sao chép dữ liệu Docker bằng lệnh rsync:

sudo rsync -avxP /var/lib/docker/ /path/to/new/partition/docker-data/

Lưu ý :Thay đổi “/path/to/new/partition/” thành đường dẫn của phân vùng mới nơi bạn muốn di chuyển thư mục tới.

Lệnh này sao chép thư mục Docker trong khi vẫn giữ quyền và hiển thị tiến trình trong quá trình truyền.

Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Ngoài ra, bạn có thể sử dụng lệnh sau để duy trì các thuộc tính Docker bổ sung như liên kết cứng, ACL và thuộc tính mở rộng:

sudo rsync -aHAX --info=progress2 /var/lib/docker/ /mnt/docker-data/

Phiên bản này được khuyên dùng khi di chuyển dữ liệu Docker vì nó bảo tồn nhiều siêu dữ liệu hệ thống tệp hơn và cung cấp chỉ báo tiến trình tổng thể rõ ràng hơn.

Sau đó, đổi tên thư mục dữ liệu cũ để sao lưu trước khi xóa.

sudo mv /var/lib/docker /var/lib/docker.old

Bây giờ, hãy cập nhật cấu hình của Docker bằng cách mở tệp daemon bằng lệnh này:

sudo nano /etc/docker/daemon.json

Thêm nội dung sau vào tệp này:

{
"data-root": "/path/to/new/partition/docker-data"
}
Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Cuối cùng, khởi động lại Docker bằng sudo systemctl start docker . Sau này, bạn có thể xác nhận thư mục dữ liệu Docker mới bằng lệnh sau:

docker info | grep "Docker Root Dir"
Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Nếu mọi thứ đều ổn, hãy xóa bản sao lưu cũ:

sudo rm -rf /var/lib/docker.old

Di chuyển tất cả dữ liệu Docker bằng Docker Desktop (Phương thức GUI)

Docker Desktop cho phép bạn di chuyển tất cả dữ liệu Docker sang phân vùng khác bằng cách thay đổi Vị trí ảnh đĩa. Tùy chọn này chuyển mọi thứ được Docker lưu trữ, bao gồm hình ảnh, vùng chứa, ổ đĩa và bộ đệm bản dựng đến một vị trí mới trên hệ thống của bạn.

Để thực hiện việc này, hãy mở Docker Desktop và điều hướng đến Cài đặt , đi tới Tài nguyênNâng cao , rồi tìm Vị trí ảnh đĩa tùy chọn. 

Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Nhấp vào Duyệt và chọn một thư mục trên phân vùng hoặc ổ đĩa mới nơi bạn muốn Docker lưu trữ dữ liệu của nó, chẳng hạn như “/mnt/newdisk/docker-data”. Sau khi chọn vị trí mới, nhấp vào Áp dụng &Khởi động lại . Docker Desktop sau đó sẽ khởi động lại và di chuyển tất cả dữ liệu Docker hiện có sang phân vùng đã chọn.

Giải phóng dung lượng ổ đĩa:Di chuyển khối lượng Docker sang phân vùng lớn hơn một cách an toàn

Lưu ý: Điều này di chuyển tất cả dữ liệu Docker. Hiện tại không có tùy chọn GUI để di chuyển từng tập riêng lẻ.

Chỉ di dời dữ liệu khối lượng cụ thể

Bạn có thể di chuyển một ổ Docker cụ thể sang một phân vùng khác và sử dụng nó với vùng chứa của mình thông qua liên kết gắn kết máy chủ. Cách tiếp cận này đơn giản, an toàn và dễ sao lưu. Trước khi di chuyển âm lượng, hãy dừng vùng chứa sử dụng nó:

docker stop container_name

Sau đó, sử dụng rsync để di chuyển tất cả dữ liệu một cách an toàn sang thư mục mới của bạn:

sudo rsync -a /var/lib/docker/volumes/my_volume/_data/ /data/docker/my_volume/

Thao tác này sẽ sao chép mọi thứ từ tập cũ sang “/data/docker/my_volume”.

Chỉnh sửa tệp “docker-compose.yml” của bạn để sử dụng liên kết gắn kết thay vì ổ đĩa do Docker quản lý:

services:
 my_service:
 volumes:
 - /data/docker/my_volume:/container/path

Thay thế /container/path với đường dẫn bên trong vùng chứa nơi ổ đĩa được gắn ban đầu. Sau đó triển khai lại vùng chứa bằng lệnh sau:

docker-compose up -d

Kết thúc

Di chuyển khối lượng Docker hoặc toàn bộ thư mục dữ liệu Docker sang một phân vùng lớn hơn sẽ giải phóng không gian trên hệ thống tệp gốc của bạn và giữ cho máy chủ của bạn ổn định. Các vùng chứa tiếp tục hoạt động trơn tru mà không có bất kỳ nguy cơ mất dữ liệu nào và việc quản lý bộ nhớ trong tương lai trở nên dễ dàng hơn nhiều.

Nếu không thể di chuyển toàn bộ thư mục Docker, bạn vẫn có thể lấy lại dung lượng bằng các phương pháp khác. Chúng bao gồm việc cắt bớt các vùng chứa, hình ảnh, mạng và bộ đệm không sử dụng bằng các lệnh cắt tỉa hệ thống docker hoặc các lệnh cắt tỉa riêng lẻ và sử dụng các liên kết gắn kết Linux để di chuyển các thư mục lớn mà không ảnh hưởng đến thời gian chạy của Docker.