vgcreate là lệnh trong LVM dùng để tạo một Volume Group (VG) mới từ một hoặc nhiều Physical Volume, giúp bạn gom tài nguyên lưu trữ rời rạc thành một khối dung lượng linh hoạt để quản lý. Nội dung dưới đây được đúc kết từ kinh nghiệm vận hành và xử lý hạ tầng thực tế cho hơn 100.000 khách hàng tại Vietnix. Bài viết không chỉ cung cấp cú pháp lệnh mà còn đi sâu vào các kỹ thuật thiết lập tối ưu, giúp bạn tránh những sai sót phổ biến gây mất an toàn dữ liệu và đảm bảo tính sẵn sàng cao cho hệ thống máy chủ Linux.
Những điểm chính
Quan điểm của mình: Trong quản trị hệ thống Linux, việc sử dụng LVM (Logical Volume Manager) là tiêu chuẩn bắt buộc để đảm bảo tính linh hoạt khi quản lý dung lượng lưu trữ. Lệnh vgcreate đóng vai trò là “cầu nối” cốt lõi trong quy trình này, giúp gộp các ổ đĩa vật lý riêng lẻ thành một nhóm dung lượng tập trung. Việc nắm vững cách khởi tạo và cấu hình Volume Group (VG) bằng vgcreate là nền tảng giúp kỹ thuật viên dễ dàng mở rộng, thu hẹp hoặc di chuyển dữ liệu giữa các ổ đĩa mà không làm gián đoạn hoạt động của hệ thống. Dưới đây là các nội dung chính có trong bài bạn cần nắm rõ:
- Khái niệm: Hiểu rõ vgcreate là lệnh dùng để tạo Volume Group (VG) mới, giúp bạn gom tài nguyên lưu trữ rời rạc thành một khối dung lượng linh hoạt.
- Các khái niệm liên quan: Nắm được các khái niệm cốt lõi như LVM, PV, VG, LV, giúp bạn hiểu rõ bối cảnh và vai trò của vgcreate trong hệ thống LVM.
- Lý do sử dụng: Biết được lợi ích của vgcreate trong việc mở rộng dung lượng linh hoạt, giúp bạn nhận thấy ưu điểm so với phân vùng truyền thống.
- Yêu cầu cài đặt: Nắm được các yêu cầu cần thiết như cài đặt lvm2, giúp bạn chuẩn bị môi trường sẵn sàng để tạo VG.
- Các lệnh cơ bản: Nắm vững các lệnh cốt lõi để tạo, xem, mở rộng và quản lý VG, giúp bạn thực hiện các tác vụ quản trị VG hàng ngày.
- Xử lý lỗi: Nhận biết và khắc phục các lỗi phổ biến như tên VG đã tồn tại hoặc thiết bị không hợp lệ, giúp bạn giải quyết nhanh các sự cố thường gặp.
- Câu hỏi thường gặp: Được giải đáp các thắc mắc về các lệnh liên quan như lvcreate và pvcreate, giúp củng cố kiến thức và làm rõ các vấn đề thực tế.
Lệnh vgcreate trong Linux là gì?
vgcreate là một lệnh trong hệ thống LVM (Logical Volume Management) trên Linux dùng để tạo mới một Volume Group (VG) từ một hay nhiều Physical Volume (PV) đã được chỉ định. Lệnh này gom dung lượng của các thiết bị lưu trữ vật lý vào một vùng lưu trữ thống nhất (storage pool), từ đó bạn có thể phân bổ tiếp cho các Logical Volume (LV) linh hoạt hơn so với phân vùng truyền thống.

