Hướng dẫn cho người mới bắt đầu về LVM

theanh

Administrator
Nhân viên
Phiên bản 1.0
Tác giả: Falko Timme
Cập nhật lần cuối: 2015-02-09

Hướng dẫn này chỉ cách làm việc với LVM (Logical Volume Management) trên Linux. Hướng dẫn cũng mô tả cách sử dụng LVM cùng với RAID1 trong một chương bổ sung. Vì LVM là một chủ đề khá trừu tượng, bài viết này đi kèm với một hình ảnh Debian Etch VMware mà bạn có thể tải xuống và khởi động, và trên hệ thống Debian Etch đó, bạn có thể chạy tất cả các lệnh tôi thực hiện ở đây và so sánh kết quả của bạn với kết quả của tôi. Thông qua cách tiếp cận thực tế này, bạn sẽ làm quen với LVM rất nhanh.

Tuy nhiên, tôi không đảm bảo rằng hướng dẫn này sẽ hiệu quả với bạn!


1 Lưu ý sơ bộ​

Hướng dẫn này được lấy cảm hứng từ hai bài viết tôi đã đọc:
Đây là những bài viết tuyệt vời, nhưng khó hiểu nếu bạn chưa từng làm việc với LVM trước đây. Đó là lý do tại sao tôi đã tạo ra hình ảnh Debian Etch VMware này mà bạn có thể tải xuống và chạy trong VMware Server hoặc VMware Player (xem https://www.howtoforge.com/import_vmware_images để tìm hiểu cách thực hiện).

Tôi đã cài đặt tất cả các công cụ chúng ta cần trong quá trình hướng dẫn này trên hệ thống Debian Etch (bằng cách chạy
Mã:
apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs
) vì vậy bạn không cần phải lo lắng về điều đó.

Mạng của hệ thống Debian Etch được cấu hình thông qua DHCP, vì vậy bạn không cần phải lo lắng về việc xung đột địa chỉ IP. Mật khẩu gốc là howtoforge. Bạn cũng có thể kết nối với hệ thống đó bằng một máy khách SSH như PuTTY. Để tìm địa chỉ IP của hệ thống Debian Etch, hãy chạy
Mã:
ifconfig
Hệ thống có sáu ổ cứng SCSI, /dev/sda - /dev/sdf. /dev/sda được sử dụng cho chính hệ thống Debian Etch, trong khi chúng tôi sẽ sử dụng /dev/sdb - /dev/sdf cho LVM và RAID. /dev/sdb - /dev/sdf mỗi ổ có 80GB dung lượng đĩa. Lúc đầu, chúng ta sẽ hành động như thể mỗi máy chỉ có 25GB dung lượng đĩa (do đó chỉ sử dụng 25GB cho mỗi máy) và trong quá trình hướng dẫn, chúng ta sẽ "thay thế" ổ cứng 25GB của mình bằng ổ cứng 80GB, do đó chứng minh cách bạn có thể thay thế ổ cứng nhỏ bằng ổ cứng lớn hơn trong LVM.

Bài viết http://www.linuxdevcenter.com/pub/a/linux/2006/04/27/managing-disk-space-with-lvm.html sử dụng ổ cứng 250GB và 800GB, nhưng một số lệnh như pvmove mất nhiều thời gian với kích thước ổ cứng như vậy, đó là lý do tại sao tôi quyết định sử dụng ổ cứng 25GB và 80GB (đủ để hiểu cách LVM hoạt động).


1.1 Tóm tắt​
Tải xuống hình ảnh Debian Etch VMware này (~310MB) và khởi động như thế này. Đăng nhập với tư cách là root với mật khẩu howtoforge.


2 Bố cục LVM​

Về cơ bản, LVM trông như thế này:



Bạn có một hoặc nhiều ổ đĩa vật lý (/dev/sdb1 - /dev/sde1 trong ví dụ của chúng tôi) và trên các ổ đĩa vật lý này, bạn tạo một hoặc nhiều nhóm ổ đĩa (ví dụ: fileserver) và trong mỗi nhóm ổ đĩa, bạn có thể tạo một hoặc nhiều ổ đĩa logic. Nếu bạn sử dụng nhiều ổ đĩa vật lý, mỗi ổ đĩa logic có thể lớn hơn một trong các ổ đĩa vật lý cơ bản (nhưng tất nhiên tổng các ổ đĩa logic không được vượt quá tổng dung lượng do các ổ đĩa vật lý cung cấp).

Thực hành tốt là không phân bổ toàn bộ dung lượng cho các ổ đĩa logic mà để lại một số dung lượng chưa sử dụng. Theo cách đó, bạn có thể mở rộng một hoặc nhiều ổ đĩa logic sau này nếu bạn cảm thấy cần thiết.

Trong ví dụ này, chúng ta sẽ tạo một nhóm ổ đĩa có tên là fileserver và chúng ta cũng sẽ tạo các ổ đĩa logic /dev/fileserver/share, /dev/fileserver/backup và /dev/fileserver/media (sẽ chỉ sử dụng một nửa dung lượng mà các ổ đĩa vật lý của chúng ta cung cấp vào lúc này - theo cách đó, chúng ta có thể chuyển sang RAID1 sau này (cũng được mô tả trong hướng dẫn này)).


3 Thiết lập LVM đầu tiên của chúng ta​

Hãy cùng tìm hiểu về các ổ đĩa cứng của chúng ta:
Mã:
fdisk -l
Đầu ra trông như thế này:
Mã:
server1:~#fdisk-l
 
 Đĩa/dev/sda: 21,4 GB, 21474836480 byte
 255 đầu, 63 sector/track, 2610 cylinder
 Đơn vị=cylindersof16065*512=8225280 byte
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sda1*118144553+83Linux
 /dev/sda21924501953504083Linux
 /dev/sda424512610128520082Linuxswap/Solaris
 
 Đĩa/dev/sdb: 85,8 GB, 85899345920 byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=xi lanh của 16065*512=8225280byte
 
 Đĩa/dev/sdb không chứa bảng phân vùng hợp lệ
 
 Đĩa/dev/sdc: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=xi lanh của 16065*512=8225280byte
 
 Đĩa/dev/sdc không chứa bảng phân vùng hợp lệ
 
 Đĩa/dev/sdd: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=xi lanh của 16065*512=8225280byte
 
 Đĩa/dev/sdd không chứa bảng phân vùng hợp lệ
 
 Đĩa/dev/sde: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=xi lanh của 16065*512=8225280byte
 
 Đĩa/dev/sde không chứa bảng phân vùng hợp lệ
 
 Đĩa/dev/sdf: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=xi lanh của 16065*512=8225280byte
 
 Disk/dev/sdfdoesn'tcontainavalidpartitiontable
Chưa có phân vùng nào trên /dev/sdb - /dev/sdf. Chúng tôi sẽ tạo các phân vùng /dev/sdb1, /dev/sdc1, /dev/sdd1 và /dev/sde1 và để nguyên /dev/sdf cho đến bây giờ. Chúng tôi hành động như thể ổ cứng của chúng tôi chỉ có 25GB dung lượng thay vì 80GB hiện tại, do đó chúng tôi chỉ định 25GB cho /dev/sdb1, /dev/sdc1, /dev/sdd1 và /dev/sde1:
Mã:
fdisk /dev/sdb
server1:~#fdisk/dev/sdb

Số lượng xi lanh cho ổ đĩa này là 10443.
Không có gì sai với điều đó, nhưng nó lớn hơn 1024,
và một số thiết lập nhất định có thể gây ra sự cố với:
1) phần mềm chạy tại thời điểm khởi động (ví dụ: phiên bản cũ của LILO)
2) phần mềm khởi động và phân vùng từ các hệ điều hành khác
(ví dụ: DOSFDISK, OS/2FDISK)

