LVM 创建、扩容、删除

来源:互联网 发布:软件开发详细设计 编辑:程序博客网 时间:2024/05/21 09:50
LVM ( Logical Volume Manager ) 逻辑卷管理一、创建 LV1、首先在你的虚拟机上添加一块新的硬盘用来做实验。2、安装 lvm : yum -y install lvm23、查看新添加的磁盘[root@study ~]# fdisk -lDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000## 其中,/dev/sdb 就是我新添加的磁盘了4、创建物理分区[root@study ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x62beb6a4.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended to         switch off the mode (command 'c') and change display units to         sectors (command 'u').Command (m for help): m                          # 帮助信息Command action   a   toggle a bootable flag   b   edit bsd disklabel   c   toggle the dos compatibility flag   d   delete a partition                        # 删除一个分区   l   list known partition types                # 打印分区类型对应的 ID 号   m   print this menu   n   add a new partition                       # 添加一个分区   o   create a new empty DOS partition table   p   print the partition table                 # 打印分区表   q   quit without saving changes               # 不保存退出   s   create a new empty Sun disklabel   t   change a partition's system id            # 更改分区 ID   u   change display/entry units   v   verify the partition table   w   write table to disk and exit              # 保存退出   x   extra functionality (experts only)## 执行的命令是 fdisk /dev/sdb .Command (m for help): n             # 执行添加分区指令Command action   e   extended   p   primary partition (1-4)p                                   # 添加一个主分区Partition number (1-4): 1           # 分区号为 1First cylinder (1-2610, default 1): # 分区起始位置(直接回车)Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +1024M  # 分区结束位置(+1024M 表示 1G 大小)Command (m for help): nCommand action   e   extended   p   primary partition (1-4)pPartition number (1-4): 2First cylinder (133-2610, default 133):Using default value 133Last cylinder, +cylinders or +size{K,M,G} (133-2610, default 2610): +1024MCommand (m for help): p             # 执行打印分区表Disk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x62beb6a4   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1         132     1060258+  83  Linux/dev/sdb2             133         264     1060290   83  Linux## 可以看到分了两个区 /dev/sdb1  /dev/sdb2Command (m for help): t             # 执行更改分区 ID (83 表示Linux 普通分区、82 表示swap、8e 表示LVM)Partition number (1-4): 1Hex code (type L to list codes): 8eChanged system type of partition 1 to 8e (Linux LVM)Command (m for help): tPartition number (1-4): 2Hex code (type L to list codes): 8eChanged system type of partition 2 to 8e (Linux LVM)Command (m for help): pDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x62beb6a4   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1         132     1060258+  8e  Linux LVM/dev/sdb2             133         264     1060290   8e  Linux LVM## 已经看到分区 ID 变为 8e ; 文件系统为 Linux LVMCommand (m for help): w             # 执行保存退出The partition table has been altered!Calling ioctl() to re-read partition table.Syncing disks.[root@study ~]# fdisk -l /dev/sdbDisk /dev/sdb: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x62beb6a4   Device Boot      Start         End      Blocks   Id  System/dev/sdb1               1         132     1060258+  8e  Linux LVM/dev/sdb2             133         264     1060290   8e  Linux LVM## 可以看到磁盘 /dev/sdb 有两个分区 /dev/sdb1 /dev/sdb2 5、创建 PV (物理卷)[root@study ~]# pvcreate /dev/sdb1 /dev/sdb2  Physical volume "/dev/sdb1" successfully created  Physical volume "/dev/sdb2" successfully created## 使用 pvcreate 创建 PV 后面跟想要创建的分区[root@study ~]# pvscan  PV /dev/sda3   VG vg_study   lvm2 [18.80 GiB / 0    free]  PV /dev/sdb1                 lvm2 [1.01 GiB]  PV /dev/sdb2                 lvm2 [1.01 GiB]  Total: 3 [20.82 GiB] / in use: 1 [18.80 GiB] / in no VG: 2 [2.02 GiB]## 使用 pvscan 、pvdisplay 、pvs 都可以查看 PV## PV /dev/sdb1 pv /dev/sdb2 为我新创建的 PV 大小为 1G(PV /dev/sda3 为之前创建的属 VG vg_study )6、创建 VG (卷组)[root@study ~]# vgcreate my_vg /dev/sdb1 /dev/sdb2  Volume group "my_vg" successfully created## 使用 vgcreate 创建卷组,后面接 vg 名,接 pv[root@study ~]# vgdisplay  --- Volume group ---  VG Name               my_vg  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               2.02 GiB  PE Size               4.00 MiB  Total PE              516  Alloc PE / Size       0 / 0  Free  PE / Size       516 / 2.02 GiB  VG UUID               ynCJG8-ZIvI-9gBF-dO5K-aQws-N9WW-r26hch## 同样可以使用 vgscan 、vgs 、vgdisplay 来查看 VG## 可以看到 VG名为 my_vg 、VG 大小为 2G 、PE 大小 4M 等7、创建 LV (逻辑卷)[root@study ~]# lvcreate -L 2G -n my_lv my_vg  Logical volume "my_lv" created## 使用 lvcreate 创建 LV ,-L 指定 LV大小,-n 指定 LV名称,后面接 VG名[root@study ~]# lvdisplay  --- Logical volume ---  LV Path                /dev/my_vg/my_lv  LV Name                my_lv  VG Name                my_vg  LV UUID                j9Bduh-3TB9-Owhz-X3PX-fVeQ-bvJe-OAFBVp  LV Write Access        read/write  LV Creation host, time study.localhost.localdomain, 2014-11-26 11:14:28 +0800  LV Status              available  # open                 0  LV Size                2.00 GiB  Current LE             512  Segments               2  Allocation             inherit  Read ahead sectors     auto  - currently set to     256  Block device           253:1## 同样可以使用 lvscan 、lvs 、lvdisplay 来查看 LV## 可以看到 LV路径 /dev/my_vg/my_lv 、LV名 my_lv 、VG名 my_vg 、LV大小 2G 等8、创建文件系统 (格式化)[root@study ~]# mkfs.ext4 /dev/my_vg/my_lvmke2fs 1.41.12 (17-May-2010)文件系统标签=操作系统:Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks131072 inodes, 524288 blocks26214 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=53687091216 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:        32768, 98304, 163840, 229376, 294912正在写入inode表: 完成Creating journal (16384 blocks): 完成Writing superblocks and filesystem accounting information: 完成This filesystem will be automatically checked every 32 mounts or180 days, whichever comes first.  Use tune2fs -c or -i to override.## 使用 mkfs.ext4 格式化为 ext4 文件系统9、挂载使用[root@study ~]# mkdir /data[root@study ~]# mount /dev/my_vg/my_lv /data/[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.4G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   2.2G   71M  2.0G   4% /data## 创建 /data 目录,将 /dev/my_vg/my_lv 挂载到 /data[root@study ~]# umount /data/[root@study ~]# blkid /dev/my_vg/my_lv/dev/my_vg/my_lv: UUID="a8cb322e-1872-4ea8-bfba-f21b678bc849" TYPE="ext4"[root@study ~]# echo "UUID="a8cb322e-1872-4ea8-bfba-f21b678bc849" /data ext4 defaults 0 0" >> /etc/fstab[root@study ~]# mount -a[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.5G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   2.2G   71M  2.0G   4% /data## 也可以使用 blkid 生成 UUID 然后写入到 /etc/fstab 文件中,实现开机自动挂载二、扩容 LV1、首先创建物理分区(重点是这次创建后要格式化)2、创建 PV3、扩容 VG[root@study ~]# vgextend my_vg /dev/sdb3  Volume group "my_vg" successfully extended## 使用 vgextend 指令扩展 VG ,后面接要扩展的 VG名 ,后面接将哪个 PV 扩展进去[root@study ~]# vgdisplay my_vg  --- Volume group ---  VG Name               my_vg  System ID  Format                lvm2  Metadata Areas        3  Metadata Sequence No  3  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                1  Open LV               1  Max PV                0  Cur PV                3  Act PV                3  VG Size               3.02 GiB  PE Size               4.00 MiB  Total PE              774  Alloc PE / Size       512 / 2.00 GiB  Free  PE / Size       262 / 1.02 GiB  VG UUID               ynCJG8-ZIvI-9gBF-dO5K-aQws-N9WW-r26hch## 可以使用 vgdisplay my_vg 来指定查看哪个 VG## 可以看到 VG 总大小为 3G 、已使用 2G 、空闲 1G(因为我们扩进去 1G 的 PV)4、扩容 LV[root@study ~]# lvextend -L +1G /dev/my_vg/my_lv  Size of logical volume my_vg/my_lv changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).  Logical volume my_lv successfully resized## 使用 lvextend 扩容 LV ,-L 指定扩多大 ,后面接 LV 实际路径 /dev/my_vg/my_lv[root@study ~]# lvdisplay /dev/my_vg/my_lv  --- Logical volume ---  LV Path                /dev/my_vg/my_lv  LV Name                my_lv  VG Name                my_vg  LV UUID                j9Bduh-3TB9-Owhz-X3PX-fVeQ-bvJe-OAFBVp  LV Write Access        read/write  LV Creation host, time study.localhost.localdomain, 2014-11-26 11:14:28 +0800  LV Status              available  # open                 1  LV Size                3.00 GiB  Current LE             768  Segments               3  Allocation             inherit  Read ahead sectors     auto  - currently set to     256  Block device           253:1## 可以使用 lvdisplay /dev/my_vg/my_lv 来查看 LV 大小## LV 大小变为了 3G (原 2G)5、投入使用[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.4G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   2.2G   71M  2.0G   4% /data## 我们发现分区 /data 大小还是 2G[root@study ~]# resize2fs /dev/my_vg/my_lvresize2fs 1.41.12 (17-May-2010)Filesystem at /dev/my_vg/my_lv is mounted on /data; on-line resizing requiredold desc_blocks = 1, new_desc_blocks = 1Performing an on-line resize of /dev/my_vg/my_lv to 786432 (4k) blocks.The filesystem on /dev/my_vg/my_lv is now 786432 blocks long.[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.4G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   3.2G   71M  3.0G   3% /data## 使用 resize2fs /dev/my_vg/my_lv 重新计算分区大小后 发现扩容到了 3G三、缩减 LV1、模拟数据写入[root@study ~]# dd if=/dev/zero of=/data/block.db bs=1024M count=1记录了1+0 的读入记录了1+0 的写出1073741824字节(1.1 GB)已复制,81.6381 秒,13.2 MB/秒## 我们使用 dd 命令写了 1G 的数据到 /data[root@study ~]# cp /etc/passwd /data/  ## 复制这个文件的目的是验证数据是否丢失[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.4G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   3.2G  1.2G  1.9G  39% /data## 现在这个剩余空间 我们想把他撤出来 1G2、首先检查一下文件系统[root@study ~]# umount /data/  ## 一定要先 umount[root@study ~]# e2fsck -f /dev/my_vg/my_lve2fsck 1.41.12 (17-May-2010)第一步: 检查inode,块,和大小第二步: 检查目录结构第3步: 检查目录连接性Pass 4: Checking reference counts第5步: 检查簇概要信息/dev/my_vg/my_lv: 13/196608 files (0.0% non-contiguous), 291646/786432 blocks3、重新计算大小[root@study ~]# resize2fs /dev/my_vg/my_lv 2Gresize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/my_vg/my_lv to 524288 (4k) blocks.The filesystem on /dev/my_vg/my_lv is now 524288 blocks long.## 重新定义大小为 2G4、缩小 LV[root@study ~]# lvreduce -L -1G /dev/my_vg/my_lv  WARNING: Reducing active logical volume to 2.00 GiB  THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce my_lv? [y/n]: y  Size of logical volume my_vg/my_lv changed from 3.00 GiB (768 extents) to 2.00 GiB (512 extents).  Logical volume my_lv successfully resized## 使用 lvreduce 来缩小 LV ,-L -1G 缩小 1G[root@study ~]# mount -a[root@study ~]# df -HTFilesystem                    Type   Size  Used Avail Use% Mounted on/dev/mapper/vg_study-LogVol00 ext4    20G  1.4G   18G   8% /tmpfs                         tmpfs  521M     0  521M   0% /dev/shm/dev/sda1                     ext4   204M   30M  164M  16% /boot/dev/mapper/my_vg-my_lv       ext4   2.2G  1.2G  863M  58% /data[root@study ~]# ls /data/block.db  lost+found  passwd## 重新挂载分区,发现数据没有问题 (仅是测试,没有发现问题)5、VG 中移除 PV[root@study ~]# vgdisplay my_vg  --- Volume group ---  VG Name               my_vg  System ID  Format                lvm2  Metadata Areas        3  Metadata Sequence No  6  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                1  Open LV               1  Max PV                0  Cur PV                3  Act PV                3  VG Size               3.02 GiB  PE Size               4.00 MiB  Total PE              774  Alloc PE / Size       637 / 2.49 GiB  Free  PE / Size       137 / 548.00 MiB  VG UUID               ynCJG8-ZIvI-9gBF-dO5K-aQws-N9WW-r26hch## 首先我们 vgdisplay my_vg ,发现 VG 空闲 548M[root@study ~]# pvdisplay  --- Physical volume ---  PV Name               /dev/sdb1  VG Name               my_vg  PV Size               1.01 GiB / not usable 3.41 MiB  Allocatable           yes (but full)  PE Size               4.00 MiB  Total PE              258  Free PE               0  Allocated PE          258  PV UUID               JB8X8v-jBPU-eOiN-aEOU-TOig-tv01-SuHytd  --- Physical volume ---  PV Name               /dev/sdb2  VG Name               my_vg  PV Size               1.01 GiB / not usable 3.44 MiB  Allocatable           yes (but full)  PE Size               4.00 MiB  Total PE              258  Free PE               0  Allocated PE          258  PV UUID               YXBMJJ-RyG3-z1xa-tlw6-piaI-cTgj-SIBIlz  --- Physical volume ---  PV Name               /dev/sdb3  VG Name               my_vg  PV Size               1.01 GiB / not usable 3.44 MiB  Allocatable           yes  PE Size               4.00 MiB  Total PE              258  Free PE               137  Allocated PE          121  PV UUID               jSpEdJ-fxZh-LP27-rFIM-0gnO-mL2x-PpBJpK## 其次使用 pvdisplay 查看 PV 的使用情况发现:   /dev/sdb1  PE 空闲 0   /dev/sdb2  PE 空闲 0   /dev/sdb3  PE 空闲 137 (上图显示每个 PE 为 4M ,那么 /dev/sdb3 总空闲容量=137*4 = 548M)## 正好等于 VG 的空闲大小,而 PV /dev/sdb3 大小为 1G ,也就是说有部分空间被占用,所以无法移除该 PV[root@study ~]# vgreduce my_vg /dev/sdb3  Physical volume "/dev/sdb3" still in use[root@study ~]# umount /data/[root@study ~]# vgreduce my_vg /dev/sdb3  Physical volume "/dev/sdb3" still in use## 提示正在被占用,无法移除( umount 分区也不行 )[root@study ~]# umount /data/[root@study ~]# e2fsck -f /dev/my_vg/my_lve2fsck 1.41.12 (17-May-2010)第一步: 检查inode,块,和大小第二步: 检查目录结构第3步: 检查目录连接性Pass 4: Checking reference counts第5步: 检查簇概要信息/dev/my_vg/my_lv: 14/163840 files (0.0% non-contiguous), 289591/652288 blocks[root@study ~]# resize2fs /dev/my_vg/my_lv 2Gresize2fs 1.41.12 (17-May-2010)Resizing the filesystem on /dev/my_vg/my_lv to 524288 (4k) blocks.The filesystem on /dev/my_vg/my_lv is now 524288 blocks long.[root@study ~]# lvreduce -L -500M /dev/my_vg/my_lv  WARNING: Reducing active logical volume to 2.00 GiB  THIS MAY DESTROY YOUR DATA (filesystem etc.)Do you really want to reduce my_lv? [y/n]: y  Size of logical volume my_vg/my_lv changed from 2.49 GiB (637 extents) to 2.00 GiB (512 extents).  Logical volume my_lv successfully resized## 我们把 LV 缩小了 500M[root@study ~]# vgdisplay my_vg  --- Volume group ---  VG Name               my_vg  System ID  Format                lvm2  Metadata Areas        3  Metadata Sequence No  9  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                1  Open LV               0  Max PV                0  Cur PV                3  Act PV                3  VG Size               3.02 GiB  PE Size               4.00 MiB  Total PE              774  Alloc PE / Size       512 / 2.00 GiB  Free  PE / Size       262 / 1.02 GiB  VG UUID               ynCJG8-ZIvI-9gBF-dO5K-aQws-N9WW-r26hch## 现在再看 VG 大小 空闲 1G[root@study ~]# pvdisplay  --- Physical volume ---  PV Name               /dev/sdb3  VG Name               my_vg  PV Size               1.01 GiB / not usable 3.44 MiB  Allocatable           yes  PE Size               4.00 MiB  Total PE              258  Free PE               258  Allocated PE          0  PV UUID               jSpEdJ-fxZh-LP27-rFIM-0gnO-mL2x-PpBJpK## pvdisplay 也发现 /dev/sdb3 正好全部空闲[root@study ~]# vgreduce my_vg /dev/sdb3  Removed "/dev/sdb3" from volume group "my_vg"## 已经成功将 PV /dev/sdb3 从 VG my_vg 中移除[root@study ~]# vgs  VG       #PV #LV #SN Attr   VSize  VFree  my_vg      2   1   0 wz--n-  2.02g 16.00m## 使用 vgs 可以看到 vg my_vg 中包含 PV 数为 26、删除 PV[root@study ~]# pvremove /dev/sdb3  Labels on physical volume "/dev/sdb3" successfully wiped## 使用 pvremove 删除 PV /dev/sdb3[root@study ~]# pvs  PV         VG       Fmt  Attr PSize  PFree  /dev/sdb1  my_vg    lvm2 a--   1.01g     0  /dev/sdb2  my_vg    lvm2 a--   1.01g 16.00m## 使用 pvs 看到只有两个 PV 了## 然后 fdisk /dev/sdb 将 sdb3 的 ID 改为 83 ,保存    mkfs.ext4 /dev/sdb3 ,重新挂载到目录,至此 /dev/sdb3 成为普通分区四、删除整个 lv vg pv[root@study ~]# umount /data/[root@study ~]# lvremove /dev/my_vg/my_lvDo you really want to remove active logical volume my_lv? [y/n]: y  Logical volume "my_lv" successfully removed[root@study ~]# vgremove my_vg  Volume group "my_vg" successfully removed[root@study ~]# pvremove /dev/sdb1  Labels on physical volume "/dev/sdb1" successfully wiped[root@study ~]# pvremove /dev/sdb2  Labels on physical volume "/dev/sdb2" successfully wiped## 删除比创建容易多了 ...

0 0