LVM相关常用命令
先来看下系统上所有的磁盘环境
[root@localhost ~]# fdisk -l /dev/sd[a-z] Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004ead7 Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 7859 62914560 8e Linux LVM Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xbb616a93 Device Boot Start End Blocks Id System /dev/sdb1 1 915 7349706 fd Linux raid autodetect /dev/sdb2 916 1308 3156772+ fd Linux raid autodetect Disk /dev/sdc: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/sdd: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
我这里有/dev/sda b c d 4块磁盘,而且都没有分区。
一、首先我们把磁盘分区下。
在/dev/sdb上分出3个主分区每个大小5G
##首先来把sdb磁盘上的分区都删除掉 dd if=/dev/zero of=/dev/sdb count=1 bs=512 && sync ##上面命令的含义是 在sdb磁盘上1-512字节出全部填0 ##Linux系统上有两个很好玩的文件 一个是/dev/zero 一个是/dev/null ##前者是吐泡机,可以吐出无穷尽的0 后者是黑洞什么数据丢进去都消失贻尽,这里就不多说dd命令了 ##来看下 sdb磁盘已经没了任何分区了。 [root@localhost ~]# cat /proc/partitions major minor #blocks name 8 0 125829120 sda 8 1 204800 sda1 8 2 62914560 sda2 8 16 20971520 sdb 8 48 20971520 sdd 8 32 20971520 sdc 253 0 20971520 dm-0 253 1 2097152 dm-1 253 2 10485760 dm-2 253 3 20971520 dm-3 ##来新建分区 echo 'n p 1 +5G n p 2 +5G n p 3 +5G t 1 8e t 2 8e t 3 8e w' | fdisk /dev/sdb &> /dev/null ##上面的看着篇幅很大 也可以使用echo -e 选项来写 echo -e 'n\np\n1\n\n+5G\nn\np\n2\n\n+5G\nn\np\n3\n\n+5G\nt\n1\n8e\nt\n2\n8e\nt\n3\n8e\nw' | fdisk /dev/sdb &> /dev/null ##这样用cheo+管道的方式分区是完全可以的。只要自己熟悉fdisk使用流程。 ##可以看下面磁盘分区的详情 [root@localhost ~]# fdisk -l /dev/sdb Disk /dev/sdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x7db41824 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 8e Linux LVM /dev/sdb2 655 1308 5253255 8e Linux LVM /dev/sdb3 1309 1962 5253255 8e Linux LVM
二、建立物理卷
#将/dev/sdb1 2 3分区 建立物理卷 [root@localhost ~]# pvcreate /dev/sdb{1..3} dev_is_mpath: failed to get device for 8:17 Physical volume "/dev/sdb1" successfully created dev_is_mpath: failed to get device for 8:18 Physical volume "/dev/sdb2" successfully created dev_is_mpath: failed to get device for 8:19 Physical volume "/dev/sdb3" successfully created
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3 #这个命令其实和上面是一样的,上面只不过用了shell的通配
查看pv
[root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 vg0 lvm2 a-- 59.99g 7.99g /dev/sdb1 lvm2 a-- 5.01g 5.01g /dev/sdb2 lvm2 a-- 5.01g 5.01g /dev/sdb3 lvm2 a-- 5.01g 5.01g ## sdb1 2 3分区都进去了 每个分区5G
也可以使用pvdisplay /dev/sdb1来看更详细的信息
(注:Allocatable:显示NO是因为我们都还没分卷组所以,PE大小一般有4M 8M 16M等而PE的大小取决于卷组而不是取决于物理卷)
下面说说pv的移除和添加
[root@localhost ~]# pvremove /dev/sdb3 #pv移除命令 Labels on physical volume "/dev/sdb3" successfully wiped
[root@localhost ~]# pvcreate /dev/sdb3 #pv添加命令 Physical volume "/dev/sdb3" successfully created
下图是效果
三、创建VG
[root@localhost ~]# vgcreate testvg /dev/sdb1 #vgcreate 创建vg的名称 加入vg的pv Volume group "testvg" successfully created
可以用vgs vgdisplay命令来查看vg
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree testvg 1 0 0 wz--n- 5.01g 5.01g vg0 1 4 0 wz--n- 59.99g 7.99g [root@localhost ~]# vgdisplay testvg --- Volume group --- VG Name testvg 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.01 GiB PE Size 4.00 MiB Total PE 1282 Alloc PE / Size 0 / 0 Free PE / Size 1282 / 5.01 GiB VG UUID 4CNQKs-Qw0I-G3tu-TeNV-tyqW-gf9o-2bMLNi
这时候我们就可以使用pvdisplay命令来查看/dev/sdb1 就能看到PE大小了
加入这个VG不够用还是可以添加的,这时候我们就可以来测试添加VG了
[root@localhost ~]# vgextend testvg /dev/sdb2 Volume group "testvg" successfully extended [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree testvg 2 0 0 wz--n- 10.02g 10.02g
这时候我们的VG就加上了 testvg已经显示是10G大小了
同样有添加就有移除
[root@localhost ~]# pvmove /dev/sdb1 #这里我们必须先移除pv后才能移除VG No data to move for testvg [root@localhost ~]# vgreduce testvg /dev/sdb2 Removed "/dev/sdb2" from volume group "testvg"
四、开始说创建LV
[root@localhost ~]# lvcreate -L 3G -n testlv testvg #在testvg上创建一个大小为3GB名称为testlv的逻辑卷 Logical volume "testlv" created
这时候我就可以看到相对于的设备文件了
这时候我们对待/dev/testvg/testlv逻辑分区就如同对待普通分区一样了 首先去格式化它
[root@localhost ~]# mke2fs -t ext4 /dev/testvg/testlv mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 196608 inodes, 786432 blocks 39321 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=805306368 24 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 23 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
格式化完了 肯定是挂载了 我们来试试
五、LV扩展
六、lv分区的缩减(此操作需要慎重考虑)
七、lv快照创建(个人感觉用于备份超级好)
创建快照之前需要保证当前lv没有写操作,如果有需要结束进程或等待进程结束
lvcreate -L 1G -n testlv_snap -p r -s /dev/testvg/testlv #命令解释:创建一个名称为testlv_snap 对testlv镜像做快照的卷 其大小为1G #(注:这里的快照卷大小必须大于lv卷已用空间大小)
lv逻辑分区大致流程