Khi VPS Ubuntu gần hết dung lượng hoặc cần tách dữ liệu website, database, backup hay Docker volume sang ổ riêng, việc gắn thêm disk là cách mở rộng storage phổ biến. Tuy nhiên, chỉ mount thủ công bằng `mount /dev/...` là chưa đủ vì sau reboot ổ có thể không tự gắn lại. Cách ổn định hơn là tạo filesystem, lấy UUID của partition và khai báo trong `/etc/fstab`. Bài viết này hướng dẫn toàn bộ quy trình: xác định disk mới, phân vùng nếu cần, format ext4, tạo mount point, lấy UUID bằng `blkid`, chỉnh fstab, test với `mount -a`, kiểm tra quyền thư mục và xử lý các lỗi phổ biến như sai UUID, sai filesystem hoặc VPS boot vào emergency mode.
Khi một VPS Ubuntu cần thêm dung lượng, bạn có thể được nhà cung cấp gắn thêm block disk/data disk. Nhưng để ổ mới hoạt động ổn định sau reboot, bạn cần đi qua đúng quy trình: nhận diện thiết bị, tạo partition nếu cần, format filesystem, tạo mount point và khai báo trong /etc/fstab bằng UUID.
Nếu mới dùng Linux, bạn nên đọc trước bài Các lệnh Linux cơ bản trên VPS Ubuntu. Nếu đang chạy Docker, bài Cài Docker và Docker Compose trên VPS Ubuntu sẽ hữu ích khi bạn muốn chuyển volume sang ổ riêng.
1. Vì sao nên gắn ổ theo UUID?
Tên thiết bị như /dev/vdb1 hoặc /dev/sdb1 có thể thay đổi tùy thứ tự nhận diện thiết bị. UUID gắn với filesystem nên ổn định hơn cho cấu hình boot/mount lâu dài.
Bạn có thể xem UUID bằng:
sudo blkid
hoặc:
lsblk -f
2. Kiểm tra disk mới
Sau khi nhà cung cấp attach thêm disk:
lsblk
Ví dụ có thể thấy:
vda 80G
└─vda1 80G /
vdb 100G
Trong ví dụ này, vdb là disk mới chưa có partition.
Kiểm tra thêm:
sudo fdisk -l
Cảnh báo quan trọng
Hãy xác định thật chính xác disk mới trước khi format. Chọn nhầm disk hệ thống có thể làm mất dữ liệu hoặc khiến VPS không boot.
3. Có cần tạo partition không?
Không bắt buộc trong mọi mô hình, nhưng với VPS phổ thông bạn thường tạo một partition duy nhất trên disk dữ liệu.
Ví dụ dùng fdisk:
sudo fdisk /dev/vdb
Sau đó:
nđể tạo partition mới;- chọn mặc định cho start/end nếu dùng toàn bộ disk;
wđể ghi thay đổi.
Kiểm tra lại:
lsblk
Bạn có thể thấy:
vdb
└─vdb1
4. Format filesystem ext4
Nếu partition mới hoàn toàn và chưa có dữ liệu:
sudo mkfs.ext4 /dev/vdb1
Cảnh báo
mkfs sẽ tạo filesystem mới và làm mất dữ liệu hiện có trên partition đó. Không chạy lệnh này trên ổ chứa dữ liệu cần giữ.
Kiểm tra filesystem:
lsblk -f
5. Tạo mount point
Ví dụ muốn mount vào /data:
sudo mkdir -p /data
Mount thử:
sudo mount /dev/vdb1 /data
Kiểm tra:
df -hT /data
6. Lấy UUID
sudo blkid /dev/vdb1
Ví dụ:
/dev/vdb1: UUID="1111-2222-3333-4444" TYPE="ext4"
Hoặc:
lsblk -f
Copy UUID chính xác.
7. Backup /etc/fstab trước khi sửa
sudo cp /etc/fstab /etc/fstab.bak
Đây là bước nên làm vì lỗi fstab có thể khiến boot/mount gặp vấn đề.
8. Thêm disk vào /etc/fstab
Mở file:
sudo nano /etc/fstab
Thêm dòng:
UUID=1111-2222-3333-4444 /data ext4 defaults,nofail 0 2
Ý nghĩa:
UUID=...: filesystem cần mount;/data: mount point;ext4: filesystem;defaults,nofail: option mount;0 2: dump/fsck field phổ biến cho data filesystem.
nofail có tác dụng gì?
Trong nhiều VPS, nofail giúp hệ thống tiếp tục boot nếu data disk tạm thời không có mặt. Tuy nhiên, ứng dụng phụ thuộc disk vẫn có thể lỗi, nên bạn vẫn cần monitoring.
9. Test fstab trước khi reboot
Đây là bước rất quan trọng.
Unmount thử:
sudo umount /data
Sau đó:
sudo mount -a
Nếu không có lỗi:
df -hT /data
Nếu mount -a báo lỗi, sửa fstab trước khi reboot.
10. Kiểm tra cấu hình bằng findmnt
findmnt /data
Hoặc kiểm tra toàn bộ:
findmnt --verify
Đây là bước tốt để phát hiện một số lỗi cấu hình mount.
11. Kiểm tra sau reboot
Sau khi test ổn:
sudo reboot
Đăng nhập lại và chạy:
lsblk -f
df -hT /data
Nếu /data đã mount, cấu hình fstab hoạt động.
12. Cấp quyền thư mục dữ liệu
Mặc định /data có thể thuộc root:root.
Nếu ứng dụng chạy bằng user deploy:
sudo chown deploy:deploy /data
Với thư mục app:
sudo mkdir -p /data/app
sudo chown -R deploy:deploy /data/app
Không nên dùng chmod 777 chỉ để xử lý lỗi quyền.
13. Gắn disk cho website
Ví dụ muốn lưu upload tại:
/data/uploads
Bạn có thể cấu hình ứng dụng dùng trực tiếp đường dẫn này hoặc dùng bind mount/symlink tùy kiến trúc.
Đừng chuyển dữ liệu khi website đang ghi liên tục nếu không có maintenance/copy đồng bộ.
14. Gắn disk cho Docker data
Có hai hướng:
- tạo bind mount từ
/data/...vào container; - chuyển Docker data root sang disk khác.
Hướng thứ hai ảnh hưởng toàn bộ Docker daemon và cần maintenance cẩn thận. Với nhiều trường hợp, bind mount cho từng workload dễ quản lý hơn.
Ví dụ Compose:
volumes:
- /data/app-data:/app/data
15. Có nên đặt database trên disk mới?
Có thể, nếu storage phù hợp về latency, IOPS và reliability.
Trước khi chuyển database:
- backup;
- dừng database có kế hoạch;
- copy dữ liệu giữ nguyên permission;
- cập nhật path;
- test restore/rollback.
Không nên chuyển thư mục database sống bằng mv trong khi service đang chạy.
16. Dùng XFS thay ext4 được không?
Có, nếu workload và hệ thống hỗ trợ.
Ví dụ format XFS:
sudo mkfs.xfs /dev/vdb1
Sau đó fstab phải dùng xfs thay vì ext4.
Chọn filesystem dựa trên workload và yêu cầu quản trị, không phải vì “XFS luôn nhanh hơn” hoặc “ext4 luôn tốt hơn”.
17. Không thấy disk mới phải làm gì?
Kiểm tra:
lsblk
sudo fdisk -l
Nếu vẫn không thấy:
- xác nhận disk đã attach trong control panel;
- kiểm tra kernel log:
sudo dmesg | tail -n 100
- liên hệ nhà cung cấp nếu block device chưa xuất hiện ở guest OS.
18. mount: wrong fs type nghĩa là gì?
Có thể do:
- fstab ghi sai filesystem;
- partition chưa format;
- filesystem hỏng;
- thiếu package hỗ trợ filesystem.
Kiểm tra:
lsblk -f
sudo blkid /dev/vdb1
Đừng format lại disk nếu đang nghi có dữ liệu cần cứu.
19. Sai UUID trong fstab
Nếu UUID sai, mount -a sẽ báo không tìm thấy thiết bị tương ứng.
Kiểm tra:
sudo blkid
So sánh với:
cat /etc/fstab
Sửa UUID rồi chạy lại:
sudo mount -a
20. VPS vào emergency mode sau khi sửa fstab
Nguyên nhân thường là entry bắt buộc không mount được.
Nếu có console của nhà cung cấp:
- vào console;
- kiểm tra
/etc/fstab; - comment dòng lỗi hoặc sửa UUID/filesystem;
- test lại.
Đây là lý do nên dùng mount -a và findmnt --verify trước reboot.
21. Có nên dùng device path thay UUID?
Có thể dùng:
/dev/vdb1 /data ext4 defaults 0 2
nhưng UUID thường ổn định hơn nếu tên device thay đổi.
Với cloud/block storage, UUID là lựa chọn tốt trong nhiều trường hợp.
22. LUKS/encryption cho data disk
Nếu dữ liệu nhạy cảm, bạn có thể cân nhắc LUKS encryption.
Tuy nhiên, disk encryption thay đổi quy trình boot/unlock và có thể cần key management. Đây là chủ đề riêng, không nên bật trên production nếu chưa có kế hoạch recovery.
23. Kiểm tra I/O của disk
Bạn có thể dùng:
iostat
Nếu chưa có:
sudo apt install sysstat -y
Theo dõi:
iostat -xz 1
Đừng đánh giá storage chỉ dựa trên dung lượng GB. Latency và IOPS rất quan trọng với database.
24. Kiểm tra inode
df -i /data
Một filesystem có thể còn dung lượng nhưng hết inode nếu chứa quá nhiều file nhỏ.
25. Theo dõi dung lượng disk
df -h /data
Tìm thư mục lớn:
sudo du -xh /data --max-depth=1 | sort -h
Nên có monitoring/cảnh báo trước khi disk đầy 100%.
26. Backup disk mới
Gắn thêm disk không đồng nghĩa dữ liệu đã được backup.
Bạn vẫn cần:
- snapshot nếu hạ tầng hỗ trợ;
- rsync/restic/borg hoặc công cụ backup phù hợp;
- backup database riêng;
- bản sao ngoài VPS.
Data disk vẫn có thể bị xóa nhầm, filesystem lỗi hoặc tài khoản bị xâm nhập.
27. Tình huống thực tế: tách upload website sang ổ mới
Quy trình an toàn hơn:
- attach disk;
- format/mount
/data; - tạo
/data/uploads; - copy dữ liệu hiện có;
- dừng ghi tạm thời;
- đồng bộ lần cuối;
- đổi app path hoặc bind mount;
- test;
- giữ bản cũ một thời gian để rollback.
28. Tình huống thực tế: chuyển Docker volume
Nếu dùng bind mount, bạn có thể:
- stop stack;
- rsync dữ liệu volume cũ sang
/data/app; - sửa
compose.yaml; docker compose up -d;- test dữ liệu;
- chỉ xóa bản cũ sau khi ổn định.
29. Checklist gắn disk Ubuntu
- Xác định đúng disk mới bằng
lsblk. - Backup dữ liệu nếu disk đã dùng.
- Partition nếu cần.
- Format đúng filesystem.
- Tạo mount point.
- Lấy UUID.
- Backup
/etc/fstab. - Thêm UUID vào fstab.
- Chạy
mount -a. - Chạy
findmnt --verify. - Reboot và kiểm tra lại.
- Cấp quyền đúng user/app.
- Thiết lập backup/monitoring.
30. FAQ về gắn thêm ổ đĩa VPS Ubuntu
Gắn disk có mất dữ liệu ổ cũ không?
Không nếu bạn thao tác đúng disk. Rủi ro lớn nhất là format nhầm thiết bị.
Có cần reboot sau khi attach disk không?
Nhiều cloud cho phép nhận disk mới ngay, nhưng tùy hạ tầng. Kiểm tra lsblk trước.
Vì sao nên dùng UUID?
UUID ổn định hơn tên device trong nhiều trường hợp và phù hợp khai báo fstab.
Có thể mount vào /var/www không?
Có, nhưng cần lên kế hoạch migration, permission và rollback cẩn thận.
mount -a dùng để làm gì?
Nó thử mount các entry phù hợp trong fstab, giúp kiểm tra trước reboot.
nofail có nên dùng không?
Hữu ích với data disk không critical cho boot, nhưng ứng dụng phụ thuộc disk vẫn có thể lỗi nếu disk vắng mặt.
Gắn thêm disk có tự backup không?
Không. Storage expansion và backup là hai việc khác nhau.
Kết luận
Gắn thêm ổ đĩa trên VPS Ubuntu nên được thực hiện theo chuỗi: nhận diện disk → partition/format → mount thử → lấy UUID → cấu hình /etc/fstab → test mount -a → reboot kiểm tra.
Bước quan trọng nhất là xác định đúng thiết bị và kiểm tra fstab trước reboot. Đừng dùng mkfs hoặc sửa mount point trên production khi chưa có backup/rollback.
Nếu bạn cần VPS Ubuntu tại HUONG CLOUD cho website, Docker hoặc workload cần nhiều storage, hãy chọn cấu hình disk theo cả dung lượng lẫn I/O thực tế và thiết lập monitoring sau khi mở rộng.
Nguồn tham khảo
- Ubuntu Server storage documentation: https://documentation.ubuntu.com/server/how-to/storage/
- Ubuntu Community Help – fstab: https://help.ubuntu.com/community/Fstab
- Ubuntu manpage – mount: https://manpages.ubuntu.com/manpages/noble/man8/mount.8.html
- Ubuntu manpage – blkid: https://manpages.ubuntu.com/manpages/noble/man8/blkid.8.html
Kết luận
Nếu chưa chắc cấu hình hoặc loại dịch vụ nào phù hợp, hãy gửi nhu cầu thực tế để đội ngũ hỗ trợ tư vấn trước khi mua.
Chưa biết nên chọn gói nào?
Xem bảng giá VPS hoặc liên hệ đội ngũ hỗ trợ để chọn cấu hình phù hợp.
Xem bảng giá VPS →