Những khái niệm cần nắm khi sử dụng lệnh vgcreate
Một khái niệm mà bạn cần nắm để hiểu rõ lệnh vgcreate:
- LVM (Logical Volume Management): Là cơ chế quản lý dung lượng lưu trữ trên Linux cho phép trừu tượng hóa và gom nhóm các thiết bị lưu trữ vật lý để phân bổ không gian linh hoạt hơn so với phân vùng truyền thống.
- PV (Physical Volume): Là các thiết bị lưu trữ vật lý hoặc phân vùng (ví dụ: ổ đĩa, partition, LUN) đã được khởi tạo cho LVM bằng lệnh pvcreate để có thể tham gia vào Volume Group.
- VG (Volume Group): Là một nhóm lưu trữ được tạo nên từ một hoặc nhiều PV, đóng vai trò tập hợp và quản lý không gian của các Physical Volume để từ đó cấp phát cho các Logical Volume.
- Extent (PE và LE): Là đơn vị phân bổ không gian cơ bản và nhỏ nhất trong LVM, với kích thước mặc định là 4MB. Toàn bộ không gian lưu trữ trong một Volume Group được chia và quản lý theo các đơn vị này, tạo cơ sở cho việc thay đổi kích thước linh hoạt của các Logical Volume.
- Physical Extent (PE): Là các khối dung lượng có kích thước cố định mà một Volume Group (VG) chia ra từ không gian của các Physical Volume (PV) thành phần.
- Logical Extent (LE): Là các khối dung lượng được dùng để xây dựng nên một Logical Volume (LV). Mỗi LE trong một LV sẽ ánh xạ trực tiếp tới một PE trong cùng Volume Group. Kích thước của LE và PE là tương đồng.
- LV (Logical Volume): Là lớp lưu trữ logic được tạo bên trong VG, có thể được định dạng với các filesystem như ext4, XFS,… và mount vào hệ thống để sử dụng như phân vùng thông thường.

Vì sao nên sử dụng lệnh vgcreate?
Dưới đây là các lý do nên sử dụng lệnh vgcreate trong Linux:
- Hợp nhất tài nguyên lưu trữ: Lệnh
vgcreatecho phép quản trị viên tập hợp nhiều ổ đĩa vật lý riêng lẻ thành một nhóm dung lượng thống nhất, giúp đơn giản hóa việc quản lý tổng thể thay vì phải theo dõi từng thiết bị rời rạc. - Mở rộng dung lượng linh hoạt: Công cụ này hỗ trợ quy trình mở rộng không gian lưu trữ trực tuyến ngay khi hệ thống đang vận hành, loại bỏ hoàn toàn rủi ro và downtime so với phương pháp phân vùng truyền thống.
- Tối ưu hóa hiệu năng I/O: Quản trị viên có thể cấu hình Volume Group để phân tán dữ liệu ghi song song trên nhiều ổ đĩa vật lý, từ đó cải thiện đáng kể tốc độ truy xuất cho các ứng dụng đòi hỏi hiệu suất cao.
- Quản lý định danh trực quan: Lệnh cho phép gán các tên gọi gợi nhớ theo chức năng cho nhóm lưu trữ, giúp người vận hành dễ dàng nhận diện và giảm thiểu sai sót khi thao tác so với việc dùng tên thiết bị phần cứng.
- Trừu tượng hóa phần cứng: Volume Group hoạt động như một lớp đệm trung gian tách biệt ứng dụng khỏi phần cứng vật lý, cho phép thay thế hoặc di chuyển dữ liệu khỏi các ổ đĩa lỗi mà không làm gián đoạn cấu trúc hệ thống.

