一. 何為LVM?
Logical Volume Manager的縮寫,它可以把多個分區、硬盤甚至RAID組合成一個存儲設備來使用,并可以擴展或縮減空間。LVM有三層組成組成:底層的PV,中間的VG,上層的LV,如圖所示
PV: physical volume,指的是底層的物理卷:硬盤,分區或者RAID;
VG:volume group,指的是PV的組合;
PE:physical extend,在VG層上定義的物理塊區;
LV: logical volume,邏輯上劃分出來的分區,如果VG留有剩余空間,LV甚至可以擴展,若LV有剩余空間,可以對它進行縮減操作(有風險);
其實做出LV還是不能投入使用,LV只相當于一般的分區,若想使用它,還得對他進行格式化和掛載操作。
二. 有哪些常用命令?
前提準備
在開始我們的實驗之前,我們得準備好兩個分區,注意分區類型一定得是8e(linux LVM)類型的,如下是我準備好的分區:(注意分區類型,我已經設置為8e;關于如何分區請使用fdisk命令。)
/dev/sda7 77611008 98582527 10485760 8e Linux LVM /dev/sda8 98584576 119556095 10485760 8e Linux LVM
系統上的PV的信息顯示:
pvs:顯示所有pv的簡要信息;
pvdisplay:顯示所有pv的詳細信息;
PV的創建命令:
pvcreate:
[root@localhost ~]# pvcreate /dev/sda7 /dev/sda8 Physical volume "/dev/sda7" successfully created Physical volume "/dev/sda8" successfully created
注意:兩個分區直接用空格隔開,當然你也可以使用命令行展開功能:/dev/sda{7,8}
創建VG:
[root@localhost ~]# vgcreate -s 16M TEST_VG /dev/sda{7,8} Volume group "TEST_VG" successfully created
創建LV:
[root@localhost ~]# lvcreate -L 5G -n TEST_LV TEST_VG Logical volume "TEST_LV" created.
創建文件系統ext4:
參數是LV的全路徑,如果不知道,可以通過 fdisk -l | grep "LV_NAME" 命令查看;
在此LV_NAME指的是TEST_LV
[root@localhost ~]# mke2fs -t ext4 /dev/mapper/TEST_VG-TEST_LV mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 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 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
掛載至某個目錄:
[root@localhost ~]# mount /dev/mapper/TEST_VG-TEST_LV /users/
為了對LVM的擴展、縮減功能及快照功能進行測試,我在掛載目錄/users目錄下創建了archlinux目錄,并把/etc/pam.d/目錄復制至archlinux中,便于以后進行驗證:
[root@localhost ~]# cp -r /etc/pam.d/ /users/archlinux/ [root@localhost ~]# ls -al /users/archlinux/ total 24 drwx------. 3 archlinux archlinux 4096 Dec 5 15:09 . drwxr-xr-x. 4 root root 4096 Dec 5 15:08 .. -rw-r--r--. 1 archlinux archlinux 18 Mar 5 2015 .bash_logout -rw-r--r--. 1 archlinux archlinux 193 Mar 5 2015 .bash_profile -rw-r--r--. 1 archlinux archlinux 231 Mar 5 2015 .bashrc drwxr-xr-x. 2 root root 4096 Dec 5 15:09 pam.d
LVM的擴展:
[root@localhost ~]# lvextend -L 7G /dev/mapper/TEST_VG-TEST_LV Size of logical volume TEST_VG/TEST_LV changed from 5.00 GiB (320 extents) to 7.00 GiB (448 exte nts). Logical volume TEST_LV successfully resized
因為在LV之上還有一層文件系統,所以擴展LV之后,還應擴展文件系統,擴展文件系統要用到resize2fs命令:
[root@localhost ~]# resize2fs /dev/mapper/TEST_VG-TEST_LV <--resize2fs命令 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/mapper/TEST_VG-TEST_LV is mounted on /users; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/mapper/TEST_VG-TEST_LV is now 1835008 blocks long. [root@localhost ~]# df -lh <--檢查是否擴展成功 Filesystem Size Used Avail Use% Mounted on /dev/sda3 4.8G 43M 4.5G 1% / devtmpfs 485M 0 485M 0% /dev tmpfs 494M 0 494M 0% /dev/shm tmpfs 494M 6.8M 487M 2% /run tmpfs 494M 0 494M 0% /sys/fs/cgroup /dev/mapper/centos-usr 9.8G 921M 8.4G 10% /usr /dev/sda5 4.8G 20M 4.6G 1% /home /dev/sda1 4.8G 116M 4.5G 3% /boot /dev/mapper/centos-var 9.8G 139M 9.1G 2% /var /dev/mapper/TEST_VG-TEST_LV 6.8G 23M 6.4G 1% /users <--6.8G,在誤差允許范圍內
縮減LV:
1. 應先umount掛載的LV裝置;
2. 使用e2fsck對LV進行校驗;
3. 使用resize2fs縮減文件系統;
4. 使用lvreduce縮減LV;
[root@localhost ~]# umount /dev/mapper/TEST_VG-TEST_LV <--umount [root@localhost ~]# ls -al /users/archlinux/ <--檢查,存在于TEST_LV的archlinux已不存在 ls: cannot access /users/archlinux/: No such file or directory [root@localhost ~]# e2fsck /dev/mapper/TEST_VG-TEST_LV <--校驗文件系統 e2fsck 1.42.9 (28-Dec-2013) /dev/mapper/TEST_VG-TEST_LV: clean, 49/458752 files, 67359/1835008 blocks [root@localhost ~]# e2fsck -f /dev/mapper/TEST_VG-TEST_LV <--應使用-f選項校驗文件系統 e2fsck 1.42.9 (28-Dec-2013) 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/mapper/TEST_VG-TEST_LV: 49/458752 files (0.0% non-contiguous), 67359/1835008 blocks [root@localhost ~]# resize2fs /dev/mapper/TEST_VG-TEST_LV 3G <--resize2fs,調文件系統小至3G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/mapper/TEST_VG-TEST_LV to 786432 (4k) blocks. The filesystem on /dev/mapper/TEST_VG-TEST_LV is now 786432 blocks long. [root@localhost ~]# lvreduce -L 3G /dev/mapper/TEST_VG-TEST_LV <--減小LV至3G WARNING: Reducing active logical volume to 3.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce TEST_LV? [y/n]: y Size of logical volume TEST_VG/TEST_LV changed from 7.00 GiB (448 extents) to 3.00 GiB (192 exte nts). Logical volume TEST_LV successfully resized [root@localhost ~]# mount /dev/mapper/TEST_VG-TEST_LV /users/ <--重新掛載 [root@localhost ~]# ls -al /users/archlinux/ <--查看其中文件 total 24 drwx------. 3 archlinux archlinux 4096 Dec 5 15:09 . drwxr-xr-x. 4 root root 4096 Dec 5 15:08 .. -rw-r--r--. 1 archlinux archlinux 18 Mar 5 2015 .bash_logout -rw-r--r--. 1 archlinux archlinux 193 Mar 5 2015 .bash_profile -rw-r--r--. 1 archlinux archlinux 231 Mar 5 2015 .bashrc drwxr-xr-x. 2 root root 4096 Dec 5 15:09 pam.d [root@localhost ~]# df -lh <--查看空間是否正確 Filesystem Size Used Avail Use% Mounted on /dev/sda3 4.8G 43M 4.5G 1% / devtmpfs 485M 0 485M 0% /dev tmpfs 494M 0 494M 0% /dev/shm tmpfs 494M 6.8M 487M 2% /run tmpfs 494M 0 494M 0% /sys/fs/cgroup /dev/mapper/centos-usr 9.8G 921M 8.4G 10% /usr /dev/sda5 4.8G 20M 4.6G 1% /home /dev/sda1 4.8G 116M 4.5G 3% /boot /dev/mapper/centos-var 9.8G 139M 9.1G 2% /var /dev/mapper/TEST_VG-TEST_LV 2.9G 16M 2.7G 1% /users
使用快照功能:
創建LV的快照同樣須使用lvcreate命令,只是需要加上-s選項指定要創建快照(snapshot),并使用-L選項指定快照的大小,使用-n指定快照的名字;最好使用-p選項將其設置為只讀;
如下:
[root@localhost ~]# lvcreate -L 3G -n TEST_SLV -s /dev/mapper/TEST_VG-TEST_LV <--創建快照 Logical volume "TEST_SLV" created. [root@localhost ~]# lvchange -p r /dev/mapper/TEST_VG-TEST_SLV <--忘了設置只讀屬性,使用lvchange修改 Logical volume "TEST_SLV" changed. [root@localhost ~]# mount /dev/mapper/TEST_VG-TEST_SLV /users/backup/ <--掛載驗證,提示只讀 mount: /dev/mapper/TEST_VG-TEST_SLV is write-protected, mounting read-only [root@localhost ~]# ls -al /users/backup/archlinux/ <--與TEST_LV內容相同 total 24 drwx------. 3 archlinux archlinux 4096 Dec 5 15:09 . drwxr-xr-x. 4 root root 4096 Dec 5 15:08 .. -rw-r--r--. 1 archlinux archlinux 18 Mar 5 2015 .bash_logout -rw-r--r--. 1 archlinux archlinux 193 Mar 5 2015 .bash_profile -rw-r--r--. 1 archlinux archlinux 231 Mar 5 2015 .bashrc drwxr-xr-x. 2 root root 4096 Dec 5 15:09 pam.d [root@localhost ~]# cp /etc/fstab /users/archlinux/fstab.bak <--復制fstab至TEST_LV,為fstab.bak [root@localhost ~]# ls -al /users/backup/archlinux/ <--快照TEST_SLV沒有fstab.bak total 24 drwx------. 3 archlinux archlinux 4096 Dec 5 15:09 . drwxr-xr-x. 4 root root 4096 Dec 5 15:08 .. -rw-r--r--. 1 archlinux archlinux 18 Mar 5 2015 .bash_logout -rw-r--r--. 1 archlinux archlinux 193 Mar 5 2015 .bash_profile -rw-r--r--. 1 archlinux archlinux 231 Mar 5 2015 .bashrc drwxr-xr-x. 2 root root 4096 Dec 5 15:09 pam.d [root@localhost ~]# ls -al /users/archlinux/ <--TEST_LV掛載的archlinux中已存在fatab.bak total 28 drwx------. 3 archlinux archlinux 4096 Dec 5 15:52 . drwxr-xr-x. 5 root root 4096 Dec 5 15:49 .. -rw-r--r--. 1 archlinux archlinux 18 Mar 5 2015 .bash_logout -rw-r--r--. 1 archlinux archlinux 193 Mar 5 2015 .bash_profile -rw-r--r--. 1 archlinux archlinux 231 Mar 5 2015 .bashrc -rw-r--r--. 1 root root 841 Dec 5 15:52 fstab.bak drwxr-xr-x. 2 root root 4096 Dec 5 15:09 pam.d
三. 接下來我們看看如何刪除快照,LV,VG,PV;
卸載快照掛載的分區:
[root@localhost ~]# umount /dev/mapper/TEST_VG-TEST_SLV
移除LV的快照:
[root@localhost ~]# lvremove /dev/mapper/TEST_VG-TEST_SLV Do you really want to remove active logical volume TEST_SLV? [y/n]: Y Logical volume "TEST_SLV" successfully removed
移除LV(在移除之前先執行卸載umount):
[root@localhost ~]# umount /dev/mapper/TEST_VG-TEST_LV [root@localhost ~]# lvremove /dev/mapper/TEST_VG-TEST_LV Do you really want to remove active logical volume TEST_LV? [y/n]: y Logical volume "TEST_LV" successfully removed
移除VG:
[root@localhost ~]# vgremove TEST_VG Volume group "TEST_VG" successfully removed
注意:直接輸入VG的名稱即可,如果想不起來可以使用vgs查看。
刪除PV:
[root@localhost ~]# pvremove /dev/sda7 /dev/sda8 Labels on physical volume "/dev/sda7" successfully wiped Labels on physical volume "/dev/sda8" successfully wiped
注意:移除PV的參數是底層PV的名稱,如果想不起來請使用pvs查看。
接下來就是刪除分區了,這個比較簡單請自行查閱相關資料吧。
本文中有很多命令使用了OPTION,沒有細說,有不明白的就請自行man吧^-^。
原創文章,作者:Jacen,如若轉載,請注明出處:http://www.www58058.com/9691