Thay đổi kích thước (resize) swap trong linux

Resize swap partition (phân vùng)

Điều chỉnh swap có thể sẽ yêu cầu thay đổi nhiều các phân vùng. Vì vậy, cần phải backup disk lại trước các hành động này, để tránh mất dữ liệu trên disk.

Cách resize phân vùng swap

  1. Khởi động từ USB Linux Live:
  • Tạo một USB Linux Live và khởi động vào Ubuntu Live (hoặc một bản phân phối Linux khác).
  • Việc này giúp bạn có thể chỉnh sửa phân vùng trên ổ đĩa mà không gặp lỗi hệ thống đang sử dụng phân vùng đó.
  1. Mở GParted/Disks app:
  • Trong môi trường Live, mở công cụ GParted hoặc Disks (công cụ quản lý phân vùng).
  • Tìm phân vùng swap hiện tại (thường sẽ được đánh dấu là swap trong GParted).
  1. Tắt swap (nếu đang bật):
  • Nhấp chuột phải vào phân vùng swap và chọn “Swapoff”“Unmount” để tắt phân vùng swap, nếu nó đang hoạt động.
  1. Chỉnh sửa kích thước phân vùng:

Nếu cần tăng swap, bạn sẽ phải lấy một phần size từ ext4 partition. Cần kiểm tra size khả dụng trong ext4 để bắt đầu chuyển qua cho swap partition.

  • Convert: ext4 → unallocated

Vấn đề tiếp theo là unallocated part mới này nằm phía sau ext4 part. Như vậy, theo thứ tự thì swap partunallocated part này không nằm kế nhau. Nên không thể kết hợp:

  • [swap] [ext4] [unallocated]
  • Move chỉ có thể dùng Gparted, không thể dùng Disks (app)

Một unallocated part không thể di chuyển. Vì vậy, thay vì di chuyển nó, bạn hãy di chuyển ext4 part ra sau nó. Và bạn sẽ có swap part gần với unallocated part:

  • [swap] [unallocated] [ext4]
  • Chọn phân vùng swap và chọn “Resize/Move” để thay đổi kích thước của nó.
  • Bạn có thể kéo để mở rộng hoặc thu nhỏ dung lượng theo mong muốn.
Thu nhỏ ext4 partition hiện tại để lấy size cho swap thì có ảnh hưởng data ko?

Thu nhỏ phân vùng ext4 để lấy dung lượng cho swap có thể thực hiện được, nhưng bạn cần cẩn thận để tránh mất dữ liệu. Nếu thực hiện đúng cách, dữ liệu sẽ không bị ảnh hưởng. Dưới đây là các lưu ý và hướng dẫn chi tiết:


Lưu ý quan trọng trước khi thu nhỏ phân vùng ext4:

  1. Sao lưu dữ liệu quan trọng:

    • Dù rủi ro thấp nếu làm đúng cách, nhưng việc chỉnh sửa phân vùng luôn tiềm ẩn nguy cơ. Hãy sao lưu dữ liệu quan trọng trước khi thực hiện.
  2. Kiểm tra phân vùng ext4:

    • Trước khi thu nhỏ, cần kiểm tra và sửa lỗi (nếu có) trên phân vùng ext4:
      sudo e2fsck -f /dev/sdXn
      
      Thay /dev/sdXn bằng phân vùng ext4 của bạn (ví dụ: /dev/sda2).
  3. Phân vùng trống tối thiểu:

    • Đảm bảo rằng phân vùng ext4 còn đủ dung lượng trống. Bạn chỉ có thể thu nhỏ tới mức không làm ảnh hưởng đến dữ liệu hiện tại.

Các bước thu nhỏ ext4 để lấy dung lượng cho swap:

  1. Tắt hệ thống và khởi động vào Linux Live USB:

    • Không thể chỉnh sửa phân vùng đang được sử dụng. Sử dụng Linux Live để thực hiện thay đổi.
  2. Mở GParted:

    • Trong GParted, chọn phân vùng ext4.
  3. Giảm kích thước phân vùng ext4:

    • Nhấp chuột phải vào phân vùng ext4 và chọn “Resize/Move”.
    • Kéo chuột để thu nhỏ dung lượng phân vùng và chừa khoảng trống chưa phân bổ (unallocated space) cho swap.
    • Áp dụng thay đổi.

    Lưu ý: Nếu ext4 đang đầy hoặc gần đầy, GParted sẽ không cho phép thu nhỏ. Hãy giải phóng dung lượng trước.

  4. Tạo phân vùng swap mới từ khoảng trống chưa phân bổ:

    • Chọn vùng trống chưa phân bổ và nhấp “New”.
    • Chọn loại phân vùng là “linux-swap”.
    • Áp dụng thay đổi.
  5. Kích hoạt swap mới:

    • Sau khi khởi động lại, kiểm tra UUID của phân vùng swap mới:
      sudo blkid
      
    • Cập nhật /etc/fstab với UUID mới của phân vùng swap.