Yêu cầu cài đặt của lệnh vgcreate
Các công cụ liên quan đến LVM thường đã được cài sẵn trên hệ thống, nhưng nếu thiếu bạn cần cài thêm gói lvm2.
Trên Debian/Ubuntu thì bạn có thể sử dụng lệnh:
apt install lvm2Trên CentOS/RHEL thì bạn có thể sử dụng lệnh:
yum install lvm2Cách sử dụng lệnh vgcreate kèm ví dụ thực tế
Trước khi sử dụng vgcreate, bạn cần chuẩn bị sẵn ít nhất một đĩa hoặc phân vùng để khởi tạo làm Physical Volume (PV). Giả sử ở đây bạn có hai đĩa vật lý là /dev/sdb và /dev/sdc. Bạn có thể khởi tạo đĩa vật lý (PV) thông qua lệnh:
pvcreate /dev/sdb /dev/sdcLệnh 1: Tạo Volume Group cơ bản
Lệnh này nhằm mục đích gom tài nguyên lưu trữ từ các đĩa vật lý thành một Volume Group duy nhất để quản lý tập trung. Bạn có thể sử dụng lệnh sau:
vgcreate vg_data /dev/sdb /dev/sdcGiải thích:
- vgcreate: Lệnh dùng để tạo mới một Volume Group.
- vg_data: Tên Volume Group do bạn tự đặt; nên sử dụng tiền tố vg_ để dễ nhận diện trong hệ thống.
- /dev/sdb /dev/sdc: Danh sách các Physical Volume sẽ được thêm vào Volume Group này.
Ở đây mình có 1 lưu ý nhỏ đến bạn từ kinh nghiệm thực tế, đừng bao giờ đặt tên VG chung chung như vg01 hay data. Trong môi trường doanh nghiệp, hãy đặt tên theo mục đích sử dụng kết hợp với tên dự án (ví dụ: vg_prod_mysql hoặc vg_web_uploads). Thói quen này giúp bạn không bao giờ gõ nhầm lệnh xóa dữ liệu khi hệ thống có quá nhiều ổ đĩa.
Lệnh 2: Xem thông tin chi tiết Volume Group
Lệnh này nằm mục đích kiểm tra tổng dung lượng, số lượng PV tham gia và các tham số quan trọng khác của VG. Bạn có thể sử dụng lệnh sau:
vgdisplay vg_dataGiải thích:
- vgdisplay hiển thị thông tin chi tiết (verbose) về Volume Group.
Lưu ý
VG Size (tổng kích thước), Free PE / Size (dung lượng còn trống), Max LV (số Logical Volume tối đa có thể tạo).
Lệnh 3: Tạo VG với kích thước Extent tùy chỉnh
Lệnh này có thể thiết lập kích thước đơn vị lưu trữ cơ bản (Physical Extent – PE) cho VG, giá trị mặc định thường là 4MB. Bạn có thể sử dụng lệnh sau:
vgcreate -s 32M vg_large_db /dev/sddGiải thích:
- -s 32M: Đặt kích thước Physical Extent (PE) là 32 Megabytes.
Khi bạn chỉ tạo một vài Logical Volume rất lớn (ví dụ vài TB), tăng kích thước PE có thể giúp giảm tải cho metadata LVM và cải thiện hiệu suất; tuy nhiên, với phần lớn hệ thống, giá trị mặc định 4MB vẫn đáp ứng tốt.
Lệnh 4: Thêm (extend) và loại bỏ (reduce) PV khỏi VG
Lệnh này nhằm mục đích mở rộng hoặc thu hẹp dung lượng Volume Group bằng cách thêm hoặc gỡ bớt Physical Volume mà không cần thay đổi cấu trúc phân vùng truyền thống. Bạn có thể sử dụng lệnh sau:
Thêm đĩa mới /dev/sde vào VG
vgextend vg_data /dev/sde
Loại bỏ đĩa /dev/sde khỏi VG (Lưu ý: Phải di chuyển dữ liệu khỏi đĩa này trước)
sudo vgreduce vg_data /dev/sdeGiải thích:
- vgextend: Dùng để mở rộng Volume Group bằng cách bổ sung thêm Physical Volume, từ đó tăng thêm không gian trống cho VG.
- vgreduce: Dùng để loại bỏ một Physical Volume ra khỏi Volume Group; trước khi thực hiện, cần dùng pvmove để chuyển toàn bộ dữ liệu Logical Extent khỏi PV đó nếu đang được sử dụng.
Lệnh 5: Phối hợp thực tiễn với VG
| Kịch bản | Cú pháp Lệnh | Giải thích Logic & Mẹo chuyên gia |
| Kích hoạt/Vô hiệu hóa VG | sudo vgchange -a y vg_data | Kích hoạt Volume Group. Thao tác này bắt buộc phải thực hiện khi bạn vừa gắn một ổ cứng có sẵn LVM từ máy chủ khác sang hoặc sau khi hệ thống vừa khôi phục từ sự cố. |
| Đổi tên VG | sudo vgrename vg_old vg_new | Đổi tên Volume Group. Rất hữu ích khi bạn di chuyển ổ đĩa giữa các máy chủ và phát hiện ra hai máy chủ đang trùng tên VG (ví dụ cùng tên là centos). |
| Kiểm tra PV thuộc VG nào | sudo pvs hoặc sudo pvdisplay | Hiển thị danh sách các ổ đĩa vật lý (PV) và chỉ rõ chúng đang nằm trong Volume Group nào. Lệnh này trực quan và dễ đọc hơn rất nhiều so với lệnh pvscan. |
| Xóa toàn bộ VG | sudo vgremove vg_data | Xóa Volume Group khỏi hệ thống. Lưu ý từ chuyên gia: Bạn bắt buộc phải xóa các Logical Volume bên trong bằng lệnh lvremove trước, nếu không hệ thống sẽ từ chối thực thi để bảo vệ dữ liệu. |
| Lọc nhanh dung lượng trống | sudo vgs -o vg_name,vg_free | Kết hợp tùy chọn -o (output) để lọc thẳng ra tên VG và dung lượng còn trống. Đây là cách làm thực tế của các kỹ thuật viên thay vì dùng lệnh pipe grep thủ công. |
Xử lý một số lỗi phổ biến khi thực thi lệnh vgcreate
Lỗi Can’t create volume group “[TÊN]”: The volume group name is already in use:
- Nguyên nhân: Đã tồn tại một Volume Group khác sử dụng cùng tên trên hệ thống.
- Khắc phục: Chọn một tên VG khác hoặc dùng vgrename để đổi tên Volume Group cũ trước khi tạo mới.
Lỗi Couldn’t find device /dev/sdb:
- Nguyên nhân: Thiết bị vật lý /dev/sdb không tồn tại, đã bị tháo ra, đổi tên hoặc hệ thống không còn nhận diện đúng đường dẫn thiết bị.
- Khắc phục: Dùng lsblk hoặc fdisk -l để kiểm tra lại danh sách thiết bị và xác định chính xác tên thiết bị cần sử dụng.
Lỗi Device /dev/sdb not a valid LVM physical volume:
- Nguyên nhân: Bạn đang sử dụng một đĩa hoặc phân vùng chưa được khởi tạo làm Physical Volume cho LVM.
- Khắc phục: Chạy lệnh sudo pvcreate /dev/sdb để khởi tạo PV trước, sau đó mới dùng lại vgcreate với thiết bị này.
Lỗi Volume group “vg_data” not found:
- Nguyên nhân: Volume Group vg_data đang ở trạng thái chưa được kích hoạt hoặc chưa được nhận diện sau khi khởi động lại hệ thống.
- Khắc phục: Sử dụng lệnh sudo vgchange -a y vg_data để kích hoạt lại Volume Group và thử thao tác một lần nữa.

