Làm chủ XFS: Thay đổi kích thước, Sao lưu và Tối ưu hóa File System mạnh mẽ trên Linux

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Bối cảnh và Lý do XFS là lựa chọn hàng đầu của tôi cho lưu trữ mở rộng

Khi tôi mới bắt đầu quản trị máy chủ Linux, Ext4 là “ông vua” không thể bàn cãi. Tuy nhiên, khi khối lượng công việc của tôi chuyển sang các tập dữ liệu nhiều Terabyte và môi trường có tính đồng thời cao, tôi đã chuyển sang dùng XFS. Được Silicon Graphics xây dựng ban đầu cho IRIX, XFS hiện là tiêu chuẩn cho RHEL, CentOS và AlmaLinux. Nó xử lý cực tốt các tệp tin khổng lồ và I/O song song, trở thành một “con quái vật” cho các máy chủ cơ sở dữ liệu và lưu trữ media 4K.

Quản lý hơn 15 VPS production từ năm 2023 đã dạy tôi một bài học đắt giá: các thao tác trên file system luôn đi kèm rủi ro cực lớn. Chỉ một lỗi đánh máy cũng có thể dẫn đến hàng giờ khôi phục dữ liệu. XFS giảm thiểu điều này nhờ các công cụ quản lý online mạnh mẽ. Bạn có thể thực hiện bảo trì các thành phần quan trọng ngay cả khi phân vùng đang được mount và đang phục vụ traffic—một “cứu cánh” thực sự khi mục tiêu là uptime 100%.

Một lưu ý trước khi chúng ta bắt đầu: XFS được thiết kế để mở rộng, không phải để “ăn kiêng”. Bạn có thể mở rộng một phân vùng XFS trong vài giây, nhưng bạn không thể thu nhỏ nó. Nếu kế hoạch hạ tầng của bạn yêu cầu giảm kích thước phân vùng sau này, tốt nhất bạn nên trung thành với Ext4 hoặc sử dụng LVM với chiến lược phân bổ cực kỳ thận trọng.

Cài đặt các tiện ích XFS

Hầu hết các bản phân phối hiện đại đều tích hợp sẵn hỗ trợ XFS cơ bản, nhưng các công cụ chuyên dụng như xfs_dump thường bị thiếu. Tôi thường kiểm tra phiên bản xfsprogs ngay lập tức; các phiên bản mới (5.x+) chứa những tối ưu hóa quan trọng cho ổ cứng NVMe và SSD tốc độ cao.

Đối với các hệ thống dựa trên RHEL (CentOS, Fedora, AlmaLinux, Rocky Linux):

sudo dnf install xfsprogs xfsdump

Đối với các hệ thống dựa trên Debian (Ubuntu, Debian):

sudo apt update && sudo apt install xfsprogs xfsdump

Sau khi cài đặt xong, bạn đã có đầy đủ bộ công cụ. Tôi nhận thấy rằng việc chuẩn bị sẵn những thứ này sẽ giúp tránh được việc phải cuống cuồng tìm kiếm khi đĩa bị đầy 99% vào lúc 3 giờ sáng.

Công cụ Cấu hình và Quản lý

Quản lý XFS không chỉ dừng lại ở mkfs. Bạn cần xác định, thay đổi kích thước và bảo vệ dữ liệu của mình. Dưới đây là ba trụ cột trong quy trình làm việc hàng ngày của tôi.

1. Tùy chỉnh với xfs_admin

Việc xác định chính xác phân vùng là rất quan trọng. Phụ thuộc vào tên thiết bị như /dev/sdb1 là một sai lầm vì chúng có thể thay đổi khi bạn hoán đổi phần cứng. Tôi luôn sử dụng nhãn (label) cố định hoặc UUID. Công cụ xfs_admin cho phép bạn tinh chỉnh những thông số này mà không làm mất dữ liệu.

Để đặt nhãn cho một phân vùng chưa mount nhằm dễ theo dõi hơn:

# Unmount phân vùng mục tiêu trước
sudo umount /mnt/data

# Gán một nhãn rõ ràng
sudo xfs_admin -L "SAO_LUU_PROD" /dev/sdb1

Bạn cũng có thể làm mới UUID—hữu ích nếu bạn dùng dd để sao chép ổ đĩa và cần xử lý xung đột trên cùng một hệ điều hành:

sudo xfs_admin -u $(uuidgen) /dev/sdb1

Lưu ý rằng xfs_admin khá khắt khe. Nó thường yêu cầu file system phải ở trạng thái offline. Thử thực hiện thao tác này trên một phân vùng đang mount sẽ trả về lỗi “device busy”.

