如果没有命令安装如下命令即可
[root@CentOS-8 ~]# yum install lvm2 -y
临时的扫描磁盘
[root@localhost ~]# alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'
永久的扫描磁盘方法一:
[root@localhost ~]# vim /etc/profile.d/nev.sh
alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'
[root@localhost ~]# . /etc/profile.d/nev.sh
[root@localhost ~]# scandisk
永久的扫描磁盘方法二:
[root@localhost ~]# echo "alias scandisk='echo - - - > /sys/class/scsi_host/host0/scan;echo - - - > /sys/class/scsi_host/host1/scan;echo - - - > /sys/class/scsi_host/host2/scan'" > /etc/profile.d/nev.sh
[root@localhost ~]# . /etc/profile.d/nev.sh
[root@localhost ~]# scandisk
开始分区
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): m
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +3G
Created a new partition 1 of type 'Linux' and of size 3 GiB.
Command (m for help): p
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0x838642fa
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 6293503 6291456 3G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
分成逻辑卷lvm格式
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): m
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): L
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'.
Command (m for help): p
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0x838642fa
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 6293503 6291456 3G 8e Linux LVM
创建成文件系统
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 232316f3-6dff-487a-9fae-af211542097b /boot
sdb
├─sdb1
└─sdb2
[root@localhost ~]# mkfs.ext4 /dev/sdb1
[root@localhost ~]# mkfs.ext4 /dev/sdb2
└─cl-swap swap 17c36cec-99e4-413e-bc81-4bbce82a3f2d [SWAP]
sdb
├─sdb1 ext4 82c742eb-cdfa-4db9-a497-e31ad5929c3d
└─sdb2 ext4 b701e10a-15b9-4daa-9d39-ca7ff8038ece
注意:创建文件系统,可以一起创建mkfs.ext4 /dev/sdb{1,2},如果这样执行会报错,需要分开执行创建
创建逻辑卷lvm
显示pv信息
pvs:简要pv信息显示
pvdisplay
创建pv
[root@localhost ~]# pvcreate /dev/sdb2
WARNING: ext4 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb2.
Physical volume "/dev/sdb2" successfully created.
[root@localhost ~]# pvs
/dev/sdb2 vg0 lvm2 a-- <6.00g <6.00g
为卷组分配物理卷vg
[root@localhost ~]# vgcreate vg0 /dev/sdb2
Volume group "vg0" successfully created
[root@localhost ~]# vgs
vg0 1 0 0 wz--n- <6.00g <6.00g
从卷组创建逻辑卷lv
[root@localhost ~]# lvcreate -L 500M -n mydata vg0
Logical volume "mydata" created.
[root@localhost ~]# lvs
mydata vg0 -wi-a----- 500.00m
创建需要的挂载目录,并挂载
[root@localhost ~]# mkdir /mnt/data -p
[root@localhost ~]# mkfs.ext4 /dev/vg0/mydata
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 512000 1k blocks and 128016 inodes
Filesystem UUID: 784a4d01-d243-4350-8a0e-92d06a7d9b45
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# mount /dev/vg0/mydata /mnt/data/
lvm在线扩容逻辑卷
把剩余的磁盘空间100%全部加进去
[root@localhost ~]# lvextend -l +100%free /dev/vg0/mydata
Size of logical volume vg0/mydata changed from 500.00 MiB (125 extents) to <6.00 GiB (1535 extents).
Logical volume vg0/mydata successfully resized.
#针对ext 系列
[root@localhost ~]# resize2fs /dev/vg0/mydata
resize2fs 1.44.6 (5-Mar-2019)
Filesystem at /dev/vg0/mydata is mounted on /mnt/data; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 48
The filesystem on /dev/vg0/mydata is now 6287360 (1k) blocks long.
#针对xfs
[root@localhost ~]# mkfs.xfs /dev/vg2/logs
meta-data=/dev/vg2/logs isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=524288, 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
[root@localhost ~]# xfs_growfs /dev/vg2/logs
缩减逻辑卷lvm
注意:缩减有数据损坏的风险,建议先备份再缩减,xfs文件系统不支持缩减
# 取消挂载(xfs错误)
[root@localhost ~]# umount /mnt/data/
[root@localhost ~]# e2fsck -f /dev/vg2/logs
e2fsck 1.44.6 (5-Mar-2019)
ext2fs_open2: Bad magic number in super-block
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/vg2/logs
The superblock could not be read or does not describe a valid ext2/ext3/ext4
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193 <device>
or
e2fsck -b 32768 <device>
/dev/vg2/logs contains a xfs file system
# 取消挂载(ext)
[root@localhost ~]# umount /mnt/data
文件系统检查
[root@localhost ~]# e2fsck -f /dev/vg0/mydata
e2fsck 1.44.6 (5-Mar-2019)
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/vg0/mydata: 16/1560576 files (0.0% non-contiguous), 208731/6287360 blocks
[root@localhost ~]# resize2fs /dev/vg0/mydata 2G
resize2fs 1.44.6 (5-Mar-2019)
The filesystem is already 6287360 (1k) blocks long. Nothing to do!
[root@localhost ~]# lvreduce -L -2G /dev/vg0/mydata
WARNING: Reducing active logical volume to <5.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/mydata? [y/n]: y
Size of logical volume vg0/mydata changed from <6.00 GiB (1535 extents) to <5.00 GiB (1279 extents).
Logical volume vg0/mydata successfully resized.
重新挂载报错:
[root@localhost ~]# mount /dev/vg0/mydata /mnt/data/
mount: /mnt/data: wrong fs type, bad option, bad superblock on /dev/mapper/vg0-mydata, missing codepage or helper program, or other error.
范例: 缩减XFS文件系统的逻辑卷
#因为XFS文件系统不支持缩减,可以用下面方式缩减
#先备份XFS文件系统数据
[root@localhost ~]# yum -y install xfsdump
[root@localhost ~]# xfsdump -f data.img /data
缩减逻辑卷
[root@localhost ~]# lvreduce -L 1G /dev/vg2/logs
WARNING: Reducing active and open logical volume to 1.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg2/logs? [y/n]: y
Size of logical volume vg2/logs changed from 4.00 GiB (1024 extents) to 1.00 GiB (256 extents).
Logical volume vg2/logs successfully resized.
[root@localhost ~]# umount /mnt/data/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 886M 0 886M 0% /dev
tmpfs 904M 0 904M 0% /dev/shm
tmpfs 904M 8.8M 895M 1% /run
tmpfs 904M 0 904M 0% /sys/fs/cgroup
/dev/mapper/cl-root 20G 1.8G 19G 9% /
/dev/mapper/cl-data 15G 140M 15G 1% /data
/dev/sda1 976M 138M 772M 16% /boot
tmpfs 181M 0 181M 0% /run/user/0
[root@localhost ~]# mkfs.xfs -f /dev/vg2/logs
meta-data=/dev/vg2/logs isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=262144, 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
数据还原
[root@localhost ~]# xfsrestore -f data.img /data
删除逻辑卷
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 3G 0 part
└─sdb2 8:18 0 6G 0 part
└─vg0-mydata 253:5 0 4G 0 lvm
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 4.5G 0 part
└─vg2-logs 253:8 0 1G 0 lvm /mnt/data
1,删除lv
[root@localhost ~]# lvremove /dev/vg2/logs
Logical volume vg2/logs contains a filesystem in use.
2,删除vg
[root@localhost ~]# vgremove vg2
Do you really want to remove volume group "vg2" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg2/logs? [y/n]: y
Logical volume "logs" successfully removed
Volume group "vg2" successfully removed
3,删除pv
[root@localhost ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped.
扩展知识
新添加一块硬盘制作成lvm逻辑卷并添加到原有的逻辑卷组达到扩容
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0x838642fa
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 6293503 6291456 3G 8e Linux LVM
/dev/sdb2 6293504 18876415 12582912 6G 8e Linux LVM
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 3G 0 part
│ └─vg1-sqldata 253:5 0 3G 0 lvm
└─sdb2 8:18 0 6G 0 part
sdc 8:32 0 5G 0 disk
└─sdc1 8:33 0 4.5G 0 part
检查新添加的盘是否已经做成文件系统盘
[root@localhost ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ext4 232316f3-6dff-487a-9fae-af211542097b /boot
sdb
├─sdb1 LVM2_member gmOwk3-h9Yu-Zegv-1obl-x2v8-nJfG-Z0qfHb
│ └─vg1-sqldata
└─sdb2 ext4 a189e9a4-99b7-4c0a-89ff-e2909083cc24
创建成pv
[root@localhost ~]# pvcreate /dev/sdb2
WARNING: ext4 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb2.
Physical volume "/dev/sdb2" successfully created.
往vg 逻辑卷组添加扩容
[root@localhost ~]# vgextend vg1 /dev/sdb2
Volume group "vg1" successfully extended
检查
[root@localhost ~]# vgdisplay
添加到lv 逻辑卷中
[root@localhost ~]# lvextend -L +3G /dev/vg1/sqldata
Size of logical volume vg1/sqldata changed from <3.00 GiB (767 extents) to <6.00 GiB (1535 extents).
Logical volume vg1/sqldata successfully resized.
(拆除)移走多余的逻辑卷
注意:移走的条件是,要移走的分区一定是要比其他的总和少或者等于
[root@localhost ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 2.74%
/dev/sdb1: Moved: 100.00%
[root@localhost ~]# vgreduce vg1 /dev/sdb1
Removed "/dev/sdb1" from volume group "vg1"
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
实现逻辑卷快照
[root@localhost data]# ls
fstab issue lost+found passwd
[root@localhost ~]# lvcreate -L 100M -s -n data-snapshot /dev/vg1/sqldata
Logical volume "data-snapshot" created.
挂载
[root@localhost ~]# mount /dev/vg1/sqldata /mnt/data/
创建逻辑卷快照
[root@localhost ~]# lvcreate -L 100M -s -n data-snap -p r /dev/vg1/sqldata
Logical volume "data-snap" created.
挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改
mkdir -p /mnt/snap
挂载逻辑卷快照
做快照前
[root@localhost ~]# mount /dev/vg1/data-snap /mnt/snap/
[root@localhost ~]# cd /mnt/data/
[root@localhost data]# ls
f1.txt f2.txt f3.txt f4.txt f5.txt
[root@localhost data]# cd ..
[root@localhost mnt]# cd snap/
[root@localhost snap]# ls
f1.txt f2.txt f3.txt f4.txt f5.txt
做快照后,新加了两个文件
[root@localhost data]# ls
f1.txt f2.txt f3.txt f4.txt f5.txt fstab issue
恢复快照(快照是一次性的)
取消挂载
[root@localhost ~]# umount /mnt/snap/
[root@localhost ~]# umount /mnt/data/
[root@localhost ~]# lvconvert --merge /dev/vg1/data-snap
Merging of volume vg1/data-snap started.
vg1/sqldata: Merged: 100.00%
检查文件
[root@localhost ~]# mount /dev/vg1/sqldata /mnt/data/
[root@localhost ~]# ls -l /mnt/data/
total 16
-rw-r--r--. 1 root root 5 Apr 13 16:34 f1.txt
-rw-r--r--. 1 root root 5 Apr 13 16:34 f2.txt
-rw-r--r--. 1 root root 7 Apr 13 16:34 f3.txt
-rw-r--r--. 1 root root 5 Apr 13 16:34 f4.txt
-rw-r--r--. 1 root root 0 Apr 13 16:33 f5.txt