网络公司网站模板html,wordpress首页添加幻灯,潍坊网站制作 熊掌号,百度网址Linux如何在线对逻辑分区扩容1.前言目前绝大部分IaaS平台基本都会选择类似Vmware VsphereSAN存算分离的架构#xff0c;或者选择类似Nutanix、Vmware Vsan或者深信服等存算一体的超融合架构。不管何种方式#xff0c;都会遇到已挂载目录磁盘空间不足的情况#xff0c;部分分… Linux如何在线对逻辑分区扩容1.前言目前绝大部分IaaS平台基本都会选择类似Vmware VsphereSAN存算分离的架构或者选择类似Nutanix、Vmware Vsan或者深信服等存算一体的超融合架构。不管何种方式都会遇到已挂载目录磁盘空间不足的情况部分分区空间使用不够情况。希望在不影响现有业务的情况下动态将某个挂载点目录扩容。如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区)那么就可以轻松进行扩容或缩容。1.1 环境介绍条目内容操作系统Red Hat Enterprise Linux Server release 7.8 (Maipo)CPU4C内存16G硬盘1(原有硬盘)120G硬盘2(拟添加的硬盘)500G 希望挂载在/root下将原有/root进行动态扩容2.几个常用命令介绍2.1 fdisk命令fdisk一般用来磁盘分区也可以用来查看磁盘分区情况。/dev/sda1和/dev/sda2是两个主分区其中前者是启动分区。注意/dev/sda2是LVM文件系统这个是后续动态扩容的关键点。后续两个就是逻辑卷分别是Disk /dev/mapper/rhel-root: 119.2 GBDisk /dev/mapper/rhel-swap: 8455 MB[roottest1 ~]# fdisk -lDisk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bcae5 Device Boot Start End Blocks Id System/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 251412479 124656640 8e Linux LVMDisk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes2.2 lsblk命令lsblk命令用于列出所有可用块设备的信息而且还能显示他们之间的依赖关系这个命令很好用因为可以让电脑上的磁盘和分区信息很清晰。[roottest1 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 120G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 118.9G 0 part ├─rhel-root 253:0 0 111G 0 lvm / └─rhel-swap 253:1 0 7.9G 0 lvm [SWAP]sr0 11:0 1 1024M 0 rom 这里同样看出系统已有一块硬盘sda具备两个分区分别是sda1和sda2。其中sda2分区有两个逻辑卷分别就是上述对应的rhel-root和rhel-swap。注意这里rhel-root和rhel-swap两者都被“-”分割开。rhel是vg是卷组(Volume Group, VG)后者root和swap是逻辑卷(Logical Volume, LV)。正是在逻辑卷上做文件系统。也正是逻辑卷创建之后其大小可以伸缩。2.3 df命令linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间目前还剩下多少空间等信息。显示指定磁盘文件的可用空间。df这个命令读取的数据计划都是针对整个文件系统的主要在super block内信息因此读取速度非常快速。[roottest1 ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 3.9G 0 3.9G 0% /devtmpfs tmpfs 3.9G 0 3.9G 0% /dev/shmtmpfs tmpfs 3.9G 8.9M 3.9G 1% /runtmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup/dev/mapper/rhel-root xfs 111G 98G 13G 89% //dev/sda1 xfs 1014M 137M 878M 14% /boottmpfs tmpfs 799M 0 799M 0% /run/user/0注1、tmpfs,临时文件系统是一种基于内存的文件系统。和ramdisk不同后者是个块设备前者是个文件系统。2、df下是不显示swap分区的。所以这里只显示/dev/mapper/rhel-root。可以看出来rhel-root是xfs文件系统在RHEL7系统中比较大的变化之一就是在文件系统方面使用XFS替换了Ext4XFS作为最新RHEL7中默认的文件管理系统它的日志型文件管理系统的优势在意外宕机后尤其明显可以快速的恢复可能被破坏的文件另外经过优化后日志功能对硬盘性能影响非常小同时最大支持18EB的存储容量满足了几乎所有需求。3.正式扩容热添加一块硬盘在虚拟机管理平台上热添加一块硬盘。【验证】[roottest1 ~]# fdisk -lDisk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bcae5 Device Boot Start End Blocks Id System/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 251412479 124656640 8e Linux LVMDisk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectorsUnits sectors of 1 * 512 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes从最后可以看出/dev/sdb为536.9 GB容量这里是没有任何分区的。查看当前pv、vg以及lv的情况。[roottest1 ~]# pvdisplay --- Physical volume --- PV Name /dev/sda2 VG Name rhel PV Size 118.88 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 30433 Free PE 1 Allocated PE 30432 PV UUID 6c2uwi-e0el-9kdl-UexC-5Qut-LbCv-eNfrQ0[roottest1 ~]# vgdisplay --- Volume group --- VG Name rhel System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 118.88 GiB PE Size 4.00 MiB Total PE 30433 Alloc PE / Size 30432 / 118.88 GiB Free PE / Size 1 / 4.00 MiB VG UUID UeFmSr-CGD1-JNp1-XwtC-40xI-SVF6-CezPm6[roottest1 ~]# lvdisplay --- Logical volume --- LV Path /dev/rhel/swap LV Name swap VG Name rhel LV UUID 4k1EM3-EYGL-0BKL-oei6-UNBW-BOBC-259HY4 LV Write Access read/write LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 0800 LV Status available # open 2 LV Size 7.88 GiB Current LE 2016 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/rhel/root LV Name root VG Name rhel LV UUID wEU6li-W6fr-7TfV-3OJ2-5o0i-mbez-rptO1M LV Write Access read/write LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 0800 LV Status available # open 1 LV Size 111.00 GiB Current LE 28416 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0关于pv、vg以及lv的关系详见下图# 创建一个新的pv[roottest1 ~]# pvcreate /dev/sdbWARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y Wiping dos signature on /dev/sdb. Physical volume /dev/sdb successfully created.# 验证[roottest1 ~]# pvscan PV /dev/sda2 VG rhel lvm2 [118.88 GiB / 4.00 MiB free] PV /dev/sdb lvm2 [500.00 GiB] Total: 2 [618.88 GiB] / in use: 1 [118.88 GiB] / in no VG: 1 [500.00 GiB]注意要选择dev/sdb这个新加的硬盘扩展vg[roottest1 ~]# vgextend rhel /dev/sdb Volume group rhel successfully extended[roottest1 ~]# pvscan PV /dev/sda2 VG rhel lvm2 [118.88 GiB / 4.00 MiB free] PV /dev/sdb VG rhel lvm2 [500.00 GiB / 500.00 GiB free] Total: 2 [618.88 GiB] / in use: 2 [618.88 GiB] / in no VG: 0 [0 ]扩展lv# 扩展前[roottest1 ~]# lvscan ACTIVE /dev/rhel/swap [7.88 GiB] inherit ACTIVE /dev/rhel/root [111.00 GiB] inherit # 扩展500G[roottest1 ~]# lvextend -L 500G /dev/rhel/root Size of logical volume rhel/root changed from 111.00 GiB (28416 extents) to 611.00 GiB (156416 extents). Logical volume rhel/root successfully resized.# 验证[roottest1 ~]# lvscan ACTIVE /dev/rhel/swap [7.88 GiB] inherit ACTIVE /dev/rhel/root [611.00 GiB] inherit这时候通过lsblk查看,/root已经扩展到611G空间[roottest1 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 120G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 118.9G 0 part ├─rhel-root 253:0 0 611G 0 lvm / └─rhel-swap 253:1 0 7.9G 0 lvm [SWAP]sdb 8:16 0 500G 0 disk└─rhel-root 253:0 0 611G 0 lvm /sr0 11:0 1 1024M 0 rom 但是通过df命令发现实际并没有正式扩容[roottest1 ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 3.9G 0 3.9G 0% /devtmpfs tmpfs 3.9G 0 3.9G 0% /dev/shmtmpfs tmpfs 3.9G 8.9M 3.9G 1% /runtmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup/dev/mapper/rhel-root xfs 111G 99G 13G 89% //dev/sda1 xfs 1014M 137M 878M 14% /boottmpfs tmpfs 799M 0 799M 0% /run/user/0这里需要用xfs_growfs对逻辑分区做最后调整[roottest1 ~]# xfs_growfs /dev/rhel/rootmeta-data/dev/mapper/rhel-root isize512 agcount4, agsize7274496 blks sectsz512 attr2, projid32bit1 crc1 finobt0 spinodes0data bsize4096 blocks29097984, imaxpct25 sunit0 swidth0 blksnaming version 2 bsize4096 ascii-ci0 ftype1log internal bsize4096 blocks14208, version2 sectsz512 sunit0 blks, lazy-count1realtime none extsz4096 blocks0, rtextents0data blocks changed from 29097984 to 160169984# 验证可以看到这里已经是611G空间大小了。[roottest1 ~]# df -ThFilesystem Type Size Used Avail Use% Mounted ondevtmpfs devtmpfs 3.9G 0 3.9G 0% /devtmpfs tmpfs 3.9G 0 3.9G 0% /dev/shmtmpfs tmpfs 3.9G 8.9M 3.9G 1% /runtmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup/dev/mapper/rhel-root xfs 611G 99G 513G 17% //dev/sda1 xfs 1014M 137M 878M 14% /boottmpfs tmpfs 799M 0 799M 0% /run/user/0需要注意的是针对部分老系统还是用ext3或者ext4的最后一步逻辑分区调整大小的命令有所区别。1、针对的是ext2、ext3、ext4文件系统使用resize2fs 命令。增大和缩小都支持2、针对的是xfs文件系统使用的事xfs_growfs 命令但是只支持增大。至此针对使用lvm文件分区前提下的在线扩容使用完毕对现有业务和应用是没有影响的。生产环境下不建议所需要的空间不应该由缩容其他分区得到而是直接利用IaaS平台的虚拟化手段热添加硬盘。by 2020年10月11日 张诚