HỌC BẰNG THỰC HÀNH
← Lộ trình học
01 · Linux Administration

Phân vùng ổ đĩa, filesystem và swap

Thực hiện trên server của bạn, rồi kiểm tra từng tiêu chí.

Mở rộng · tùy chọn

Vì sao cần học

Server thật thường có ổ riêng cho dữ liệu, log hoặc backup. Bạn cần chia ổ, chọn filesystem và mount sao cho đổi thứ tự ổ hay reboot cũng không hỏng. Swap là vùng đệm khi RAM cạn: không làm máy nhanh hơn, nhưng giúp tránh tiến trình bị kernel giết đột ngột khi tải tăng vọt. RHCSA kiểm tra cả partition, filesystem và swap.

Mục tiêu

  • Đọc bố cục ổ đĩa bằng lsblk, blkid, parted print.
  • Tạo bảng phân vùng GPT và các partition bằng parted.
  • Tạo filesystem ext4, tạo và bật swap.
  • Mount bền vững bằng UUID trong /etc/fstab, kiểm tra trước khi reboot.

Điều kiện tiên quyết

  • Bài Tạo VM Linux dành riêng cho lab, có ổ phụ ≥ 2 GB.
  • Snapshot clean của VM. Chọn nhầm ổ sẽ mất dữ liệu.

Mental model

/dev/vdb  (ổ phụ 2 GB, bảng phân vùng GPT)
├─ /dev/vdb1  512 MiB  ext4   → /mnt/kdc-archive
├─ /dev/vdb2  256 MiB  swap
└─ /dev/vdb3  phần còn lại     → để dành cho bài LVM

GPT là bảng phân vùng hiện đại (thay MBR): tối đa 128 partition, hỗ trợ ổ lớn hơn 2 TB. Partition chỉ là một khoảng trên ổ; phải tạo filesystem (ext4, XFS) hoặc swap lên đó mới dùng được.

UUID được tạo khi format, không đổi khi thứ tự ổ thay đổi. Vì vậy fstab dùng UUID=... thay cho /dev/vdb1.

Với ổ NVMe, tên partition có thêm p: /dev/nvme1n1p1.

Thực hành (Guided Lab)

1. Xác định đúng ổ trống

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
swapon --show
Giải thích lệnh và tham số

lsblk liệt kê thiết bị block: -o chọn cột NAME (tên), SIZE (kích thước), TYPE (disk/partition), FSTYPE (filesystem), MOUNTPOINTS (đang gắn ở đâu). swapon --show liệt kê vùng swap đang bật. Đối chiếu ổ phụ theo kích thước và mountpoint trước khi dùng tên /dev/vdb trong bước sau.

Ổ trống không có partition con, không có FSTYPE. Các lệnh dưới dùng /dev/vdb; thay bằng tên ổ của bạn. Trên VirtualBox và Hyper-V, ổ phụ thường là /dev/sdb. Nếu VM đã có swap zram, đó là swap nén trong RAM; bài này thêm swap trên ổ đĩa.

2. Tạo bảng phân vùng và partition

sudo parted --script /dev/vdb \
  mklabel gpt \
  mkpart kdc-archive ext4 1MiB 513MiB \
  mkpart kdc-swap linux-swap 513MiB 769MiB \
  mkpart kdc-lvm 769MiB 100%
sudo parted --script /dev/vdb set 3 lvm on
sudo udevadm settle
sudo parted /dev/vdb print
lsblk /dev/vdb
Giải thích lệnh và tham số
Thành phần của partedÝ nghĩa
--scriptChạy không tương tác, không chờ xác nhận; các thay đổi ghi lên ổ ngay.
/dev/vdbỔ đích; thay bằng ổ phụ trống bạn vừa xác định, không dùng ổ hệ điều hành.
mklabel gptTạo bảng phân vùng GPT mới; thay thế bảng cũ.
mkpart <tên> <loại> <đầu> <cuối>Tạo partition với khoảng vị trí trên ổ; ghi ext4 chưa tạo filesystem ext4.
1MiB, 513MiB, 769MiB, 100%Vị trí đầu/cuối, không phải dung lượng từng partition. MiB là đơn vị nhị phân.
set 3 lvm onBật flag LVM trên partition số 3.
printIn bảng phân vùng để kiểm tra.

udevadm settle đợi các sự kiện thiết bị đang chờ được xử lý để tên partition xuất hiện. Dấu \ cuối dòng chỉ nối cùng một lệnh; không phải lệnh mới. Các lệnh tạo partition/format chỉ chạy trên ổ phụ của VM lab.

Partition bắt đầu từ 1MiB để căn chỉnh tốt với ổ hiện đại.

3. Filesystem và swap

sudo mkfs.ext4 -L kdc-archive /dev/vdb1
sudo mkswap -L kdc-swap /dev/vdb2
sudo blkid /dev/vdb1 /dev/vdb2
Giải thích lệnh và tham số

