linux初學者-磁盤拉伸縮減篇
linux初學者-磁盤拉伸縮減篇
在系統的使用過程中,往往會出現這樣的問題,由於剛開始無法估計需要的磁盤空間,導致後期磁盤空間不夠,使得數據沒地方存儲,又或者後期磁盤空間過大,造成資源的浪費。這種在使用之前無法估計磁盤大小的問題可以通過LVM來解決。
LVM時將一個或多個磁盤的分區在邏輯上集合,相當於一個大硬盤來使用,當磁盤空間不夠時,可以將其他磁盤的分區空間加入其中,這樣可以實現磁盤空間的動態管理。下文將對這種磁盤的拉伸和壓縮空間進行介紹。
LVM裏分為PV、VG、LV。在LV的空間用滿了之後,就需要重新在VG中加入空間,當VG空間用完後,需要從PV中獲取,當PV空間用完之後,就需要重新加入磁盤分區了,這樣就可以實現在LV空間不足時的空間供給。PV、VG、LV的查看可以通過命令"pvs"、"vgs"和"lvs"來實現。
1、建立
建立時需要先新建一個分區,並將分區的功能標識設為LVM,即先輸入"t",選定分區後輸入"8e"。
輸入"pvcreate 磁盤分區"創建一個PV,如下圖所示。然後輸入"vgcreate vg0 磁盤分區"來建立VG,"vg0"為VG的名稱,可以自行設置。最後輸入"lvcreate -L 200M -n lv0 vg0"來分配磁盤空間,其中"200M"為分配的磁盤大小,"lv0"為LV的名稱,可以自行設置。
完成後會出現一個"/dev/vg0/lv0"磁盤分區,輸入"mkfs.xfs /dev/vg0/lv0 -f"格式化這個分區,然後就可以進行掛載了。
2、添加空間
如下圖所示,當分得的200M空間用完後,需要給lv0裏面添加空間,則可以輸入命令"lvextend -L 400M /dev/vg0/lv0"來添加400M的空間。但此時空間不會添加進去,需要對新加入的空間進行格式化,但不能使用"mkfs.xfs"來格式化,需要輸入"xfs_growfs /dev/vg0/lv0"來格式化,完成後空間即可添加進去。
當VG和PV的空間都使用完後,需要重新從新的磁盤分區中添加,如下圖所示,在PV中再添加一個磁盤分區,在分區建立好後,輸入"pvcreate 新的磁盤分區"將磁盤分區添加到PV中,再輸入"vgextend vg0 新的磁盤分區"將新加入的空間添加到vg中。
3、磁盤縮小
xfs的文件模式不能進行磁盤縮小,所以如果有需要用到磁盤縮小,需要將磁盤格式化成"ext4"文件模式。
如下圖所示,在進行磁盤縮小之前,取消掛載後將文件格式格式化為"ext4"。
在進行磁盤縮小時,必須先縮小設備,再縮小lv0,縮小空間如下圖步驟所示,先對設備取消掛載,再輸入"e2fsck -f /dev/vg0/lv0"對設備中的文件進行掃描,使得數據安全,這樣在縮減過度時會警告。完成後輸入"resize2fs /dev/vg0/lv0 200M"即將設備縮減至200M,這是對設備進行縮減。完成後重新掛載,再輸入"lvreduce -L 200M /dev/vg0/lv0"對lv0進行縮減。
"ext4"文件模式下的空間添加和xfs相同,但是在最後一步格式化添加空間時需要輸入"resize2fs /dev/vg0/lv0",而不是輸入"xfs_growfs /dev/vg0/lv0"。
4、PV中磁盤的移除
有多個磁盤並且空間還充足時,如果需要移除其中的一個磁盤,則需要進行以下操作:
如果移除的磁盤中有數據,就需要使用"pvmove 移除磁盤 其他磁盤"來將移除磁盤的數據移入其他磁盤當中。
完成數據移動或者移除磁盤沒有數據,輸入"vgreduce vg0 移除磁盤",將移除磁盤的空間從vg中取出來。最後輸入"pvremove 移除磁盤"即可將指定磁盤移除。
5、數據備份
與快照相似,LVM中也提供快照備份的功能,例如下圖,將目錄掛載在/mnt下,並在其中建立10個文件,取消掛載後輸入命令"lvcreate -L xxxM -n lv0-backup -s /dev/vg0/lv0"來對磁盤進行快照備份,xxxM為快照數據需要改變的大小,可以自行設置。完成後重新掛載到/mnt下。
快照備份完成後,輸入"rm -fr /mnt/*"刪除這10個文件,此時這10個文件並沒有被永久刪除,取消掛載後輸入"lvremove /dev/vg0/lv0-backup"刪除這個快照備份,再輸入"lvcreate -L xxxM -n lv0-backup -s /dev/vg0/lv0"重新進行快照備份,完成後掛載到/mnt下,刪除的10個文件就會重新出現。
6、LVM的移除
在不需要使用LVM時,就可以對LVM進行移除了。移除的步驟如下圖所示:
首先取消掛載,輸入"lvremove /dev/vg0/lv0-backup"刪除快照,如果沒有可忽略,輸入"lvremove /dev/vg0/lv0"移除LV,輸入"vgremove vg0"移除VG,輸入"pvremove 磁盤分區"移除PV,至此LVM的移除就完成了。
完成後也可以輸入"pvs"、"vgs"和"lvs"查看是否移除。
以上就是LVM在學習工作中的一些簡要介紹與應用。
linux初學者-磁盤拉伸縮減篇