Câu hỏi thường gặp
Lệnh lvcreate trong Linux là gì?
Lệnh lvcreate được dùng để tạo Logical Volume (LV) mới trong một Volume Group (VG) đã tồn tại, cho phép bạn phân bổ dung lượng lưu trữ linh hoạt hơn so với phân vùng cố định. Logical Volume tạo ra có thể định dạng filesystem (ext4, XFS,…), mount và sử dụng như một phân vùng thông thường cho dữ liệu hoặc ứng dụng.
Cách dùng vgcreate trên Ubuntu như thế nào?
Trên Ubuntu, bạn chỉ cần đảm bảo gói lvm2 đã được cài đặt, sau đó khởi tạo PV rồi dùng vgcreate. Ví dụ: pvcreate /dev/sdb1 và vgcreate vg_ubuntu_data /dev/sdb1. Trong đó pvcreate khởi tạo Physical Volume, còn vgcreate tạo Volume Group vg_ubuntu_data từ PV đó.
pvcreate là gì?
pvcreate là lệnh dùng để khởi tạo một thiết bị lưu trữ (ổ đĩa, phân vùng, LUN) thành Physical Volume, giúp thiết bị đó có thể tham gia vào một Volume Group. Bạn thường chạy pvcreate trước, sau đó mới dùng vgcreate để tạo VG, hoặc vgextend để thêm PV mới vào VG đang tồn tại.
Nếu bạn đang triển khai hạ tầng lưu trữ trên Linux, việc hiểu và sử dụng đúng lệnh vgcreate sẽ giúp bạn chủ động thiết kế Volume Group ngay từ đầu, tối ưu cách gom nhóm và phân bổ tài nguyên đĩa cho toàn hệ thống. Kết hợp vgcreate với các lệnh pvcreate, lvcreate, vgextend,… bạn có thể linh hoạt mở rộng, tái cấu trúc và quản lý dung lượng lưu trữ mà vẫn hạn chế tối đa downtime, phù hợp cho cả môi trường thử nghiệm lẫn hệ thống production quy mô lớn.