mkfs.ext4 tạo filesystem ext4; mkswap tạo metadata swap. Cả hai ghi cấu trúc mới lên partition đích, nên dữ liệu cũ có thể mất. -L đặt label (kdc-archive, kdc-swap); blkid đọc UUID, label và loại dữ liệu của thiết bị để dùng trong cấu hình mount.

4. Khai báo trong fstab bằng UUID

archive_uuid=$(sudo blkid -s UUID -o value /dev/vdb1)
swap_uuid=$(sudo blkid -s UUID -o value /dev/vdb2)
sudo mkdir -p /mnt/kdc-archive
echo "UUID=$archive_uuid  /mnt/kdc-archive  ext4  defaults  0 2" | sudo tee -a /etc/fstab
echo "UUID=$swap_uuid  none  swap  defaults  0 0" | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
sudo findmnt --verify
sudo mount -a
sudo swapon -a
findmnt /mnt/kdc-archive
swapon --show
free -h
Giải thích lệnh và tham số
Thành phầnÝ nghĩa
blkid -s UUID -o value-s chọn trường UUID, -o value chỉ in giá trị để gán vào biến.
archive_uuid=$(...)Chạy lệnh trong $() rồi lưu kết quả vào biến shell.
tee -a /etc/fstab-a thêm dòng vào cuối file, không ghi đè. Chạy lại sẽ thêm dòng trùng, cần xem file trước.
findmnt --verifyKiểm tra tính hợp lệ và khả dụng của khai báo fstab, chưa mount toàn bộ.
mount -aMount các mục đủ điều kiện trong fstab; không chỉ partition vừa tạo.
swapon -aBật các mục swap đủ điều kiện trong fstab.
findmnt /mnt/kdc-archiveXem filesystem hiện đang gắn tại mountpoint này.
free -hXem bộ nhớ RAM/swap với đơn vị dễ đọc.

Dòng fstab có 6 cột: thiết bị/UUID, mountpoint, loại filesystem, tùy chọn mount, cờ dump, thứ tự fsck. Với swap, mountpoint là none; 0 0 không dùng dump/fsck. Hoàn tất kiểm tra lỗi fstab trước khi reboot.

Cột cuối 2 cho phép fsck kiểm tra filesystem này khi boot, sau filesystem gốc.

5. Reboot

sudo systemctl reboot

Sau khi đăng nhập lại: findmnt /mnt/kdc-archive và swapon --show.

Tự kiểm tra (Verification)

lsblk -f /dev/vdb
grep -E 'kdc-archive|swap' /etc/fstab
swapon --show
Giải thích lệnh và tham số

lsblk -f chọn nhóm cột thông tin filesystem, gồm loại, label, UUID. grep -E 'kdc-archive|swap' tìm các dòng có một trong hai mẫu trong fstab.

Chọn server và bấm Kiểm tra kết quả.

Lỗi thường gặp

  • mkfs lên nhầm ổ hệ điều hành: luôn đọc lsblk và kiểm tra MOUNTPOINTS trống trước khi format.
  • Copy UUID sai một ký tự: máy dừng ở emergency mode. findmnt --verify bắt được lỗi này trước khi reboot.
  • Tạo swap nhưng quên swapon -a hoặc dòng fstab: swap chỉ có tới lần reboot.
  • Kernel chưa thấy partition mới ngay: chạy sudo udevadm settle hoặc sudo partprobe /dev/vdb.

Ghi chú production

  • Swap trên server là chủ đề gây tranh luận: một lượng nhỏ giúp chống OOM đột ngột, quá nhiều làm máy chậm thay vì báo lỗi. Kubernetes trước đây yêu cầu tắt swap trên node; Module 14 sẽ nói về hỗ trợ swap hiện nay.
  • Dùng tùy chọn nofail cho ổ không bắt buộc để máy vẫn boot khi ổ hỏng.

Ghi chú Ubuntu

Các lệnh giống nhau. Ubuntu thường dùng swap file /swap.img thay vì partition; tiêu chí vẫn đạt nếu swap trên ổ đĩa đang bật và có trong fstab.

Dọn dẹp

Giữ /dev/vdb3 cho bài LVM. Muốn gỡ phần của bài này:

sudo swapoff /dev/vdb2
sudo umount /mnt/kdc-archive
sudo sed -i -e '\|/mnt/kdc-archive|d' -e '/ swap /d' /etc/fstab
sudo systemctl daemon-reload
Giải thích lệnh và tham số

swapoff tắt swap trên partition chỉ định; umount tháo filesystem khỏi mountpoint (tên lệnh là umount, không phải unmount). sed -i sửa file tại chỗ, -e thêm một biểu thức xử lý; hậu tố d xóa dòng khớp. Biểu thức / swap /d khớp mọi dòng swap chứa chuỗi đó, vì vậy phải xem /etc/fstab và chỉ giữ phạm vi dọn swap lab trước khi chạy, tránh xóa khai báo swap khác.

Lệnh sed thứ hai xóa mọi dòng swap trong fstab; nếu VM có swap khác, hãy sửa fstab bằng tay.

Tài liệu chính thức