Linux用戶安裝Linux操作系統時遇到的一個最常見的難以決定的問題就是如何正確地給評估各分區大小,以分配合適的硬盤空間。隨着Linux的邏輯盤卷管理功能的出現,這些問題都迎刃而解,
lvm是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是建立在硬盤和分區之上的一個邏輯層,來提高磁盤分區管理的靈活性。
LVM基本術語:
1. 物理存儲介質:這裏指系統的存儲設備:硬盤,如:/dev/hda、/dev/sda等等,是存儲系統最低層的存儲單元。
2. 物理卷physical volume(PV)
物理卷就是指硬盤分區或從邏輯上與磁盤分區具有同樣功能的設備(如RAID),是LVM的基本存儲邏輯塊
3. 卷組Volume Group(VG)
LVM卷組由一個或多個物理卷組成,但是更確切的說,它包含由這些物理卷提供的許多PE。
4. 邏輯卷logical volume(LV)
這裏是我們存儲信息的地方,在邏輯卷之上可以建立文件系統(比如/home或者/usr等)。
5. PE (physical extent)
每一個物理卷被劃分爲稱爲PE的基本單元,具有唯一編號的PE是可以被LVM尋址的最小單元。PE的大小是可配置的,默認爲4MB。
二,具體操作
1.創建一個分區
[root@stau11 ~]# fdisk -l //查看分區的情
[root@stau11 ~]# fdisk /dev/sda //進行分區
Command (m for help): n //n爲添加一個分區,p查看分區
First cylinder (2898-10443, default 2898): //按【Enter】鍵決定
Using default value 2898 //起始柱面選擇默認 值
Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G // 給2G的大小
Command (m for help): t //更改分區類型
Partition number (1-5): 5 //選着分區
Hex code (type L to list codes): l //分區類型列表
Hex code (type L to list codes):8e //將新添加的分區標註成lvm
Command (m for help): p //查看分區表
/dev/sda5 2756 2999 1959898+ 8e Linux LVM
Command (m for help): w //保存
[root@localhost ~]# partprobe /dev/sda //是系統識別分區(代替重啓)
[root@localhost ~]# mkfs.ext3 /dev/sda5 //格式化新添加的分區
2.PV的創建
[root@localhost ~]# pvcreate /dev/sda5 //創建pv
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[root@localhost ~]# pvs 或pvdisplay //查看當前pv的信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a-- 1.87G 1.87G
3.VG的創建
[root@localhost ~]# vgcreate vg0 /dev/sda5 //vg0爲當前vg的名
Volume group "vg0" successfully created
[root@localhost ~]# vgs 或vgdispaly //查看vg的信息
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz--n- 1.87G 1.87G
4.lvm的創建
#lvcreate -L 大小 -n 名字 隸屬哪一個巻組
#lvcreate -l PE 個數 -n 名字 隸屬哪一個巻組
[root@localhost ~]# lvcreate -L 500M -n lv01 vg0
Logical volume "lv01" created
[root@localhost ~]# lvs 或lvdispaly //查看lv的信息
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M
You have mail in /var/spool/mail/root
[root@localhost ~]# mkfs.ext3 /dev/vg0/lv01 //格式化
lvm的使用
# mkdir /mnt/lv01
# mount /dev/vg0/lv01 /mnt/lv01
# df -h
# touch /mnt/lv01/lv.file
#ls /mnt/lv01
三,lvm的增大
[root@localhost ~]# lvextend -L +300M /dev/vg0/lv01 //(原來lv大小500M ,拉伸分區到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv01 //拉伸文件系統
[root@localhost ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-ao 800.00M //大小變成了800M
四,lvm的減小
# umount /dev/vg0/lv01 //卸載邏輯卷/dev/vg0/lv01
# df -h //查看
# e2fsck -f /dev/vg0/lv01 //磁盤校驗
# resize2fs /dev/vg0/lv01 500M //回縮文件系統到 500M
# lvreduce -L 500M /dev/vg0/lv01 //回縮分區到 500M
WARNING: Reducing active logical volume to 500.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M //此時已變成500M大小
# mount /dev/vg0/lv01 /mnt/lv01 //重新掛載分區
# df -h //查看
# ls /mnt/lv01 //查看文件
五,lvm的系統快照
原理:系統快照(snapshot)是lvm的另外一種重要的功能,快照就是將當時的數據記錄下來,就好像照相記錄一樣,以後數據有任何改動,原數據會被移動到快照區,沒有被改變的區域則由快照區與文件系統共享。
由於快照區和原本的LV共享很多PE,所以快照區與被快照的區域必須在同一個VG上
操作:
以上面創建的lv01爲例
1.掛載lvm
[root@localhost ~] # mount /dev/vg0/lv01 /mnt/lv01
[root@localhost ~]# cd /mnt/lv01
[root@localhost lv01]# touch {a,b,c}{a,b,c}
[root@localhost lv01]# ls
aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable
2.爲lvm創建快照
[root@localhost lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01
Logical volume "lv-backup" created
3.掛載快照
[root@localhost lv01]# mkdir /mnt/lv-backup
[root@localhost mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/
4.備份快照
[root@localhost tmp]# dump -0u -f /tmp/lv-backup.dump /mnt/lv-backup/ //備份
DUMP: Date of this level 0 dump: Sun Nov 11 14:53:31 2012
DUMP: Dumping /dev/mapper/vg0-lv--backup (/mnt/lv-backup) to /tmp/lv-backup.dump
5.刪除快照
[root@localhost tmp]# umount /mnt/lv-backup/
[root@localhost tmp]# lvremove /dev/vg0/lv-backup
Do you really want to remove active logical volume lv-backup? [y/n]: y
Logical volume "lv-backup" successfully removed
6.清空/dev/vg0/lv01下得內容
[root@localhost tmp]# umount /mnt/lv01
[root@localhost tmp]# mkfs.ext3 /dev/vg0/lv01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
7.恢復數據
[root@localhost tmp]# mount /dev/vg0/lv01 /mnt/lv01
[root@localhost tmp]# cd /mnt/lv01
[root@localhost lv01]# ls
lost+found
[root@localhost lv01]# restore -rf /tmp/lv-backup.dump //恢復
restore: ./lost+found: File exists
[root@localhost lv01]# ls //由於之前都刪除了,所以這些都是改變的部分
aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable
六,lvm的關閉
[root@localhost ~]# umount /mnt/lv01
[root@localhost ~]# lvremove /dev/vg0/lv01 //刪除lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@localhost ~]# vgchange -a n vg0 //使vg0不具有active標誌
0 logical volume(s) in volume group "vg0" now active
[root@localhost ~]# vgremove vg0 //刪除vg
Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/sda5 //刪除pv
Labels on physical volume "/dev/sda5" successfully wiped