Thay đổi kích thước phân vùng ổ đĩa trên HĐH Ubuntu với Gparted hoặc LVM

0
350
(Last Updated On: Th4 24, 2019)

Chào các bạn, mình đã từng có một thời gian tìm hiểu cách thay đổi phân vùng ổ đĩa trên máy chủ Ubuntu. Và mình cũng đã phải thức suốt đêm để tìm ra cách. Thật ra thì nếu mình kiên nhẫn một chút thì có lẽ đã không phải tốn thời gian đến thế.

Mình xin phép đi sâu vào vấn đề của mình một chút, đó là mình có sao lưu dữ liệu hệ điều hành Ubuntu 16.04 (ổ cứng SSD 120GB) trên một ổ cứng dự phòng khác (thông qua máy ảo). Và để thực hiện sao lưu mình đã sử dụng Clonezilla.

  • Clonezilla: Ổ cứng HP (120GB) –> Virtual Box VHD (128GB).

Dĩ nhiên là bước đầu diễn ra khá suôn sẻ và mình không gặp phải sự cố gì.

Tuy nhiên, vấn đề phát sinh khi mà mình tiếp tục tiến hành bung tập tin sao lưu từ ổ cứng Virtual Box 128GB (CloneZilla yêu cầu ổ cứng đích phải có dung lượng lớn hơn ổ cứng nguồn với cách thức sao lưu dạng Remote Source và Remote Destination – trong trường hợp tổng dung lượng thực tế trong ổ cứng nguồn ít hơn dung lượng trống trên ổ cứng đích thì CloneZilla vẫn cho phép tuy nhiên chỉ áp dụng đối với cách thức sao lưu Device – Device trên cùng hệ thống) sang ổ cứng HP (120GB) trước đó. CloneZilla không cho phép làm điều này.

Chình vì thế, để khắc phục vấn đề, mình cần phải giảm dung lượng tổng các phân vùng trên ổ cứng nguồn và cả dung lượng của ổ đĩa ảo của Virtual Box.

Và để làm điều đó, mình đã dùng đến Gparted và cả LVM.

Ổ cứng /dev/sda có dung lượng 128 GB. Dung lượng đĩa /dev/mapper/ubuntu–vg-root là 111.3 GB.

Tuy nhiên Gparted tỏ ra có ưu thế trong trường hợp mở rộng các phân vùng, còn việc cần làm của mình đó chính là giảm dung lượng của các Volume, và để làm điều này, cần sự can thiệp của LVM.

Và để làm điều đó, mình đã thực hiện lần lượt các dòng lệnh sau: (các bạn Boot bằng Ubuntu Live CD hoặc dùng Terminal trên chính đĩa Gparted, mình khuyến cáo các bạn sử dụng đĩa cứu hộ SystemRescueCd:

Đầu tiên bạn cần cho phép cấu hình LVM (trường hợp đối với Root Volume: /):

vgchange -a y

Trước khi mình thực hiện thu nhỏ LVM Volume (hay gọi là Shrink), thì mình cần phải kiểm tra hệ thống tệp tin trước. Vì nếu bỏ qua bước này thì bạn sẽ không thể tiếp tục thu nhỏ Volume được đâu, đây là điều bắt buộc để đảm bảo tính toàn vẹn của dữ liệu vì khi thay đổi kích thước hệ thống tệp rất dễ xảy ra hư hỏng dữ liệu, vì vậy phải cẩn thận hết mức có thể. À mình quên mất là các bạn phải sao lưu dữ liệu ra 1 bản khác nữa đề phòng vấn đề.

Và vì dòng lệnh thực hiện đối với LVM Volume cho nên bạn sẽ cần biết đến tên của Volume Group. Sau khi biết được rồi thì tiếp tục dòng lệnh:

e2fsck -fy /dev/mapper/ubuntu--vg-root

Như ở trong hình mình đã thực hiện đến bước thay đổi kích thước của Filesystem:

resize2fs /dev/mapper/ubuntu--vg-root 85GB

Dòng lệnh trên có nghĩa là mình đã giảm kích thước Filesystem xuống 85GB thay vì 113GB trước đó.

Chú ý: Các bạn cần chờ hệ thống Relocating blocks…, nếu không kiên trì mà bạn nhảy bước hay dừng tiến trình (Ctrl + C) chẳng hạn thì coi như thất bại đó.

Giờ thì tiếp tục thay đổi kích thước của Volume:

lvreduce -L 85G /dev/mapper/ubuntu--vg-root
Tới đây là chúng ta đã thay đổi kích thước Volume thành công rồi đây.

Các bạn chú ý rằng bạn cần thu nhỏ kích thức của Volume mà không nhỏ hơn tổng dung lượng thực của Volume chứa đựng. Vì nếu chẳng hạn như dữ liệu Volume lưu trữ là 90GB mà mình thu nhỏ về 85GB thì chắc chắn một số dữ liệu sẽ bị mất chưa kể rủi ro lớn hơn đó là toàn bộ dữ liệu cũng sẽ ra đi theo.

Cẩn thận thêm chút nữa chúng ta kiểm tra lại dữ liệu một lần nữa:

e2fsck -fy /dev/mapper/ubuntu--vg-root
Như vậy là OK rồi. (Nothing to do!) – không có lỗi xảy ra và bạn không cần phải làm thêm gì cả.

Hệ thống sau đó đã Boot bình thường:

Tiếp tục đến với quá trình khôi phục trên ổ cứng đích (HP 120GB). Nếu bạn muốn tiếp tục sử dụng phương pháp Remote Source – Remote Destination trên CloneZilla thì bạn cần thu nhỏ các phân vùng lại (dùng Gparted – giờ đã có thể áp dụng sau khi thu nhỏ LVM Volume) và cả tổng dung lượng ổ ảo của Virtual Box (Resize + Compact Disk). Tuy nhiên sẽ rất mất thời gian và mệt mỏi cho chính bạn, chưa kể chưa chắc đã thành công (mình đã thử và phát sinh nhiều lỗi quá nên bỏ qua luôn).

Cách đơn giản và thiết thực hơn đó chính là bạn có thể dùng CloneZilla và sử dụng chế độ Device – Device:

Bạn tạo một ổ ảo trên Virtual Box với dung lượng 90GB chẳng hạn và dùng CloneZilla chuyển dữ liệu qua ổ này. Và với ổ ảo dung lượng 90GB < ổ HP (120GB) cho nên bạn sẽ dễ dàng sử dụng cách Remote Source – Remove Destination trên CloneZilla với dữ liệu từ ổ cứng Virtual Box 90GB (Source), HP 120GB (Destination).

Ngồi chờ một chút sẽ xong ngay.

Ghi chú: Mình đã sử dụng khá nhiều chương trình sao chép dữ liệu ổ cứng (ổ chạy hệ điều hành) trên Linux như Mondo Rescue, Remastersys, Gparted,… Mình đánh giá CloneZilla là công cụ tuyệt vời nhất. Tuy nhiên thỉnh thoảng có vấn đề về tốc độ sao chép tuy nhiên sau khi chờ đợi thì thành quả thật tuyệt vời!

Bình luận