Mục tiêu học tập
Phân vùng đĩa cứng
Hiểu MBR và GPT partition tables, dùng parted và fdisk để xem, tạo, sửa và xóa phân vùng đĩa.
Tạo Filesystems
Sử dụng mkfs để tạo các loại filesystem: ext4, xfs, vfat, btrfs và mkswap cho swap partition.
Mount và /etc/fstab
Gắn kết filesystem tạm thời bằng mount, vĩnh viễn qua /etc/fstab, hiểu các mount options: defaults, acl, noatime.
Logical Volume Manager (LVM)
Tạo physical volume, volume group, logical volume từ bottom-up. Mở rộng LV mà không cần downtime.
Kiểm tra dung lượng
Dùng df để xem dung lượng filesystem, du để kiểm tra dung lượng thư mục/file, lsblk để liệt kê block devices.
Swap Area
Tạo và quản lý swap space, bật/tắt swap bằng swapon/swapoff, kiểm tra swap usage.
Lý thuyết chi tiết
Phân vùng đĩa: parted và fdisk
Linux dùng hai chuẩn partition table: MBR (giới hạn 4 primary partitions, max 2TB/partition) và GPT (hỗ trợ lên đến 9.4 zettabytes, không giới hạn partitions). Công cụ parted hỗ trợ cả hai, còn fdisk thường dùng cho MBR.
# Xem tất cả partition tables
$ sudo parted -l
Model: SK hynix BC711 (nvme)
Disk /dev/nvme0n1: 256GB
Partition Table: gpt
Number Start End Size File system Name
1 1049kB 538MB 537MB fat32 EFI System Partition
2 538MB 256GB 256GB ext4
# Xem chi tiết partition với fdisk
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 57.77 GiB
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 121145343 121143296 57.8G c W95 FAT32 (LBA)
# Tạo phân vùng mới với parted
$ sudo parted /dev/sda
(parted) mklabel gpt
(parted) mkpart primary ext4 1MiB 10GiB
(parted) print
(parted) quit
# Liệt kê block devices
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 57.8G 0 disk
├─sda1 8:1 0 57.8G 0 part
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
└─nvme0n1p2 259:2 0 238G 0 part /
Tạo Filesystem và Mount
Sau khi phân vùng, cần format (tạo filesystem) trước khi sử dụng. Lệnh mkfs tạo nhiều loại filesystem. Lệnh mount gắn filesystem vào cây thư mục Linux.
# Tạo filesystem
$ sudo mkfs -t ext4 /dev/sda1
$ sudo mkfs -t xfs /dev/sda2
$ sudo mkfs -t vfat /dev/sda3
$ sudo mkswap /dev/sda4
# Mount tạm thời
$ sudo mkdir /mnt/data
$ sudo mount /dev/sda1 /mnt/data
$ df -h /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 24K 54G 1% /mnt/data
# Unmount
$ sudo umount /dev/sda1
$ sudo umount /mnt/data
# Xem tất cả mounts
$ mount | grep sda
$ cat /proc/mounts
# Bật swap
$ sudo swapon /dev/sda4
$ swapon -s
Filename Type Size Used Priority
/dev/sda4 partition 4194300 0 -2
Cấu hình /etc/fstab
File /etc/fstab xác định filesystem nào sẽ được mount tự động khi boot. Mỗi dòng gồm 6 trường: device, mountpoint, fstype, options, dump, pass.
# /etc/fstab format:
# device mountpoint fstype options dump pass
/dev/nvme0n1p2 / ext4 defaults 1 1
/dev/nvme0n1p1 /boot/efi vfat umask=0077 0 1
/dev/sda1 /mnt/data ext4 defaults 0 2
/dev/sda4 swap swap defaults 0 0
# Dùng UUID (ổn định hơn device name)
$ sudo blkid /dev/sda1
/dev/sda1: UUID="a1b2c3d4-..." TYPE="ext4"
UUID=a1b2c3d4-1234-5678-abcd-ef0123456789 /mnt/data ext4 defaults 0 2
# Mount với ACL
/dev/sdc1 /var/stuff ext4 acl 1 2
# Test fstab không reboot
$ sudo mount -a
# Remount với options mới
$ sudo mount -o remount /dev/sdc1
Logical Volume Manager (LVM)
LVM tạo lớp trừu tượng trên physical disks: Physical Volume (PV) → Volume Group (VG) → Logical Volume (LV). Ưu điểm: mở rộng/thu nhỏ volume không cần downtime, dễ quản lý.
# Bước 1: Tạo Physical Volume
$ sudo pvcreate /dev/sda6
Physical volume "/dev/sda6" successfully created.
$ sudo pvdisplay /dev/sda6
PV Name /dev/sda6
VG Name (not yet assigned)
PV Size 4.00 GiB
# Bước 2: Tạo Volume Group
$ sudo vgcreate myvg0 /dev/sda6
Volume group "myvg0" successfully created
$ sudo vgdisplay myvg0
VG Name myvg0
VG Size <4.00 GiB
Total PE 1023
Free PE / Size 1023 / <4.00 GiB
# Bước 3: Tạo Logical Volume
$ sudo lvcreate -n music -L 1G myvg0
Logical volume "music" created
$ ls /dev/mapper/myvg0*
/dev/mapper/myvg0-music
# Bước 4: Format và mount LV
$ sudo mkfs -t ext4 /dev/mapper/myvg0-music
$ sudo mkdir /mnt/mymusic
$ sudo mount /dev/mapper/myvg0-music /mnt/mymusic
$ df -h /mnt/mymusic
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg0-music 974M 24K 907M 1% /mnt/mymusic
# Kiểm tra không gian còn trong VG
$ sudo vgdisplay myvg0 | grep Free
Free PE / Size 767 / <3.00 GiB
# Mở rộng LV thêm 1GB
$ sudo lvextend -L +1G /dev/mapper/myvg0-music
Size of logical volume myvg0/music changed from 1.00 GiB to 2.00 GiB.
# Resize filesystem để dùng hết không gian mới
$ sudo resize2fs -p /dev/mapper/myvg0-music
$ df -h /mnt/mymusic
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg0-music 2.0G 24K 1.9G 1% /mnt/mymusic
# Thêm PV vào VG khi hết không gian
$ sudo pvcreate /dev/sdb1
$ sudo vgextend myvg0 /dev/sdb1
Kiểm tra dung lượng: df và du
# df: dung lượng filesystem
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 234G 50G 172G 23% /
tmpfs 7.7G 2.3M 7.7G 1% /run
/dev/nvme0n1p1 511M 6.2M 505M 2% /boot/efi
# df: hiển thị theo filesystem type
$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/nvme0n1p2 ext4 244506608 52428800 179677808 23% /
# du: dung lượng thư mục
$ du -sh /home/*
4.2G /home/alice
1.1G /home/bob
$ du -sh --max-depth=1 /var
$ du -sh /var/log
856M /var/log
Lab thực hành
Bài lab: Phân vùng USB drive, tạo LVM volume group và logical volume, mount vĩnh viễn.
Xác định thiết bị USB
Cắm USB và xác định tên device được assign.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 57.8G 0 disk
└─sda1 8:1 1 57.8G 0 part
$ sudo fdisk -l /dev/sda
# Xác nhận đây là USB, không phải ổ hệ thống
Tạo phân vùng GPT với parted
Tạo GPT partition table và một phân vùng ext4 chiếm toàn bộ USB.
$ sudo umount /dev/sda1 2>/dev/null
$ sudo parted /dev/sda
(parted) mklabel gpt
Warning: Destroy all data? Yes/No? Yes
(parted) mkpart primary ext4 1MiB 100%
(parted) print
Number Start End Size
1 1.05MB 62.0GB 62.0GB ext4
(parted) quit
Format và Mount filesystem
Tạo ext4 filesystem và mount vào /mnt/usbdata.
$ sudo mkfs -t ext4 /dev/sda1
mke2fs 1.46.5: Creating filesystem with 15143168 4k blocks
Writing inode tables: done
Creating journal (65536 blocks): done
$ sudo mkdir /mnt/usbdata
$ sudo mount /dev/sda1 /mnt/usbdata
$ df -h /dev/sda1
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 57G 24K 54G 1% /mnt/usbdata
Tạo LVM trên phân vùng thứ hai
Tạo PV, VG và LV từ /dev/sdb (nếu có ổ thứ hai).
$ sudo pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
$ sudo vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
$ sudo lvcreate -n datalv -L 5G datavg
Logical volume "datalv" created.
$ sudo mkfs -t xfs /dev/datavg/datalv
$ sudo mkdir /data && sudo mount /dev/datavg/datalv /data
Cấu hình /etc/fstab để mount vĩnh viễn
Dùng UUID để mount tự động khi boot.
$ sudo blkid /dev/sda1
/dev/sda1: UUID="abc12345-6789-..." TYPE="ext4"
$ sudo vim /etc/fstab
# Thêm dòng sau:
UUID=abc12345-6789-... /mnt/usbdata ext4 defaults 0 2
# Test fstab trước khi reboot
$ sudo mount -a
$ df -h /mnt/usbdata
Mở rộng Logical Volume
Thêm 2GB vào LV đang mount mà không cần unmount.
$ sudo lvextend -L +2G /dev/datavg/datalv
Size of logical volume datavg/datalv changed from 5.00 GiB to 7.00 GiB
# Với ext4: dùng resize2fs
$ sudo resize2fs /dev/datavg/datalv
# Với xfs: dùng xfs_growfs (phải mounted)
$ sudo xfs_growfs /data
$ df -h /data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/datavg-datalv 7.0G 100M 6.7G 2% /data
Câu hỏi ôn tập
Sự khác biệt chính giữa MBR và GPT partition table là gì?
MBR: giới hạn 4 primary partitions, max 2TB/partition, dùng cho BIOS. GPT: không giới hạn partitions (thực tế 128), hỗ trợ đến 9.4 zettabytes/partition, dùng cho UEFI. Công cụ parted hỗ trợ cả hai; fdisk truyền thống chỉ hỗ trợ MBR.
Lệnh nào tạo filesystem ext4 trên /dev/sdb1?
sudo mkfs -t ext4 /dev/sdb1Hoặc: sudo mkfs.ext4 /dev/sdb1. Tương tự: mkfs.xfs, mkfs.vfat, mkfs.btrfs.
6 trường trong /etc/fstab có ý nghĩa gì?
device mountpoint fstype options dump pass
1. device: UUID hoặc /dev/xxx
2. mountpoint: nơi gắn trong cây thư mục
3. fstype: ext4, xfs, vfat, swap...
4. options: defaults, ro, noexec, acl...
5. dump: 0=không backup, 1=backup
6. pass: 0=không fsck, 1=/ (root), 2=các FS khác
Quy trình tạo LVM logical volume từ đầu gồm những bước nào?
1. pvcreate /dev/sdX — tạo Physical Volume
2. vgcreate myvg /dev/sdX — tạo Volume Group
3. lvcreate -n mylv -L 5G myvg — tạo Logical Volume
4. mkfs -t ext4 /dev/myvg/mylv — format
5. mount /dev/myvg/mylv /mountpoint — mount
Làm thế nào để mở rộng logical volume mà không cần unmount?
1. lvextend -L +2G /dev/myvg/mylv — mở rộng LV
2a. Cho ext4: resize2fs /dev/myvg/mylv
2b. Cho xfs: xfs_growfs /mountpoint
Lưu ý: xfs không hỗ trợ shrink. LV ext4/xfs có thể mở rộng online, nhưng shrink đòi unmount.
Lệnh nào kiểm tra dung lượng còn trống của các filesystem đã mount?
df -h — hiển thị human-readable (GB, MB)df -T — hiển thị kèm filesystem typedf -h /home — chỉ xem một mount pointdu -sh /var/log — dung lượng thư mục cụ thể
Tại sao nên dùng UUID trong /etc/fstab thay vì /dev/sdX?
Device names như /dev/sda có thể thay đổi khi thêm/bỏ ổ đĩa hoặc thứ tự khởi động thay đổi. UUID là duy nhất và cố định cho mỗi filesystem, không thay đổi ngay cả khi device name thay đổi. Dùng blkid /dev/sdX để lấy UUID.
Filesystem type nào là mặc định của RHEL 9 và filesystem type nào tốt nhất cho file chia sẻ Windows-Linux?
RHEL 9 mặc định dùng xfs cho root filesystem (hiệu suất cao với file lớn). Fedora mới nhất dùng btrfs. Để chia sẻ file giữa Linux và Windows, dùng vfat (FAT32) hoặc exFAT — được cả hai hệ điều hành hiểu. NTFS cũng được Linux hỗ trợ nhưng cần thêm driver.