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í.
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
cleancủ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 |
|---|---|
--script | Chạ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 gpt | Tạ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 on | Bật flag LVM trên partition số 3. |
print | In 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 --verify | Kiểm tra tính hợp lệ và khả dụng của khai báo fstab, chưa mount toàn bộ. |
mount -a | Mount các mục đủ điều kiện trong fstab; không chỉ partition vừa tạo. |
swapon -a | Bật các mục swap đủ điều kiện trong fstab. |
findmnt /mnt/kdc-archive | Xem filesystem hiện đang gắn tại mountpoint này. |
free -h | Xem 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
mkfslên nhầm ổ hệ điều hành: luôn đọclsblkvà kiểm traMOUNTPOINTStrống trước khi format.- Copy UUID sai một ký tự: máy dừng ở emergency mode.
findmnt --verifybắt được lỗi này trước khi reboot. - Tạo swap nhưng quên
swapon -ahoặ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 settlehoặcsudo 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
nofailcho ổ 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.