LVM (Logical Volume Manager,Version 2)
dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊
設備名:/dev/dm-#
軟連接:/dev/mapper/VG_NAME-LV_NAME /dev/VG_NAME/LV_NAME mysql
/dev/sdb /dev/sdc 兩塊硬盤nginx
pvcreate /dev/sdb /dev/sdc vgcreate [-s 16m] vg0 /dev/sdb /dev/sdc lvcreate -L 10G -n mysql vg0 lvcreate -L 8G -n nginx vg0 mkfs.ext4 /dev/vg0/mysql mkfs.ext4 /dev/vg0/nginx mkdir /mnt/nginx /mnt/mysql mount /dev/vg0/mysql /mnt/mysql mount /dev/vg0/nginx /mnt/nginx 永久掛載: blkid | sed -nr "/mapper/s#.*/vg0-(.*): UUID=\"(.*)\" .*\"(.*)\"#UUID=\2 /mnt/\1 \t\t \3 \t defaults\t 0 0 #p" >> /etc/fstab mount -a
echo -e "n\n\n+5G\nw\n" | fdisk /dev/sda pvcreate /dev/sda6 vgextend vg0 /dev/sda6
vgdisplay #查看卷組是否有空間 # xfs文件系統 lvextend -L +5G /dev/vg0/nginx xfs_grows /dev/vg0/nginx #ext文件系統 lvextend -L +5G /dev/vg0/mysql resize2fs /dev/vg0/mysql 或 lvextend -r -L +5G /dev/vg0/mysql
縮減前先要取消掛載邏輯卷sql
備份要縮減的邏輯卷的數據 umount /dev/vg0/mysql fsck -f /dev/vg0/mysql #檢查文件系統 resize2fs /dev/vg0/mysql 5G #將該邏輯捲縮減爲5G lvreduce -L 5G /dev/vg0/mysql mount -a #從新掛載
touch /mnt/mysql/file{1..3} #建立三個文件來驗證快照功能 touch /mnt/nginx/file{1..3} lvcreate -s -n nginx_snap -L 1G /dev/vg0/nginx #xfs文件系統 爲nginx邏輯卷建立一個大小爲1G的快照 lvcreate -s -n mysql_snap -p r -L 1G /dev/vg0/mysql #ext4文件系統 mkdir /mnt/nginx_snap /mnt/mysql_snap mount -o nouuid /dev/vg0/nginx_snap /mnt/nginx_snap #xfs mount /dev/vg0/mysql_snap /mnt/mysql_snap #ext4 修改/mnt/mysql 和/mnt/nginx的數據 卸載掛載的邏輯卷及快照 umount /mnt/mysql umount /mnt/mysql_snap umount /mnt/nginx umount /mnt/nginx_snap lvconvert --merge /dev/vg0/mysql_snap lvconvert --merge /dev/vg0/nginx_snap mount -a #從新掛載
vgdisplay pvmove /dev/sda6 #將sda6上的數據移到vg0其餘空間 vgreduce vg0 /dev/sda6 pvremove /dev/sda6
umount /mnt/mysql umount /mnt/nginx lvremove /dev/vg0/nginx lvremove /dev/vg0/mysql vgremove vg0 pvremove /dev/sdb /dev/sdc sed -i -e '/mysql/d' -e '/nginx/d' /etc/fstab