2. Mở rộng tức thì với xfs_growfs

Đây là lệnh tôi sử dụng nhiều nhất. Hãy tưởng tượng thế này: log của bạn đang phình to và ổ đĩa đã đạt mức 98%. Trên cloud, bạn có thể mở rộng volume ảo chỉ bằng một cú click, nhưng hệ điều hành sẽ không tự động nhận ra không gian đó. XFS xử lý việc này tuyệt vời mà không yêu cầu khởi động lại hay unmount.

# Đầu tiên, mở rộng phân vùng cơ sở hoặc volume LVM của bạn
# Sau đó, mở rộng file system XFS bằng mount point của nó
sudo xfs_growfs /mnt/data

Khác với resize2fs của Ext4, xfs_growfs nhắm vào mount point chứ không phải đường dẫn thiết bị. Đây là lỗi phổ biến của người mới. Hãy chạy df -h ngay sau đó và bạn sẽ thấy dung lượng mới được cập nhật ngay lập tức.

3. Sao lưu nhanh hơn với xfs_dump

Trong khi rsync rất tốt cho các tệp tin riêng lẻ, xfs_dump hoạt động ở cấp độ inode. Nó thường nhanh hơn gấp 2 lần đối với các volume lớn vì nó đọc trực tiếp cấu trúc đĩa. Nó sao lưu mọi thứ: thuộc tính tệp tin, metadata mở rộng và các giới hạn quota.

Để thực hiện sao lưu toàn bộ Level 0:

sudo xfs_dump -l 0 -f /backup/db_full.dump -L "Sao_luu_2026_05_04" -M "Luu_tru_Chinh" /mnt/data

Các tham số rất dễ hiểu:

  • -l 0: Thực hiện sao lưu toàn bộ (full backup). (1-9 dành cho sao lưu lũy tiến – incremental).
  • -f: Xác định file đích.
  • -L-M: Các nhãn nội bộ cho log sao lưu của bạn.

Để khôi phục dữ liệu đó, hãy dùng công cụ restore tương ứng:

sudo xfs_restore -f /backup/db_full.dump /mnt/restore_point

Xác minh và Kiểm tra sức khỏe

Giám sát chủ động giúp ngăn ngừa các tình huống khẩn cấp. XFS tích hợp sẵn các công cụ để kiểm tra chi tiết bên trong.

Kiểm tra cấu trúc với xfs_info

Nếu bạn cần xác minh kích thước block hoặc số lượng nhóm phân bổ (agcount), xfs_info là lựa chọn hàng đầu. Tôi sử dụng nó để đảm quả hiệu suất được tối ưu hóa cho phần cứng bên dưới.

xfs_info /mnt/data

Nhiều nhóm phân bổ (allocation groups) là bí mật đằng sau tốc độ của XFS. Chúng cho phép các tiến trình khác nhau ghi vào các phần riêng biệt của đĩa cùng một lúc, loại bỏ hiệu quả các nút thắt cổ chai do khóa thường thấy ở các file system cũ.

Quản lý phân mảnh

XFS rất giỏi trong việc tránh phân mảnh, nhưng điều đó vẫn có thể xảy ra trên các đĩa đã duy trì mức gần 100% dung lượng trong nhiều tháng. Hãy kiểm tra trạng thái bằng trình debugger của XFS:

sudo xfs_db -c frag -r /dev/sdb1

Flag -r đảm bảo việc kiểm tra chỉ ở chế độ read-only và an toàn cho các hệ thống đang chạy. Nếu bạn thấy độ phân mảnh trên 15-20%, hãy cân nhắc chạy xfs_fsr để sắp xếp lại các tệp tin dưới nền.

Công cụ Phá kính Khẩn cấp: xfs_repair

Nếu mất điện làm hỏng journal của bạn, xfs_repair là tuyến phòng thủ cuối cùng. Nó nhanh hơn và triệt để hơn nhiều so với trình bao fsck chung.

# CẢNH BÁO: Tuyệt đối không chạy lệnh này trên phân vùng đang mount!
sudo umount /mnt/data
sudo xfs_repair /dev/sdb1

Thông thường, journal của XFS sẽ tự “phát lại” trong quá trình mount và tự động khắc phục các lỗi nhỏ. Trong ba năm sử dụng cường độ cao, tôi chỉ cần dùng đến xfs_repair đúng hai lần. Nó cực kỳ bền bỉ. Chỉ cần nhớ quy tắc vàng: XFS có thể mở rộng, sao lưu nhanh, nhưng không bao giờ thu nhỏ.

Share: