部署逻辑卷
常见的lvm部署命令
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
让添加的硬盘支持lvm技术
pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
创建卷组 juanzu1,并将两块硬盘添加进去,然后查看卷组的状态
[root@bogon ~]# vgcreate juanzu1 /dev/sdb /dev/sdc
Volume group "juanzu1" successfully created
[root@bogon ~]# vgdisplay juanzu1
--- Volume group ---
VG Name juanzu1
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 19.99 GiB
PE Size 4.00 MiB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GiB
VG UUID tCEC2h-jBO1-TrJ1-uFXt-VSLn-C3Ua-c5hfxm
#如何修改 PE Size(逻辑卷扩缩容的基本单位)
vgcreate -s 16M 卷组名 /dev/sd(a1,b1) #创建的时候就指定PE Size
切割出一个150mb的逻辑卷设备
注意切割单位的问题,在对逻辑卷切割时有两种计量单位,
容量为单位使用 -L (- l +100%FREE #把剩余的容量都用光)
基本单元的个数为单位使用 -l(每个单元大小默认是4mb)
[root@bogon ~]# lvcreate -n aa -l 37 juanzu1
Logical volume "aa" created
#在卷组juanzu1 创建一个名为aa的逻辑卷,大小是4*37
#把生成的逻辑卷进行格式化,然后挂载目录使用
#Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上是做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)
[root@bogon ~]# mkfs.xfs /dev/juanzu1/aa
meta-data=/dev/juanzu1/aa isize=256 agcount=4, agsize=9472 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
。。。。。。
[root@bogon ~]# mount /dev/juanzu1/aa /raid5/
[root@bogon ~]# df -h
/dev/mapper/juanzu1-aa 145M 7.6M 138M 6% /raid5
[root@bogon ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
###xfs
lvcreate -n xfs -l 25 juanzu1
mkfs.xfs /dev/juanzu1/xfs
mount /dev/juanzu1/xfs /xfs
物理卷扩容
pvcrate /dev/新分区 #把新的分区加入到逻辑卷中
vgextend 卷组名 /dev/新分区
lvextend -L 24G /dev/vg0/lv0 #把lv0 扩展到24g -L 扩展到多大 (mb gb为单位)
lvextend -l pe_size /dev/vg0/lv0 #把lv0 增加多少空间 -l增加多少 (pe_size为单位)
resize2fs /dev/vg0/lv0 #把刚加入卷的空间格式化为和原来空间一样的文件系统
lvextend -r -l +100%FREE /dev/vg0/lv0 # -r=resize2fs /dev/vg0/lv0
df -h
部署逻辑卷xfs
pvcreate /dev/sdb /dev/sdc
vgcreate juanzu /dev/sdb /dev/sdc
lvcreate -n xfs_test -L 50m juanzu
mkfs.xfs /dev/juanzu/xfs_test
扩大逻辑卷xfs,xfs逻辑卷无法缩小
[root@bogon /]# lvextend -L 200m /dev/juanzu/xfs
Extending logical volume xfs to 200.00 MiB
Logical volume xfs successfully resized
[root@bogon /]# xfs_growfs /dev/juanzu/xfs -D BLOCK块
......
data blocks changed from 51200 to 64000
[root@bogon /]# xfs_growfs /挂载点#刷新分区空间
lvextend -r -l +100%FREE /dev/juanzu/xfs
扩容逻辑卷ext4
扩展前请一定要记得卸载设备和挂载点的关联
[root@bogon ~]# umount /raid5/
把上一个实验的150mb的逻辑卷扩容到300mb
lvextend -L 300mb /dev/juanjuz1/aa
检查硬盘完整性,并重置硬盘容量
##检查硬盘被扩容好了没有
[root@bogon ~]# e2fsck -f /dev/juanzu1/aa
e2fsck 1.42.9 (28-Dec-2013)
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/juanzu1/aa: 11/25688 files (9.1% non-contiguous), 8896/102400 blocks
##重置硬盘容量
[root@bogon ~]# resize2fs /dev/juanzu1/aa
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/juanzu1/aa to 155648 (1k) blocks.
The filesystem on /dev/juanzu1/aa is now 155648 blocks long.
#重新挂载查看挂载属性
/dev/mapper/juanzu1-aa 144M 1.6M 132M 2% /ext4
缩小逻辑卷ext4
1,先解除挂载
2,e2fsck -f /dev/卷组/逻辑卷 #检查文件系统的完整性
3,resize2fs /dev/卷组/逻辑卷 120M #缩小逻辑卷到120m(不能带b)
lvreduce -L 120M /dev/卷组/逻辑卷
4,重新挂载并查看挂载属性
逻辑卷快照
快照卷的容量必须等于逻辑卷的容量
快照卷仅有效一次,执行还原操作后会被立即删除
1,先看卷组的信息
vgdisplay
2,利用重定向往逻辑设备挂载的目录写入一个文件
echo "Welcome to liyang.com" > /挂载目录/readme.txt
3,使用-s参数生成一个快照卷,使用-L参数指定切割的大小,还需在命令后加上针对那个逻辑卷的操作
lvcreate -L 120M -s -n 快照名称 /dev/卷组/逻辑卷
lvcreate -n 快照名称 -L 快照大小(2G) -s -p r(只读) /dev/卷组、逻辑卷
4,在逻辑卷中写入数据
dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M
5,执行还原操作
1,先解除挂载
2,lvconvert --merge /dev/卷组/快照名称
3,重新挂载逻辑卷,并看挂载信息
删除逻辑卷
1,解除挂载
2,lvremove /dev/卷组/逻辑卷 #删除逻辑卷
删除卷组
vgremove 卷名
删除物理卷设备
pvremove /dev/sdb /dev/sdc
跨主机迁移卷组
#旧主机
pvcreate /dev/sde #添加硬盘支持lvm
vgcreate vg0 /dev/sde #创建卷组“vg0",并加入硬盘
vgdisplay vg0 #查看卷组vg0
lvcreate -l 100%FREE -n lv0 vg0 #在卷组vg0上,创建逻辑卷lv0,-l使用全部的空间
mkfs.ext4 /dev/vg0/lv0 #格式化硬盘,并创建文件系统
mount /dev/vg0/lv0 /test #挂载
cp -av /root/* /test/ #拷贝测试文件
umount /test #解除挂载
vgrename vg0 vg100 #防止本机逻辑卷迁移到新主机上重名,改一下名字
lvrename /dev/vg100/lv0 /dev/vg100/lv100 #同上改名
vgchange -an vg100 #禁用逻辑卷组vg100
vgexport vg100 #导出卷组
#新主机
echo '- - -' > /sys/class/scsi_host/host0/scan #重新读取硬盘挂载数据
vgimport vg100 #导入卷组vg100
vgchange -ay vg100 #启用逻辑卷组vg100
mount /dev/vg100/lv100 /test #挂载lvm,并且查看刚才的测试文件是否存在
实验报错
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdc
mdadm: Cannot open /dev/sdc: Device or resource busy
解决方法1:重启服务器
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdc
mdadm: added /dev/sdc
扩展分区报错:
[root@bogon ~]# xfs_growfs -L 300MB /dev/juanzu1/aa
xfs_growfs: /dev/juanzu1/aa is not a mounted XFS filesystem