Giới thiệu LVM LVM là một phương pháp cho phép ấn định không gian đĩa cứng thành những Logical Volume khiến cho việc thay đổi kích thước trở nên dễ dàng ( so với partition ). Với kỹ thuật Logical Volume Manager (LVM) bạn có thể thay đổi kích thước mà không cần phải sửa lại partition table của OS. Điều này thực sự hữu ích với những trường hợp bạn đã sử dụng hết phần bộ nhớ còn trống của partition và muốn mở rộng dung lượng của nó. LVM cũng cung cấp các tính năng tiên tiến như snapshotting, phân chia (striping), và mirroring. LVM kiến trúc và thuật ngữ Cấu trúc LVM quản lý lưu trữ (LVM Storage Management Structures) Trong bài viết này có 1 số thuật ngữ mà các bạn phải hiểu để sử dụng tốt LVM. Những điều quan trọng bạn phải biết là: Physical volumes LVM tiện ích tiền tố: pv ... Mô tả: Là những đĩa vật lý hoặc phân vùng đĩa của bạn chẳng hạn như /dev/hda hoặc /dev/hdb1. Khi bạn muốn sử dụng chỉ cần mount vào thôi. Đối với việc sử dụng LVM chúng ta có thể kết hợp nhiều physical volumes thành volume groups Volume groups LVM tiện ích tiền tố: vg ... Mô tả: Là một nhóm bao gồm các physycal volumes thực và dung lượng này được sử dụng để tạo ra các logical volumes, trong đó bạn có thể làm được những điều như sau : tạo, thay đổi kích thước, gỡ bỏ và sử dụng. Bạn có thể xem volume group như 1 “phân vùng ảo” Logical volumes LVM tiện ích tiền tố: lv ... Mô tả: Là những volumes cuối cùng sau khi mount vào hệ thống của mình, bạn có thể thêm vào, gỡ bỏ và thay đổi kích thước một cách nhanh chóng. Kể từ khi chúng chứa trong các volume group bạn có thể làm cho nó lơn hơn bất kỳ physical volume đơn lẻ mà bạn muốn. (ví dụ bạn có 4 ổ đĩa mỗi ổ 5GB khi bạn kết hợp nó lại thành 1 volume group 20GB, và bạn có thể tạo ra 2 logical volumes mỗi disk 10GB) Trong ngôn ngữ LVM không còn partition nữa, tất cả là volume: physical/group/logical volume. Tóm lại, LVM có thể được sử dụng để kết hợp các physical volume vào volume group để thống nhất không gian lưu trữ có sẵn trên hệ thống. Sau đó, các nhà quản trị có thể phân khúc volume group thành các logical volume tùy ý. Các trường hợp sử dụng đơn giản Bây giờ bạn đã quen thuộc với một số các thuật ngữ và cấu trúc LVM, chúng ta có thể khám phá một số cách phổ biến để sử dụng LVM. Chúng tôi sẽ bắt đầu bằng cách sử dụng hai ổ đĩa vật lý để tạo thành bốn logical volumes. Đánh dấu các thiết bị vật lý như Physical Volumes Bước đầu tiên của chúng tôi là quét hệ thống cho các thiết bị khối mà LVM có thể xem và quản lý. Bạn có thể làm điều này bằng cách gõ: Mã: lvmdiskscan Kết quả đầu ra sẽ hiển thị tất cả các thiết bị khối có sẵn mà LVM có thể tương tác: Mã: Output /dev/ram0 [ 64.00 MiB] /dev/sda [ 200.00 GiB] /dev/ram1 [ 64.00 MiB] . . . /dev/ram15 [ 64.00 MiB] /dev/sdb [ 100.00 GiB] 2 disks 17 partitions 0 LVM physical volume whole disks 0 LVM physical volumes Từ kết quả ra ở trên, chúng ta có thể thấy rằng hiện nay có 2 đĩa và 17 phân vùng. Các phân vùng chủ yếu là phân vùng /dev/ram* được sử dụng trên hệ thống như một Ram disk giúp cải tiến hiệu suất. Các đĩa trong ví dụ này là /dev/sda, trong đó có 200G của không gian, và /dev/sdb, trong đó có 100G. Cảnh báo: Hãy chắc chắn rằng bạn kiểm tra lại các thiết bị mà bạn có ý định sử dụng với LVM không có bất kỳ dữ liệu quan trọng đã được ghi vào. Sử dụng các thiết bị này trong LVM sẽ ghi đè lên các nội dung hiện tại. Nếu bạn đã có dữ liệu quan trọng trên máy chủ của bạn, thực hiện sao lưu trước khi tiếp tục. Bây giờ chúng ta biết các thiết bị vật lý, chúng tôi muốn sử dụng, chúng ta có thể đánh dấu chúng là physical volume trong LVM bằng cách sử dụng lệnh pvcreate: Mã: pvcreate /dev/sda /dev/sdb Kết quả đầu ra: Mã: Output Physical volume "/dev/sda" successfully created Physical volume "/dev/sdb" successfully created Điều này sẽ viết một LVM header đến các thiết bị để cho biết rằng chúng đã sẵn sàng để được thêm vào một volume group. Bạn có thể nhanh chóng xác minh rằng LVM đã được đã chỉ đinh physical volume bằng cách gõ: Mã: pvs Kết quả đầu ra: Mã: Output PV VG Fmt Attr PSize PFree /dev/sda lvm2 --- 200.00g 200.00g /dev/sdb lvm2 --- 100.00g 100.00g Thêm Physical Volumes tới một Volume Group Bây giờ chúng ta đã tạo ra physical volumes từ các thiết bị của chúng tôi, chúng tôi có thể tạo một volume group. Chúng tôi sẽ phải chọn một tên cho volume group. Hầu hết thời gian, bạn sẽ chỉ có một volume group duy nhất cho mỗi hệ thống cho sự linh hoạt tối đa trong phân bổ. Chúng tôi sẽ gọi volume group của chúng tôi là LVMVolGroup cho đơn giản. Để tạo ra các volume group và thêm physical volumes của chúng tôi đến chúng sử dụng lệnh đơn giản sau: Mã: vgcreate LVMVolGroup /dev/sda /dev/sdb Mã: Output Volume group "LVMVolGroup" successfully created Nếu chúng ta kiểm tra đầu ra pvs một lần nữa, chúng ta có thể thấy rằng physical volumes của chúng tôi hiện nay có liên quan với volume group mới: Mã: pvs Mã: Output PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g Chúng ta có thể thấy một bản tóm tắt ngắn gọn về các volume group của mình bằng cách gõ: Mã: vgs Mã: Output VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g Tạo Logical volumes từ Volume Group Pool Bây giờ chúng ta có một volume group có sẵn, chúng ta có thể sử dụng nó như một pool. Không giống như các phân vùng thông thường, khi làm việc với logical volumes, bạn không cần phải biết cách bố trí của volume mà LVM sẽ xử lý việc này cho bạn. Bạn chỉ cần cung cấp các kích thước của khối lượng và một tên. Chúng tôi sẽ tạo ra bốn logical volumes riêng biệt từ volume group của chúng tôi: 10G "projects" volume 5G "www" volume for web content 20G "db" volume for a database "workspace" volume được dùng lấp đầy khoảng không gian còn lại Để tạo khối tin hợp lý, chúng tôi sử dụng các lệnh lvcreate. Chúng ta có thể đặt tên cho volume hợp lý với tùy chọn -n. Để xác định kích thước trực tiếp, bạn có thể sử dụng tùy chọn -L. Nếu, thay vào đó, bạn muốn xác định kích thước về số lượng, mức độ, bạn có thể sử dụng tùy chọn -l. Chúng ta có thể tạo ra ba logical volume hợp lý đầu tiên với các tùy chọn -L như thế này: Mã: lvcreate -L 10G -n projects LVMVolGroup lvcreate -L 5G -n www LVMVolGroup lvcreate -L 20G -n db LVMVolGroup Mã: Output Logical volume "projects" created. Logical volume "www" created. Logical volume "db" created. Chúng ta có thể nhìn thấy các logical volumes và mối quan hệ của chúng với volume group bằng cách sử dụng câu lệnh sau: Mã: vgs -o +lv_size,lv_name Mã: Output VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db Chúng tôi đã thêm vào hai cột cuối cùng của kết quả đầu ra vì vậy mà chúng ta có thể nhìn thấy không gian phân bổ cho logical volume của chúng tôi Bây giờ, chúng ta có thể phân bổ phần còn lại của không gian trong volumes group đến volume “workspace” sử dụng cờ -l. Trong trường hợp của chúng tôi, chúng tôi mong muốn phân bổ không gian trống còn lại, vì vậy chúng tôi sử dụng câu lệnh sau: Mã: lvcreate -l 100%FREE -n workspace LVMVolGroup Mã: Output Logical volume "workspace" created. Nếu chúng ta kiểm tra lại các thông tin volume group, chúng ta có thể thấy rằng chúng tôi đã sử dụng hết tất cả các không gian có sẵn: Mã: vgs -o +lv_size,lv_name Mã: Output VG #PV #LV #SN Attr VSize VFree LSize LV LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace Như bạn có thể thấy, volume “workspace” đã được tạo ra và volume group "LVMVolGroup" là hoàn toàn được phân bổ. Định dạng và gắn kết Logical Volumes Bây giờ chúng ta có Logical Volumes , chúng ta có thể sử dụng chúng như các thiết bị khối bình thường. Các thiết bị logic có sẵn trong thư mục /dev giống như các thiết bị lưu trữ khác. Bạn có thể truy cập chúng ở hai nơi: Mã: /dev/volume_group_name/logical_volume_name /dev/mapper/volume_group_name-logical_volume_name Vì vậy, để định dạng bốn tập hợp lý của chúng tôi với các hệ thống tập tin Ext4, chúng ta có thể gõ: Mã: mkfs.ext4 /dev/LVMVolGroup/projects mkfs.ext4 /dev/LVMVolGroup/www mkfs.ext4 /dev/LVMVolGroup/db mkfs.ext4 /dev/LVMVolGroup/workspace Hoặc chúng ta có thể gõ: Mã: mkfs.ext4 /dev/mapper/LVMVolGroup-projects mkfs.ext4 /dev/mapper/LVMVolGroup-www mkfs.ext4 /dev/mapper/LVMVolGroup-db mkfs.ext4 /dev/mapper/LVMVolGroup-workspace Sau khi định dạng, chúng ta có thể tạo ra điểm gắn kết: Mã: mkdir -p /mnt/{projects,www,db,workspace} Sau đó chúng ta có thể gắn kết những logical volume đến các vị trí thích hợp: Mã: mount /dev/LVMVolGroup/projects /mnt/projects mount /dev/LVMVolGroup/www /mnt/www mount /dev/LVMVolGroup/db /mnt/db mount /dev/LVMVolGroup/workspace /mnt/workspace Để thực hiện gắn kết bền bỉ, thêm chúng vào /etc/fstab giống như bạn làm với các thiết bị khối bình thường: Mã: nano /etc/fstab Mã: . . . /dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0 /dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0 /dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0 /dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0 Các hệ điều hành hiện nay nên gắn kết LVM logical volumes một cách tự động lúc khởi động.