Lệnh (m để trợ giúp):<-- m
Commandaction
atoggleabootableflag
beditbsddisklabel
ctogglethedoscompatibilityflag
ddeleteapartition
llistknownpartitiontypes
mprintthismenu
naddanewpartition
ocreateanewemptyDOSpartitiontable
pprintthepartitiontable
qquitwithoutsavingchanges
screateanewemptySundisklabel
tchangeapartition'ssystemid
uchangedisplay/entryunits
vverifythepartitiontable
wwritetabletodiskandexit
xextrafunctionality(expertsonly)

Command(mforhelp):<-- n
Commandaction
eextended
pprimarypartition(1-4)
<-- p
Số phân vùng (1-4):<-- 1
Xi lanh đầu tiên (1-10443, mặc định 1): <-- <ENTER>
Sử dụng giá trị mặc định 1
Xi lanh cuối cùng hoặc + kích thước hoặc + kích thước Mor + kích thước K (1-10443, mặc định 10443):<-- +25000M

Lệnh (mforhelp):<-- t
Phân vùng đã chọn 1
Mã thập lục phân (kiểu Ltolistcodes):<-- L

0Empty1eẨnW95FAT180OldMinixbeSolarisboot
1FAT1224NECDOS81Minix/oldLinbfSolaris
2XENIXroot39Plan982Linuxswap/Soc1DRDOS/giây(FAT-
3XENIXusr3cPartitionMagic83Linuxc4DRDOS/giây(FAT-
4FAT16<32M40Venix8028684OS/2ẩnC:c6DRDOS/giây(FAT-
5Mở rộng41PPCPRePBoot85Linuxmở rộngc7Syrin x
6FAT1642SFS86NTFSvolumesetdaNon-FSdata
7HPFS/NTFS4dQNX4.x87NTFSvolumesetdbCP/M/CTOS/.
8AIX4eQNX4.x2ndpart88LinuxplaintextdeDellUtility
9AIXbootable4fQNX4.x3rdpart8eLinuxLVMdfBootIt
aOS/2BootManag50OnTrackDM93Amoebae1DOSaccess
bW95FAT3251OnTrackDM6Aux94AmoebaBBTe3DOSR/O
cW95FAT32(LBA)52C P/M9fBSD/OSe4SpeedStor
eW95FAT16(LBA)53OnTrackDM6Auxa0IBMThinkpadhiebBeOSfs
fW95Ext'd(LBA)54OnTrackDM6a5FreeBSDeeEFIGPT
10OPUS55EZ-Drivea6OpenBSDefEFI(FAT-12/16/
11HiddenFAT1256GoldenBowa7NeXTSTEPf0Linux/PA-RISCb
12Compaqdiagnost5cPriamEdiska8DarwinUFSf1SpeedStor
14HiddenFAT16<361SpeedSto ra9NetBSDf4SpeedStor
16HiddenFAT1663GNUHURDorSysabDarwinbootf2DOSsecondary
17HiddenHPFS/NTF64NovellNetwareb7BSDIfsfdLinuxraidauto
18ASTSmartSleep65NovellNetwareb8BSDIswapfeLANstep
1bHiddenW95FAT370DiskSecureMultbbBootWizardhidffBBT
1cHiddenW95FAT375PC/IX
Mã thập lục phân(typeLtolistcodes):<-- 8e
Đã thay đổi systemtypeofpartition1 thành 8e(LinuxLVM)

Lệnh(mforhelp):<-- w
Bảng phân vùng đã được thay đổi!

Gọi ioctl() để đọc lại bảng phân vùng.
Đồng bộ hóa đĩa.

Bây giờ chúng ta làm tương tự đối với các ổ cứng /dev/sdc - /dev/sde:
Mã:
fdisk /dev/sdc
 fdisk /dev/sdd
 fdisk /dev/sde
Sau đó chạy
Mã:
fdisk -l
một lần nữa. Đầu ra sẽ trông như thế này:
Mã:
server1:~#fdisk-l
 
 Đĩa/dev/sda:21,4GB,21474836480byte
 255heads,63sectors/track,2610cylinders
 Units=cylindersof16065*512=8225280bytes
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sda1*118144553+83Linux
 /dev/sda21924501953504083Linux
 /dev/sda424512610128520082Linuxswap/Solaris
 
 Đĩa/dev/sdb:85,8GB,85899345920bytes
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=cylindersof16065*512=8225280byte
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sdb11304024418768+8eLinuxLVM
 
 Đĩa/dev/sdc:85,8GB,85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=cylindersof16065*512=8225280byte
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sdc11304024418768+8eLinuxLVM
 
 Đĩa/dev/sdd: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=cylindersof16065*512=8225280byte
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sdd11304024418768+8eLinuxLVM
 
 Đĩa/dev/sde: 85,8GB, 85899345920byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=cylindersof16065*512=8225280byte
 
 DeviceBootStartEndBlocksIdSystem
 /dev/sde11304024418768+8eLinuxLVM
 
 Đĩa/dev/sdf: 85,8 GB, 85899345920 byte
 255 đầu, 63 sector/track, 10443 cylinder
 Đơn vị=cylindersof16065*512=8225280 byte
 
 Đĩa/dev/sdf không chứa bảng phân vùng không hợp lệ
Bây giờ chúng ta chuẩn bị các phân vùng mới cho LVM:
Mã:
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Mã:
server1:~#pvcreate/dev/sdb1/dev/sdc1/dev/sdd1/dev/sde1
 Physicalvolume"/dev/sdb1"successfullycreated
 Physicalvolume"/dev/sdc1"successfullycreated
 Physicalvolume"/dev/sdd1"successfullycreated
 Physicalvolume"/dev/sde1"successfullycreated
Chúng ta hãy hoàn nguyên hành động cuối cùng này cho mục đích đào tạo:
Mã:
pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
Mã:
server1:~#pvremove/dev/sdb1/dev/sdc1/dev/sdd1/dev/sde1
 Labelsonphysicalvolume"/dev/sdb1"đã xóa thành công
 Labelsonphysicalvolume"/dev/sdc1"đã xóa thành công
 Labelsonphysicalvolume"/dev/sdd1"đã xóa thành công
 Labelsonphysicalvolume"/dev/sde1"đã xóa thành công
Sau đó chạy
Mã:
pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
lại:
Mã:
server1:~#pvcreate/dev/sdb1/dev/sdc1/dev/sdd1/dev/sde1
 Physicalvolume"/dev/sdb1"đã tạo thành công
 Physicalvolume"/dev/sdc1"successfullycreated
 Physicalvolume"/dev/sdd1"successfullycreated
 Physicalvolume"/dev/sde1"successfullycreated
Bây giờ hãy chạy
Mã:
pvdisplay
để tìm hiểu về trạng thái hiện tại của các ổ đĩa vật lý của bạn:
Mã:
server1:~#pvdisplay
 ---NEWPhysicalvolume---
 PVName/dev/sdb1
 VGName
 PVSize23.29GB
 AllocatableNO
 PESize(KByte)0
 TotalPE0
 FreePE0
 AllocatedPE0
 PVUUIDG8lu2L-Hij1-NVde-sOKc-OoVI-fadg-Jd1vyU
 
 ---NEWPhysicalvolume---
 PVName/dev/sdc1
 VGName
 PVSize23.29GB
 Không thể phân bổ
 PESize(KByte)0
 Tổng PE0
 FreePE0
 Đã phân bổPE0
 PVUUID40GJyh-IbsI-pzhn-TDRq-PQ3l-3ut0-AVSE4B
 
 ---NEWPhysicalvolume---
 PVName/dev/sdd1
 VGName
 PVSize23.29GB
 Không thể phân bổ
 PESize(KByte)0
 Tổng PE0
 FreePE0
 Đã phân bổPE0
 PVUUID4mU63D-4s26-uL00-r0pO-Q0hP-mvQR-2YJN5B
 
 ---NEWPhysicalvolume---
 PVName/dev/sde1
 VGName
 PVSize23.29GB
 AllocatableNO
 PESize(KByte)0
 TotalPE0
 FreePE0
 AllocatedPE0
 PVUUID3upcZc-4eS2-h4r4-iBKK-gZJv-AYt3-EKdRK6
 
Back
Bên trên