共計 6740 個字符,預計需要花費 17 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 RHEL6.5 中 LVM 怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Linux 用戶在安裝操作系統時,會遇到的一個常見問題就是如何正確地評估各分區大小,以便劃分合適的硬盤空間。普通的磁盤分區管理方式在各分區劃分好后就無法改變其大小,而當一個邏輯分區存放不下某個文件時,這個文件因為受上層文件系統的限制,也不能跨越多個分區來存放,所以也不能同時放到別的磁盤上。或遇到某個分區空間快耗盡時,解決的方法通常是使用符號鏈接,或者新建目錄外掛分區以及使用調整分區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。其實在 Linux 下,利用 LVM,這些問題都可以迎刃而解,用戶在無需停機的情況下就可以方便地調整各個分區大小。
一、LVM 命令簡介
LVM(Logical Volume Manager) 是一個應用于 Linux 的內核的邏輯卷管理器, 是 Linux 環境下對磁盤進行分區管理的一種機制。
LVM 中需要知道的名詞:
1、PV(物理卷)可以是一個磁盤,一個分區。由 PE(物理盤區)組成,多個 PV 可以組成一個 VG(卷組).
2、VG(卷組)是多個物理卷組成的一個組,但是卷組不可以直接使用,需要在上面創建 LV(邏輯卷)才可以使用。VG 上可以創建多個 LV。
3、PE(物理盤區)就像我們之前學習的磁盤的 block 塊,默認是 4MB。
4、LV(邏輯卷) 是建立在卷組之上的一個可用空間。有物理邊界和邏輯邊界兩種邊界。
二、相關命令介紹
1、物理卷 PV
pvcreate 創建 pv 例:pvcreate /dev/sda1
pvs 查看 pv 信息 例:直接在命令行里輸入 pvs
pvdisplay 查看 pv 詳細信息 例:pvcreate /dev/sda1
pvmove 將 pv 數據移動到其他 pv 例:pvmove /dev/sda1 /dev/sda4
pvremove 將 pv 刪除 例:pvremove /dev/sda1
2、卷組 VG
如何創建、查看、刪除 vg
vgcreate 創建 vg 例:vgcreate myvg /dev/sda{m,n}
vgs 查看 vg 信息 例:直接在命令行里輸入 vgs
vgdisplay 查看 vg 詳細信息 例:vgdisplay myvg
vgremove 將 vg 刪除 例:vgremove myvg
如何擴展 vg
首先準備好一個 PV;
然后使用 vgextend 命令即可完成擴展;
格式:vgextend VG_NAME /PATH/TO/PV
vgextend testvg /dev/sdb2 擴展 myvg 卷組,把 /dev/sda2 加進去
如何縮減 vg
1)確定要移除的 PV;
2)將此 PV 上的數據轉移至其它 PV;
pvmove /path/ to /pv
3)從卷組中將此 PV 移除;
格式:vgreduce VG_NAME /PATH/TO/PV
vgreduce testvg /dev/sdb2 縮減 myvg 卷組,把 /dev/sda2 去掉
3、邏輯卷 LV
如何創建、查看、刪除 lv
lvcreate 創建 lv 例:lvcreate lv1 /dev/myvg
lvs 查看 lv 信息 例:直接在命令行里輸入 lvs
lvdisplay 查看 lv 詳細信息 例:vgdisplay lv1
lvremove 將 lv 移除 例:lvremove /dev/myvg/lv1
如何擴展 lv
確定需要擴展多大空間
確定當前邏輯卷所在的卷組是否有足夠的空閑空間;
擴展舉例:
1、物理邊界
lvextend -L [+]SIZE /path/to/lv
2、邏輯邊界
resize2fs /path/to/device
如何縮減 lv
確定縮減的大小,但前提是至少能容納原有的所有數據。
縮減:
1)卸載并強行檢測文件系統;
umount /path
e2fsck -f
2)邏輯邊界
resize2fs /path/to/device SIZE
3)物理邊界
lvreduce -L [-]SIZE /path/to/lv
4、快照卷
1) 生命周期為整個數據時長;在這段時長內,數據的增長量不能超出快照卷大小;
2) 快照卷應該是只讀的;
3) 跟原卷在同一卷組內;
lvcreate
-L 指定快照卷的大小
-s 創建快照卷
-p r 創建的快照卷為只讀訪問
格式:
lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv
三、lv 之示例
1、創建一個分區
[root@test11 ~]# fdisk -l // 查看分區的情況
[root@test11 ~]# 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@test11 ~]# partprobe /dev/sda // 是系統識別分區(代替重啟)
[root@test11 ~]# mkfs.ext4 /dev/sda5 // 格式化新添加的分區
2、PV 的創建
[root@test11 ~]# pvcreate /dev/sda5 // 創建 pv
Writing physical volume data to disk /dev/sda5
Physical volume /dev/sda5 successfully created
[root@test11 ~]# pvs // 查看當前 pv 的信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a– 1.87G 1.87G
3、VG 的創建
[root@test11 ~]# vgcreate vg0 /dev/sda5 //vg0 為當前 vg 的名
Volume group vg0 successfully created
[root@test11 ~]# vgs // 查看 vg 的信息
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz–n- 1.87G 1.87G
4、lv 的創建
[root@test11 ~]# lvcreate -L 500M -n lv01 vg0
Logical volume lv01 created
[root@test11 ~]# lvs // 查看 lv 的信息
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M
[root@test11 ~]# mkfs.ext4 /dev/vg0/lv01 // 格式化
5、lv 的增大
[root@test11 ~]# lvextend -L +300M /dev/vg0/lv01 //(原來 lv 大小 500M,拉伸分區到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[root@test11 ~]# resize2fs /dev/vg0/lv01 // 拉伸文件系統
[root@test11 ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-ao 800.00M // 大小變成了 800M
6、lv 的減小
# 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 的關閉
[root@test11 ~]# umount /mnt/lv01
[root@test11 ~]# lvremove /dev/vg0/lv01 // 刪除 lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume lv01 successfully removed
[root@test11 ~]# vgchange -a n vg0 // 使 vg0 不具有 active 標志
0 logical volume(s) in volume group vg0 now active
[root@test11 ~]# vgremove vg0 // 刪除 vg
Volume group vg0 successfully removed
[root@test11 ~]# pvremove /dev/sda5 // 刪除 pv
Labels on physical volume /dev/sda5 successfully wiped
五、擴展根分區和 SWAP
[root@zkdb1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 vg_zkdb1 lvm2 a– 557.46g 521.46g
[root@zkdb1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
root vg_zkdb1 -wi-ao—- 20.00g
swap vg_zkdb1 -wi-ao—- 16.00g
[root@zkdb1 ~]# lvcreate -L 30720M vg_zkdb1
Logical volume lvol0 created
[root@zkdb1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lvol0 vg_zkdb1 -wi-a—– 30.00g
root vg_zkdb1 -wi-ao—- 20.00g
swap vg_zkdb1 -wi-ao—- 16.00g
[root@zkdb1 ~]# lvextend -L +30G /dev/mapper/vg_zkdb1-root
Extending logical volume root to 50.00 GiB
Logical volume root successfully resized
[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-root
e2fsck 1.41.12 (17-May-2010)
/dev/mapper/vg_zkdb1-root is mounted.
e2fsck: Cannot continue, aborting.
[root@zkdb1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lvol0 vg_zkdb1 -wi-a—– 30.00g
root vg_zkdb1 -wi-ao—- 50.00g
swap vg_zkdb1 -wi-ao—- 16.00g
[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_zkdb1-root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4
Performing an on-line resize of /dev/mapper/vg_zkdb1-root to 13107200 (4k) blocks.
The filesystem on /dev/mapper/vg_zkdb1-root is now 13107200 blocks long.
擴展 SWAP
[root@zkdb1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lvol0 vg_zkdb1 -wi-a—– 30.00g
root vg_zkdb1 -wi-ao—- 50.00g
swap vg_zkdb1 -wi-ao—- 16.00g
[root@zkdb1 ~]# lvextend -L +16G /dev/mapper/vg_zkdb1-swap
Extending logical volume swap to 32.00 GiB
Logical volume swap successfully resized
[root@zkdb1 ~]# e2fsck -f /dev/mapper/vg_zkdb1-swap
e2fsck 1.41.12 (17-May-2010)
/dev/mapper/vg_zkdb1-swap is mounted.
e2fsck: Cannot continue, aborting.
[root@zkdb1 ~]# resize2fs /dev/mapper/vg_zkdb1-swap
resize2fs 1.41.12 (17-May-2010)
resize2fs: Bad magic number in super-block while trying to open /dev/mapper/vg_zkdb1-swap
Couldn t find valid filesystem superblock.
[root@zkdb1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lvol0 vg_zkdb1 -wi-a—– 30.00g
root vg_zkdb1 -wi-ao—- 50.00g
swap vg_zkdb1 -wi-ao—- 32.00g
附:根分區變只讀解決辦法
1 單用戶模式
輸入命令修復文件系統:fsck -C -y
修復完成后輸入命令重啟:reboot
2 重掛載
mount -o remount,rw 分區名即可變成讀寫
mount -o remount,rw /
如果提示文件系統類型
mount -t ext3 -o remount,rw /
以上是“RHEL6.5 中 LVM 怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!