命令
lvm
描述
LVM2 tools
逻辑卷管理器LVM可以通过物理设备来创建虚拟块设备,可以动态的调整分区大小,更便于管理多块磁盘
用法
1 2
| lvm [command|file] lvm help [command]
|
选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| lvm子命令 pv相关命令: pvchange 更改pv属性 pvresize 调整pv大小 pvck 检查pv一致性 pvcreate 创建pv pvdisplay 显示pv属性 pvmove 迁移pv数据 pvremove 删除pv pvs 显示pv属性 pvscan 显示所有pv
vg相关命令: vgcfgbackup 备份vg配置 vgcfgrestore 还原vg配置 vgchange 更改vg属性 vgck 检查vg一致性 vgconvert 更改vg元数据格式 vgcreate 创建vg vgdisplay 显示vg信息 vgexport 在系统中取消vg vgextend 添加pv到vg vgimport 在系统中注册vg vgimportclone 从克隆的pv导入vg vgmerge 合并vg vgmknodes 在/dev中为vg创建特殊文件 vgreduce 从vg中移除pv vgremove 删除vg vgrename 重命名vg vgs 显示vg属性 vgscan 显示所有vg vgsplit 将pv移动到新的或现有的vg中
lv相关命令: lvchange 更改lv属性 lvconvert 更改lv格式 lvcreate 创建lv lvdisplay 显示lv属性 lvextend 扩容lv lvreduce 压缩lv lvremove 删除lv lvrename 重命名lv lvresize 调整lv大小 lvs 显示lv属性 lvscan 显示所有lv
|
注意
1.对磁盘或分区操作前,一定要确认盘符,路径,分区等相关信息,避免误操作导致数据丢失
2.ext4文件系统支持增大和减小分区空间,但是xfs只支持增大,不支持减小空间,建议预先分配xfs分区时尽可能小,后续再逐步增加
3.取消lvm分区挂载时一定要删除fstab中的配置,否则会导致系统重启后无法启动
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
| $ lvm vgs VG centos 1 2 0 wz--n- <19.00g 0 $ vgs VG centos 1 2 0 wz--n- <19.00g 0
$ ll /usr/sbin/vgs lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgs -> lvm
$ ll /usr/sbin/vg* lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgcfgbackup -> lvm lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgcfgrestore -> lvm lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgchange -> lvm lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgck -> lvm lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgconvert -> lvm lrwxrwxrwx. 1 root root 3 May 21 02:28 /usr/sbin/vgcreate -> lvm ... $ ll /usr/sbin/pv* $ ll /usr/sbin/lv*
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm / └─centos-swap 253:1 0 2G 0 lvm [SWAP] sdb 8:16 0 5G 0 disk sdc 8:32 0 10G 0 disk sdd 8:48 0 20G 0 disk
$ pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 $ vgs VG centos 1 2 0 wz--n- <19.00g 0 $ lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- <17.00g swap centos -wi-ao---- 2.00g
$ pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created.
$ pvs /dev/sdb PV VG Fmt Attr PSize PFree /dev/sdb lvm2 --- 5.00g 5.00g $ pvdisplay /dev/sdb "/dev/sdb" is a new physical volume of "5.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb VG Name PV Size 5.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 9vPLxu-s0qb-Ko1D-QsB9-maB1-R0xR-liIDA8
$ vgcreate vg_data /dev/sdb Volume group "vg_data" successfully created
$ vgs vg_data VG vg_data 1 0 0 wz--n- <5.00g <5.00g $ vgdisplay vg_data --- Volume group --- VG Name vg_data System ID Format lvm2 Metadata Areas 1 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 1 Act PV 1 VG Size <5.00 GiB PE Size 4.00 MiB Total PE 1279 Alloc PE / Size 0 / 0 Free PE / Size 1279 / <5.00 GiB VG UUID BJLto4-ZwX3-BGdN-mutx-5n15-GDb2-tdqpTC
$ lvcreate -l +100%FREE -n lv_data vg_data Logical volume "lv_data" created.
$ lvs vg_data LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data vg_data -wi-a----- <5.00g $ lvs /dev/vg_data/lv_data LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_data vg_data -wi-a----- <5.00g $ lvdisplay vg_data --- Logical volume --- LV Path /dev/vg_data/lv_data LV Name lv_data VG Name vg_data LV UUID xeWHZw-OjkW-Dtbm-TnSl-5ahH-oxVK-qAfTae LV Write Access read/write LV Creation host, time centos7, 2021-08-02 21:42:31 +0800 LV Status available LV Size <5.00 GiB Current LE 1279 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
$ mkfs.xfs /dev/mapper/vg_data-lv_data meta-data=/dev/mapper/vg_data-lv_data isize=512 agcount=4, agsize=327424 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1309696, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 $ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 5G 0 disk └─vg_data-lv_data 253:2 0 5G 0 lvm
$ blkid /dev/sdb /dev/sdb: UUID="9vPLxu-s0qb-Ko1D-QsB9-maB1-R0xR-liIDA8" TYPE="LVM2_member" $ blkid /dev/mapper/vg_data-lv_data /dev/mapper/vg_data-lv_data: UUID="ebd64a45-66f6-4826-8b3c-81d16d40e392" TYPE="xfs" $ mkdir /data $ mount /dev/mapper/vg_data-lv_data /data/ $ df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_data-lv_data xfs 5.0G 33M 5.0G 1% /data
$ echo "/dev/mapper/vg_data-lv_data /data xfs defaults 0 0" >> /etc/fstab
$ umount /data
$ lvremove /dev/mapper/vg_data-lv_data Do you really want to remove active logical volume vg_data/lv_data? [y/n]: y Logical volume "lv_data" successfully removed
$ vgremove vg_data Volume group "vg_data" successfully removed
$ pvremove /dev/sdb Labels on physical volume "/dev/sdb" successfully wiped.
$ df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_data-lv_data xfs 5.0G 33M 5.0G 1% /data $ lsblk /dev/sdb NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 5G 0 disk └─vg_data-lv_data 253:2 0 5G 0 lvm /data
$ pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created. $ pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <19.00g 0 /dev/sdb vg_data lvm2 a-- <5.00g 0 /dev/sdc vg_data lvm2 a-- <10.00g <10.00g
$ vgextend vg_data /dev/sdc Volume group "vg_data" successfully extended $ vgs vg_data VG vg_data 2 1 0 wz--n- 14.99g <10.00g
$ lvextend -r -l +100%FREE /dev/mapper/vg_data-lv_data Size of logical volume vg_data/lv_data changed from <5.00 GiB (1279 extents) to 14.99 GiB (3838 extents). Logical volume vg_data/lv_data successfully resized. meta-data=/dev/mapper/vg_data-lv_data isize=512 agcount=4, agsize=327424 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=1309696, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1309696 to 3930112
$ df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_data-lv_data xfs 15G 33M 15G 1% /data $ lsblk /dev/sdb /dev/sdc NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 5G 0 disk └─vg_data-lv_data 253:2 0 15G 0 lvm /data sdc 8:32 0 10G 0 disk └─vg_data-lv_data 253:2 0 15G 0 lvm /data
$ echo -e "n\np\n1\n\n+10G\nt\n8e\nw\n" | fdisk /dev/sdd $ lsblk /dev/sdd NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdd 8:48 0 20G 0 disk └─sdd1 8:49 0 10G 0 part $ pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created. $ vgextend vg_data /dev/sdd1 Volume group "vg_data" successfully extended $ vgs vg_data VG vg_data 3 1 0 wz--n- <24.99g <10.00g $ lvextend -r -l +100%FREE /dev/mapper/vg_data-lv_data Size of logical volume vg_data/lv_data changed from 14.99 GiB (3838 extents) to <24.99 GiB (6397 extents). Logical volume vg_data/lv_data successfully resized.
$ df -hT /data Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_data-lv_data xfs 25G 34M 25G 1% /data
$ lvreduce -r -L 20G /dev/vg_data/lv_data Size of logical volume vg_data/lv_data unchanged from 20.00 GiB (5120 extents). Logical volume vg_data/lv_data successfully resized. fsadm: Xfs filesystem shrinking is unsupported. /usr/sbin/fsadm failed: 1
|