LVM相關概念:
LVM(Logical Volume Manager)利用Linux內核的device-mapper來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。通過LVM,可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),從而可以更簡便地擴大和縮小分區,可以在增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,LVM只是提供了對硬盤的一個方便的管理機制,並沒有提供額外的安全保證。
LVM的相關術語:
物理卷Physical volume(PV):位於邏輯卷管理的最底層,可以是過個硬盤的多個分區。
卷組Volume group(VG):建立在多個物理捲上,它將多個物理卷聚合爲一個大的管理單元(卷組),可以動態管理卷組中的物理卷。
邏輯卷Logical volume(LV):虛擬分區,它建立在卷組之上,可以動態的調整邏輯卷大小。
物理塊Physical extent(PE):它是物理卷中可供分配的最小存儲單元(默認大小4M)。它的大小會在創建卷組的時候被指定,一旦卷組創建完成後,物理區域大小無法再調整;同一卷組中各個物理卷的物理塊大小一致。
邏輯塊Logical exten(LE):LE是邏輯捲上的最小可存儲單元,和PE大小一致。
優點
相對於普通的硬盤分區管理,LVM更富於彈性:
使用卷組(VG),組合多個物理卷形成一個的大的存儲池,可動態管理卷組。
使用邏輯卷(LV),可以創建跨越衆多硬盤空間的分區(Virtual Partitions),在調整邏輯卷(LV)大小時可以不用考慮邏輯卷在硬盤上的位置,不用擔心沒有可用的連續空間。
可以在線(online)對邏輯卷(LV)和卷組(VG)進行管理操作,擴展,縮減,刪除等。
允許創建快照,可以保存文件系統的備份。
缺點
相對於普通的卷,其創建過程更爲複雜。
練習:利用現有磁盤sdb創建兩個物理卷,組建一個15G的卷組vg1,並創建一個7G的邏輯卷lv1,掛載到/mnt/lv001
Step1:創建兩個分區,並組建成一個15G的卷組
[root@centos6 ~]# fdisk -l /dev/sdb #查看sdb使用情況,磁盤未劃分任何分區,接下來創建分區sdb1(5G),sdb2(10G)
Disk /dev/sdb: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x067824c0
Device Boot Start End Blocks Id System
[root@centos6 ~]# fdisk -l /dev/sdb #使用fdisk命令來創建分區sdb1,sdb2
Disk /dev/sdb: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x067824c0
Device Boot Start End Blocks Id System
[root@centos6 ~]# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n #創建分區
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15665, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +5G #指定分區大小5G
Command (m for help): t #改變分區ID號
Selected partition 1
Hex code (type L to list codes): 8e #8e是LVM分區ID號
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
[root@centos6 ~]# partx -a /dev/sdb #通知內核更新分區表
BLKPG: Device or resource busy
error adding partition 1
[root@centos6 ~]# fdisk -l /dev/sdb #驗證分區是否創建好
Disk /dev/sdb: 128.8 GB, 128849018880 bytes
....此處略去N行信息
Device Boot Start End Blocks Id System
/dev/sdb1 1 654 5253223+ 8e Linux LVM
同理創建大小爲10G的分區sdb2
[root@centos6 ~]# fdisk -l /dev/sdb #創建好的分區sdb1,sdb2如下
Disk /dev/sdb: 128.8 GB, 128849018880 bytes
...此處略去N行信息
Device Boot Start End Blocks Id System
/dev/sdb1 1 654 5253223+ 8e Linux LVM
/dev/sdb2 655 1960 10490445 8e Linux LVM
Step2:將分區轉化爲物理卷
[root@centos6 ~]# pvcreate /dev/sdb{1,2} #將分區sdb1,sdb2創建爲物理卷PV
Physical volume "/dev/sdb1" successfully createdPhysical volume "/dev/sdb2" successfully created
[root@centos6 ~]# vgdisplay vg1 #創建卷組,取名爲vg1
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 15.01 GiB
PE Size 4.00 MiB
Total PE 3842
Alloc PE / Size 0 / 0
Free PE / Size 3842 / 15.01 GiBVG UUID QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6
[root@centos6 ~]# lvcreate -L 7G -n lv1 vg1 #創建邏輯卷,指定大小爲7G,卷名爲lv1
Logical volume "lv1" created
[root@centos6 ~]# mkfs.ext4 /dev/vg1/lv1 #格式化邏輯卷lv1爲ext4文件系統格式
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
458752 inodes, 1835008 blocks
91750 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1879048192
56 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@centos6 ~]# lvdisplay /dev/vg1/lv1 #查看邏輯卷lv1的詳細信息
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w
LV Write Access read/write
LV Creation host, time centos6, 2015-08-31 05:17:16 +0800
LV Status available
# open 0
LV Size 7.00 GiB
Current LE 1792
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 25
[root@centos6 ~]# mkdir /mnt/lv001 #創建掛載點目錄lv001
[root@centos6 ~]# mount /dev/vg1/lv1 /mnt/lv001/ #掛載邏輯卷lv1到/mnt/lv001目錄下
[root@centos6 ~]# ll /mnt/lv001/ #驗證已掛載成功
total 16
drwx------ 2 root root 16384 Aug 31 05:18 lost+found
至此,邏輯卷lv1已經創建成功,如果要實現自動掛載,修改/etc/fstab文件,爲/dev/vg1/lv1添加相應的掛載條目即可。
練習:擴展lv1卷大小,將lv1大小調整到10G (故需要添加3G空間到原有7G空間上去)
[root@centos6 ~]# lvextend --size +3G /dev/vg1/lv1 /dev/sdb2 #爲lv1添加3G空間
Size of logical volume vg1/lv1 changed from 7.00 GiB (1792 extents) to 10.00 GiB (2560 extents).
Logical volume lv1 successfully resized
[root@centos6 ~]# lvdisplay /dev/vg1/lv1 #查看lv1的詳細信息
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w
LV Write Access read/write
LV Creation host, time centos6, 2015-08-31 05:17:16 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
[root@centos6 ~]# resize2fs /dev/vg1/lv1 #擴展文件系統大小,擴展完成後,邏輯卷lv1的10G空間就可以正常使用
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv001; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg1/lv1 to 2621440 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 2621440 blocks long.
練習:縮減邏輯卷大小,將lv1從10G縮減到3G
注意:邏輯捲縮小後的空間不能小於它上面文件現佔有的空間,否則可能壞導致數據損壞,縮減邏輯卷的大致步驟是:
卸載文件系統--》使用e2fsck檢測邏輯卷--》使用resize2fs調整文件系統大小-》使用lvreduce縮減邏輯卷大小
[root@centos6 ~]# df -lh /dev/vg1/lv1 #驗證縮減前實際使用空間不超過3G
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 9.8G 16M 9.3G 1% /mnt/lv001
[root@centos6 ~]# umount /dev/vg1/lv1 #卸載邏輯卷
[root@centos6 ~]# e2fsck -f /dev/vg1/lv1 #強制檢測邏輯卷
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg1/lv1: 12/655360 files (0.0% non-contiguous), 77935/2621440 blocks
[root@centos6 ~]# resize2fs /dev/vg1/lv1 3G #調整文件系統大小
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg1/lv1 to 786432 (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 786432 blocks long.
[root@centos6 ~]# lvreduce -L 3G /dev/vg1/lv1 #縮減邏輯卷大小至3G
WARNING: Reducing active logical volume to 3.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y #回答y確認操作
Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 3.00 GiB (768 extents).
Logical volume lv1 successfully resized #提示已經調整成功
[root@centos6 ~]# lvdisplay /dev/vg1/lv1 #再度查看lv1詳細信息,確認大小已經縮減爲3G
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w
LV Write Access read/write
LV Creation host, time centos6, 2015-08-31 05:17:16 +0800
LV Status available
# open 0
LV Size 3.00 GiB
Current LE 768
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
練習:爲卷組vg1添加一個新的10G的PV
...此處省略創建物理卷sb3(大小爲10G)的過程。
[root@centos6 ~]# vgextend vg1 /dev/sdb3 #使用vgextend添加新的物理卷sdb3到卷組vg1
Physical volume "/dev/sdb3" successfully created
Volume group "vg1" successfully extended
[root@centos6 ~]# vgdisplay /dev/vg1 #查看vg1的詳細信息,卷組大小已經擴展到20G
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size 25.01 GiB
PE Size 4.00 MiB
Total PE 6402
Alloc PE / Size 768 / 3.00 GiB
Free PE / Size 5634 / 22.01 GiB
VG UUID QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6
相關命令如下:
dm: device manager:將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備文件路徑:/dve/dm-#
邏輯卷的文件路徑
/dev/mapper/卷組_邏輯卷 或 /dev/卷組/邏輯卷
pv管理工具:
pvs:簡要顯示系統上的PV的信息
pvdisplay 物理卷:查看指定pv的詳細信息
vg管理工具:
vgs 簡要顯示系統上的卷組信息
vgdisplay 卷組:查看指定卷組的詳細信息
lv管理工具:
lvs:簡要顯示邏輯卷的信息
lvdisplay 邏輯卷: 查看指定邏輯卷的詳細信息
lvcreate -L #[mMgGtT] -n NAME VolumeGroup 創建邏輯卷
lvremove /dev/VG_NAME/LV_NAME 刪除邏輯卷
擴展邏輯卷:
# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME
縮減邏輯卷:
# umount /dev/VG_NAME/LV_NAME
# e2fsck -f /dev/VG_NAME/LV_NAME
# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
# mount