Redhat 7.6 Linux磁盤管理之LVM邏輯卷使用,指定目錄擴展LVM邏輯卷

1.準備環境

1.準備Linux操作系統:Redhat 7.6

2.準備VMware虛擬機軟件

2.LVM介紹

Linux的動態磁盤管理LVM邏輯卷的基本概念以及LVM的工作原理,包括LVM中最重要的四個基本點(PE、PV、VG以及LV),以下內容我會詳細的講解LVM邏輯卷的創建、使用以及刪除。

3.創建LVM邏輯卷

3.1將物理硬盤格式化成PV(物理卷)

使用 pvcreate 命令將準備好的物理硬盤(虛擬機添加硬盤文件),通過 fdisk -l 可以查看各個硬盤信息。

[root@localhost /]# fdisk -l

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000e76c9

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448    37748735    18566144   8e  Linux LVM
/dev/sda3        37748736    41943039     2097152   82  Linux swap / Solaris

Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/rhel-root: 19.0 GB, 19008585728 bytes, 37126144 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

根據上圖代碼中可以看到 /dev/sdb   /dev/sdc 兩個硬盤,我們需要將這兩個硬盤分配到一個PV中。這裏我們可以使用pvcreate命令。

[root@localhost /]# pvcreate /dev/sdb /dev/sdc
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.

如上圖代碼PV創建成功,我們可以使用pvdisplay命令查看pv詳情信息,還可以使用pvs命令查看pv的信息。如下:

[root@localhost /]# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <17.71 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4532
  Free PE               0
  Allocated PE          4532
  PV UUID               bPx9BI-xIGd-umpK-N1Zp-I5Af-GJE2-1C133I
   
  "/dev/sdb" is a new physical volume of "50.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               50.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               uoA1pR-w3wv-Tz7Q-WvRW-5ILJ-EUOd-PjjAre
   
  "/dev/sdc" is a new physical volume of "50.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name               
  PV Size               50.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               7ZNr7h-yQ4X-63lW-sKED-HYXJ-pzeO-VeGkOf
   
[root@localhost /]# pvs
  PV         VG   Fmt  Attr PSize  PFree 
  /dev/sda2  rhel lvm2 a--  17.70g     0 
  /dev/sdb        lvm2 ---  50.00g 50.00g
  /dev/sdc        lvm2 ---  50.00g 50.00g

通過這兩個命令我們可以看到已經創建好的PV的信息,兩個PV都是50G,目前還沒有使用,PFree都是50G。

3.2創建卷組(VG)

在創建完PV以後,這時候我們需要創建一個VG,然後將我們的PV都加入到這個卷組當中,在創建卷組時要給該卷組起一個名字。可以使用 vgcreate 命令創建。如下:

[root@localhost /]# vgcreate vgdata /dev/sdb /dev/sdc 
  Volume group "vgdata" successfully created

創建好VG以後,可以使用 vgdisplay 或者 vgs 命來來查看VG的信息。如下:

[root@localhost /]# vgdisplay
  --- Volume group ---
  VG Name               vgdata
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               99.99 GiB
  PE Size               4.00 MiB
  Total PE              25598
  Alloc PE / Size       0 / 0   
  Free  PE / Size       25598 / 99.99 GiB
  VG UUID               oW3rfw-aY56-hBDy-edEN-mMbm-kxg4-Ez05qO
   
  --- Volume group ---
  VG Name               rhel
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               17.70 GiB
  PE Size               4.00 MiB
  Total PE              4532
  Alloc PE / Size       4532 / 17.70 GiB
  Free  PE / Size       0 / 0   
  VG UUID               w8UFmO-yoym-4uqV-sT2D-9fdo-Kca8-m8LKzX
   
[root@localhost /]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  rhel     1   1   0 wz--n- 17.70g     0 
  vgdata   2   0   0 wz--n- 99.99g 99.99g

通過查看vg信息可以看到vgdata下VSize和VFree爲99.99G。

3.3基於卷組(VG)創建邏輯卷(LV)

根據創建好的PV、VG,我們需要在上層創建邏輯卷LV。我們可以通過 lvcreate 創建邏輯卷。如下:

[root@localhost /]# lvcreate -n lvdata -L 99.8g vgdata
  Rounding up size to full physical extent 99.80 GiB
WARNING: ext4 signature detected on /dev/vgdata/lvdata at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vgdata/lvdata.
  Logical volume "lvdata" created.

通過 lvcreate 命令基於VG完成邏輯卷創建,lv名字爲lvdata,大小爲99.8G,這裏我們可以通過使用 lvdisplay 或者 lvs 命令來查看創建好的邏輯卷的信息。如下:

[root@localhost /]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vgdata/lvdata
  LV Name                lvdata
  VG Name                vgdata
  LV UUID                usy4Q6-95Se-hM6E-dJNs-xcn7-wfxs-chP9bu
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-06-04 00:56:29 -0700
  LV Status              available
  # open                 1
  LV Size                99.80 GiB
  Current LE             25549
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/rhel/root
  LV Name                root
  VG Name                rhel
  LV UUID                XetJsE-t7q3-DGl2-BF1E-bTgi-H65q-AZv9dO
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-06-03 20:22:55 -0700
  LV Status              available
  # open                 1
  LV Size                17.70 GiB
  Current LE             4532
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
[root@localhost /]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   rhel   -wi-ao---- 17.70g                                                    
  lvdata vgdata -wi-ao---- 99.80g 