Có ảnh hưởng đến dữ liệu không?

Nếu làm đúng các bước trên, dữ liệu trên phân vùng ext4 không bị ảnh hưởng. Tuy nhiên:

  • Nếu bạn tắt máy giữa chừng hoặc hệ thống mất điện, dữ liệu có thể bị lỗi.
  • Thu nhỏ phân vùng quá nhiều mà không kiểm tra dung lượng trống có thể dẫn đến lỗi hệ thống.

Gợi ý:

Nếu không tự tin, bạn có thể:

  • Sử dụng file swap thay vì phân vùng swap để đơn giản hơn.
  • Sao lưu toàn bộ ổ đĩa trước khi thực hiện để giảm rủi ro.
  1. Áp dụng thay đổi:
  • Nhấn vào biểu tượng “✓” để áp dụng thay đổi. GParted sẽ thực hiện thay đổi kích thước phân vùng.
Tạo lại `swap` (nếu khó resize, cần cập nhật UUID trong `/etc/fstab`)

Nếu việc Resize gặp khó khăn, bạn có thể xóa swap part cũ, và tạo lại swap part với UUID mới. Swap part xóa sẽ ghép vào để tạo thành unallocated part mới với đủ size.

Nếu tạo lại swap part, bạn cần phải cập nhật UUID của swap part mới trong file /etc/fstab

Hướng dẫn cập nhật `/etc/fstab`
  • Sau khi tạo swap mới, cập nhật UUID của phân vùng swap mới trong file /etc/fstab:

    #$ sudo blkid
    sudo nano /etc/fstab
    

    Để write được file linux khi boot, bạn cần lưu ý hướng dẫn sau:
    Cách write file, khi boot từ ngoài linux

  • Đảm bảo dòng swap mới giống:

    UUID=<UUID_mới> none swap sw 0 0
    
  • Sau khi hoàn tất và khởi động lại vào linux (Ubuntu), kiểm tra lại UUID của phân vùng swap mới bằng lệnh:
    sudo blkid
    
    hoặc
    sudo swapon --show
    
  • Mở file /etc/fstab và xác nhận UUID của phân vùng swap đúng với UUID mới (nếu UUID có thay đổi sau khi resize).

Resize swap file (swap được tạo bằng file trực tiếp)

Resize swap file trực tiếp, không cần boot từ ngoài linux như swap partition

Khi thay đổi dung lượng swap trên Ubuntu thông qua một file swap, bạn không cần khởi động lại từ bên ngoài hoặc dùng các công cụ chỉnh sửa phân vùng như khi resize một phân vùng swap.

Các file swap có thể dễ dàng tạo, xóa và thay đổi kích thước trực tiếp trong hệ điều hành mà không cần khởi động lại hoặc gây gián đoạn hoạt động. Điều này giúp tiết kiệm thời gian và dễ dàng quản lý hơn so với phân vùng swap truyền thống.

Để resize swap memory trong Ubuntu, bạn có thể làm theo các bước sau:

Bước 1: Tắt swap hiện tại

  1. Mở Terminal.

  2. Kiểm tra swap đang hoạt động:

    sudo swapon --show
    

    Nếu có dòng hiển thị swap đang hoạt động, ghi lại đường dẫn file swap này để dùng lại ở các bước sau.

  3. Tắt swap hiện tại:

    sudo swapoff -a
    

Bước 2: Xóa file swap cũ (nếu cần)

Nếu swap hiện tại là một file (thường là /swapfile), bạn có thể xóa file đó để tạo file mới với kích thước khác.

sudo rm -f /swapfile

Bước 3: Tạo file swap mới

  1. Tạo file mới với kích thước bạn muốn (ở đây là ví dụ tạo file 4G):

    sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
    

    Thay 4096 bằng kích thước mong muốn tính bằng MB.

  2. Đặt quyền cho file swap:

    sudo chmod 600 /swapfile
    
  3. Thiết lập file thành swap:

    sudo mkswap /swapfile
    

Bước 4: Bật lại swap

Kích hoạt swap với file mới:

sudo swapon /swapfile

Bước 5: Cập nhật file /etc/fstab

Đảm bảo file swap mới sẽ tự động kích hoạt sau khi khởi động lại bằng cách thêm dòng này vào cuối file /etc/fstab (hoặc sửa lại nếu đã có):

/swapfile none swap sw 0 0

Bước 6: Kiểm tra lại swap

Kiểm tra lại dung lượng swap để xác nhận thay đổi:

sudo swapon --show