LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是一種磁盤管理工具,最主要的功能就是能夠隨時在線調整分區的大小,解決了安裝Linux系統時須要評估分區大小的煩惱。html
物理存儲介質(The physical media)
這裏指系統的存儲設備:硬盤,如:/dev/hda一、/dev/sda等等,是存儲系統最低層的存儲單元。
物理卷(physical volume)
物理卷就是指硬盤分區或從邏輯上與磁盤分區具備一樣功能的設備(如RAID),是LVM的基本存儲邏輯塊,但和基本的物理存儲介質(如分區、磁盤等)比較,卻包含有與LVM相關的管理參數。
卷組(Volume Group)
LVM卷組相似於非LVM系統中的物理硬盤,其由物理卷組成。能夠在卷組上建立一個或多個「LVM分區」(邏輯卷),LVM卷組由一個或多個物理卷組成。
邏輯卷(logical volume)
LVM的邏輯卷相似於非LVM系統中的硬盤分區,在邏輯卷之上能夠創建文件系統(好比/home或者/usr等)。
PE(physical extent)
每個物理卷被劃分爲稱爲PE(Physical Extents)的基本單元,具備惟一編號的PE是能夠被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
LE(logical extent)
邏輯卷也被劃分爲被稱爲LE(Logical Extents) 的可被尋址的基本單位。在同一個卷組中,LE的大小和PE是相同的,而且一一對應。linux
從linux內核2.6.9開始,device-mapper模塊就已經包含在內,因此你只需加載便可。
加載mapper模塊:centos
modprobe dm_modapp
查看是否已經加載:dom
lsmod | grep dm_modide
出現以下輸出,即表示加載成功:工具
dm_mod 63097 4 dm_mirror,dm_multipath,dm_raid45,dm_logui
若是你的內核高於2.6.9卻沒有此模塊,能夠使用yum install device-mapper命令安裝。
若是你的內核低於2.6.9,則須要編譯安裝device-mapper模塊,地址ftp://sources.redhat.com/pub/dm/。spa
直接yum安裝:code
yum install lvm2
這個階段有幾個可用命令:
pvcreate :將實體partition建立成爲PV;
pvscan :搜索目前系統裏面任何具備PV的磁盤或分區;
pvdisplay :顯示出目前系統上面的PV狀態;
pvremove :將 PV 屬性移除,讓該 partition 不具備 PV 屬性。
一、在磁盤上建立PV
pvcreate /dev/hdb
二、在分區上建立PV
在分區上建立PV,首先得使用fdisk設置分區類型爲8e。而後執行如下命令:
pvcreate /dev/hdb1
這一階段有以下命令:
vgcreate :建立vg命令;
vgscan :搜索系統上面是否有 VG 存在?
vgdisplay :顯示目前系統上面的 VG 狀態;
vgextend :在 VG 內添加額外的 PV ;
vgreduce :在 VG 內移除 PV;
vgchange :配置 VG 是否啓動 (active);
vgremove :刪除一個 VG
把物理卷/dev/hda1和/dev/hdb1添加進my_volume_group卷組:
vgcreate myvg /dev/hda1 /dev/hdb1
機器有多塊硬盤,想經過LVM來管理這些磁盤,因而按照LVM的手冊開始建立LVM,可是在建立物理卷的時候就出錯了:
1
2
|
# pvcreate /dev/sdb
Device /dev/sdb not found (or ignored by filtering).
|
經過相關提示,查看/etc/lvm/lvm.conf,並無filter任何磁盤。
最後參考:http://idolinux.blogspot.com/2008/10/perc-raid-and-efi-gpt-wierdness.html 獲得答案
先執行:
1
|
# dd if=/dev/urandom of=/dev/sdb bs=512 count=64
|
後再次執行
1
|
# pvcreate /dev/sdb
|
便可。
LV階段幾個命令:
lvcreate :建立 LV
lvscan :查詢系統上面的 LV ;
lvdisplay :顯示系統上面的 LV 狀態
lvextend :在 LV 裏面添加容量!
lvreduce :在 LV 裏面減小容量;
lvremove :刪除一個 LV !
lvresize :對 LV 進行容量大小的調整!
[root@www ~]# lvcreate [-L N[mgt]] [-n LV名稱] VG名稱
[root@www ~]# lvcreate [-l N] [-n LV名稱] VG名稱
選項與參數:
-L :後面接容量,容量的單位能夠是 M,G,T 等,要注意的是,最小單位爲 PE,
所以這個數量必需要是 PE 的倍數,若不相符,系統會自行計算最相近的容量。
-l :後面能夠接 PE 的『個數』,而不是容量。若要這麼作,得要自行計算 PE 數。
-n :後面接的就是 LV 的名稱。
更多的說明應該能夠自行查閱! man lvcreate
在myvg建立1500M,名稱爲mylv的LV:
lvcreate -L 1500M -n mylv myvg
在myvg建立一個名稱爲mylv,PE個數爲100的LV:
lvcreate -l 100 -n mylv myvg
咱們格式化成爲ext3,並掛載到/mylv目錄
mkdir /mylv
mkfs -t ext3 /dev/my_volume_group/mylv
mount /dev/my_volume_group/mylv /mylv
經過df -h檢查發現,/dev/my_volume_group/mylv已經成功掛載到/mylv目錄。
中止vg:
vgchange -a n my_volume_group
刪除vg:
vgremove my_volume_group
vgextend my_volume_group /dev/hdc1
使用pvdisplay命令確保pv不被lv使用:
# pvdisplay /dev/hda1
--- Physical volume ---
PV Name /dev/hda1
VG Name myvg
PV Size 1.95 GB / NOT usable 4 MB [LVM: 122 KB]
PV# 1
PV Status available
Allocatable yes (but full)
Cur LV 1
PE Size (KByte) 4096
Total PE 499
Free PE 0
Allocated PE 499
PV UUID Sd44tK-9IRw-SrMC-MOkn-76iP-iftz-OVSen7
若是pv已經被使用,須要使用pvmove命令把pv的數據遷移到另外空閒的pv。
而後使用vgreduce命令刪除pv:
vgreduce my_volume_group /dev/hda1
# umount /dev/myvg/homevol
# lvremove /dev/myvg/homevol
lvremove -- do you really want to remove "/dev/myvg/homevol"? [y/n]: y
lvremove -- doing automatic backup of volume group "myvg"
lvremove -- logical volume "/dev/myvg/homevol" successfully removed
擴展lv容量到12G:
# lvextend -L12G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 12 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
增長LV容量1G:
# lvextend -L+1G /dev/myvg/homevol
lvextend -- extending logical volume "/dev/myvg/homevol" to 13 GB
lvextend -- doing automatic backup of volume group "myvg"
lvextend -- logical volume "/dev/myvg/homevol" successfully extended
下一步還須要修改文件系統的大小:
對於ext2/ext3格式的文件系統:
# umount /dev/myvg/homevol
# resize2fs /dev/myvg/homevol
# mount /dev/myvg/homevol /home
對於reiserfs格式的文件系統:
在線擴展:
# resize_reiserfs -f /dev/myvg/homevol
離線擴展:
# umount /dev/myvg/homevol
# resize_reiserfs /dev/myvg/homevol
# mount -treiserfs /dev/myvg/homevol /home
對於ext2/ext3格式的文件系統:
umount /mylv
e2fsck -f /dev/my_volume_group/mylv
resize2fs /dev/my_volume_group/mylv 800M
lvreduce -L -200M /dev/my_volume_group/mylv
mount /dev/my_volume_group/mylv /mylv
800M爲減少容量後最終的大小。
對於reiserfs格式的文件系統:
# umount /home
# resize_reiserfs -s-1G /dev/myvg/homevol
# lvreduce -L-1G /dev/myvg/homevo
# mount -treiserfs /dev/myvg/homevol /home
開始安裝xfs
—————————————————————————————
[root@ ~]$ yum install kmod-xfs xfsprogs
[root@ ~]$ modprobe xfs //載入xfs文件系統模塊
[root@ ~]$ lsmod |grep xfs //查看是否載入了xfs模塊
用xfs格式化並掛載
—————————————————————————————
[root@ ~]$ mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data/
添加至fstab 讓系統啓動自動掛載
—————————————————————————————————————-
[root@ ~]$ vi /etc/fstab //打開fstab UUID=c3749d2d-08b5-45a3-9aa4-312b6161d471 /data xfs defaults 1 2 //添加掛載信息指定文件系統xfs (uuid 經過blkid /dev/sdb1 命令獲取)