以上我們邏輯卷(LV)也創建完成了,這個時候我們可以通過pvs、vgs、lvs命令查看相關創建成功信息。

[root@localhost /]# pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sda2  rhel   lvm2 a--   17.70g      0 
  /dev/sdb   vgdata lvm2 a--  <50.00g      0 
  /dev/sdc   vgdata lvm2 a--  <50.00g 196.00m
[root@localhost /]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree  
  rhel     1   1   0 wz--n- 17.70g      0 
  vgdata   2   1   0 wz--n- 99.99g 196.00m
[root@localhost /]# lvs
  LV     VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   rhel   -wi-ao---- 17.70g                                                    
  lvdata vgdata -wi-ao---- 99.80g

當每創建完一個LV時,VG與PV的信息都是時時在變化,並且我們創建LV的大小是根據當前VG的大小來決定,不能超過當前VG的剩餘大小。

以上我們的LV邏輯卷全部創建完成,下面我們可以通過命令查看邏輯卷。

[root@localhost /]# ls /dev/vgdata/lvdata 
/dev/vgdata/lvdata

4.格式化並使用邏輯卷

創建好PV、VG以及LV,這時候我們如果要使用邏輯卷,就必須將其格式化成我們需要用的文件系統,並將其掛載起來,然後就可以像使用分區一樣去使用邏輯卷。

[root@localhost /]# mkfs.ext4 /dev/vgdata/lvdata 
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
6545408 inodes, 26162176 blocks
1308108 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
799 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, 1605632, 2654208, 
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

格式化邏輯卷後,我們就可以使用 mount 命令將其進行掛載,我們將其掛載到 /data 目錄下。

[root@localhost /]# mount /dev/vgdata/lvdata /data
[root@localhost /]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=919428k,nr_inodes=229857,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/rhel-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=22980)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186324k,mode=700)
/dev/mapper/vgdata-lvdata on /data type ext4 (rw,relatime,seclabel,data=ordered)
[root@localhost /]# cd /data/
[root@localhost data]# ls
lost+found
[root@localhost data]# touch vgdata.txt lvdata.txt
[root@localhost data]# ls
lost+found  lvdata.txt  vgdata.txt

將邏輯卷永久掛載到/data目錄下。我們可以通過修改/etc/fstab實現。如下:


[root@localhost data]# vi /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed Jun  3 20:22:56 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root   /                       xfs     defaults        0 0
UUID=6d53884a-62bc-49ca-a40a-a78e3fcd0da2 /boot                   xfs     defaults        0 0
UUID=05b68163-5d7c-4b41-b5ad-6c3f89f15643 swap                    swap    defaults        0 0
/dev/mapper/vgdata-lvdata   /data                       ext4     defaults        0 0 #在最後添加一行。

當系統重啓之後就會自動掛載,到這裏我們邏輯卷創建和掛載就已經全部完成了。

5.刪除邏輯卷

我們在創建好邏輯卷後可以通過創建文件系統,掛載邏輯捲來使用它,如果說我們不想用了也可以將其刪除掉。

【注意:】對於創建物理卷、創建卷組以及創建邏輯卷我們是有嚴格順序的,同樣,對於刪除邏輯卷、刪除卷組以及刪除物理卷也是有嚴格順序要求的

1.首先將正在使用的邏輯卷卸載掉  通過 umount 命令

2.將邏輯卷先刪除  通過 lvremove 命令

3.刪除卷組  通過 vgremove 命令

4.最後再來刪除我們的物理卷  通過 pvremove 命令

[root@localhost /]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root       18G  1.5G   17G   9% /
devtmpfs                   898M     0  898M   0% /dev
tmpfs                      910M     0  910M   0% /dev/shm
tmpfs                      910M  9.6M  901M   2% /run
tmpfs                      910M     0  910M   0% /sys/fs/cgroup
/dev/sda1                  297M  129M  169M  44% /boot
tmpfs                      182M     0  182M   0% /run/user/0
/dev/mapper/vgdata-lvdata   99G   61M   94G   1% /data
[root@localhost /]# umount /data/
[root@localhost /]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root   18G  1.5G   17G   9% /
devtmpfs               898M     0  898M   0% /dev
tmpfs                  910M     0  910M   0% /dev/shm
tmpfs                  910M  9.6M  901M   2% /run
tmpfs                  910M     0  910M   0% /sys/fs/cgroup
/dev/sda1              297M  129M  169M  44% /boot
tmpfs                  182M     0  182M   0% /run/user/0
[root@localhost /]# lvremove /dev/vgdata/lvdata 
Do you really want to remove active logical volume vgdata/lvdata? [y/n]: y
  Logical volume "lvdata" successfully removed
[root@localhost /]# vgremove vgdata
  Volume group "vgdata" successfully removed
[root@localhost /]# pvremove /dev/sdb /dev/sdc
  Labels on physical volume "/dev/sdb" successfully wiped.
  Labels on physical volume "/dev/sdc" successfully wiped.

此時,我們創建的pv、vg、lv所有信息都刪除了,我們可以通過pvs、vgs、lvs命令查看。

[root@localhost /]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sda2  rhel lvm2 a--  17.70g    0 
[root@localhost /]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  rhel   1   1   0 wz--n- 17.70g    0 
[root@localhost /]# lvs
  LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- 17.70g

到此,通過以上命令,我們可以看到,剛纔創建邏輯卷相關的信息已經成功刪除了。

以上內容是本次編寫的LVM邏輯卷的相關創建和使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章