公司的测试服务器用了好久了,里面文件很多,硬盘只有50G,应为是测试的,管理就没有那么严格,导致文件、日志越来越多。
一开始我手动清除日志,后来发现这样太麻烦了,而且我还感觉这机器里有脏东西,清理不掉。
于是开始扩容,一劳永逸。
LVM(Logical Volume Manager
)中文名叫逻辑卷管理器,它是Linux下对逻辑卷进行管理的一套程序,LVM分区,就是LVM管理下的一个逻辑卷。LVM通常涉及下面几个术语:
PP(physical Partition)
物理分区,通常指硬盘中的主分区,逻辑分区。严格来讲整个硬盘或者其他能存东西的物理介质包括网络存储也能作为一个物理分区,但一定是有实物的
PV(Physical Volume)
物理卷,就是在PP(物理分区)的基础上,使用pvcreate
指令写入一些数据,转换为可供LVM识别后的物理介质。
VG(Volumes Group)
卷组,由一个或多个PV组成的一个分组,形成一大块存储空间
LV(Logical Volume)
逻辑卷,也就是LVM分区,在VG上划分一块空间称为逻辑卷,一个VG上只要还有空间就可以建立多个LV。在逻辑卷之上可以建立文件系统(ext3、ext4等),然后即可把数据存到分区里
PE(Physical Extent)
具有唯一编号的PE是可以被LVM寻址的最小单元,其大小是在创建VG时确定的,默认为4MB(可通过vgcreate -s
指定)。一个VG包含N个PE,从VG上划分一块空间作为LV时就是把其中一部分数量的PE标记为该LV。
它们之间的关系,可以简单地概括为:一块硬盘,被分成了几个分区(PP),然后把PP转换为PV,多个PV可以组成一个VG。组成VG后,就得到了一块很大的空间,它的大小是以PE的来衡量的。现在从VG上划分一块空间形成一个LV,然后就可以在LV上创建文件系统,进行读写数据。
[root@test ]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom xvdb 202:16 0 200G 0 disk ├─xvdb1 202:17 0 1G 0 part /boot └─xvdb2 202:18 0 49G 0 part ├─centos-root 253:0 0 44G 0 lvm / └─centos-swap 253:1 0 5G 0 lvm [SWAP] xvdc 202:32 0 1000G 0 disk └─vgdata-lvdata 253:2 0 1000G 0 lvm /data xvde 202:64 0 300G 0 disk
[root@test ]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom xvdb 202:16 0 200G 0 disk ├─xvdb1 202:17 0 1G 0 part /boot ├─xvdb2 202:18 0 49G 0 part │ ├─centos-root 253:0 0 44G 0 lvm / │ └─centos-swap 253:1 0 5G 0 lvm [SWAP] └─xvdb3 202:19 0 150G 0 part xvdc 202:32 0 1000G 0 disk └─vgdata-lvdata 253:2 0 1000G 0 lvm /data xvde 202:64 0 300G 0 disk
[root@test ]# pvdisplay --- Physical volume --- PV Name /dev/xvdb2 VG Name centos PV Size <49.00 GiB / not usable 3.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 12543 Free PE 0 Allocated PE 12543 PV UUID v7J4mo-Mndt-YsZD-eTRk-ixig-K25C-YhFEmh --- Physical volume --- PV Name /dev/xvdc VG Name vgdata PV Size 1000.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 255999 Free PE 0 Allocated PE 255999 PV UUID sYis9g-BmiM-17JW-xBHY-XogK-yoYF-Cy7pD9
[root@test ]# vgdisplay --- Volume group --- VG Name centos 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 <49.00 GiB PE Size 4.00 MiB Total PE 12543 Alloc PE / Size 12543 / <49.00 GiB Free PE / Size 0 / 0 VG UUID 5ezkm8-5kuT-0Vs0-nqMH-9PxQ-906t-wd20Y6 --- Volume group --- VG Name vgdata System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <1000.00 GiB PE Size 4.00 MiB Total PE 255999 Alloc PE / Size 255999 / <1000.00 GiB Free PE / Size 0 / 0 VG UUID y5rGh6-NPQ3-nvxJ-ytcO-M5La-51Y3-xjrFgA
[root@test ]# lvdisplay --- Logical volume --- LV Path /dev/centos/swap LV Name swap VG Name centos LV UUID qHsQZq-BuTH-PtOV-oz0V-as4m-8lo3-df2LRd LV Write Access read/write LV Creation host, time localhost, 2017-11-03 13:59:29 +0800 LV Status available # open 2 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:1 --- Logical volume --- LV Path /dev/centos/root LV Name root VG Name centos LV UUID gXT5ql-cQEr-azsh-SsoZ-RDri-Px1a-9NFzw1 LV Write Access read/write LV Creation host, time localhost, 2017-11-03 13:59:29 +0800 LV Status available # open 1 LV Size <44.00 GiB Current LE 11263 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 --- Logical volume --- LV Path /dev/vgdata/lvdata LV Name lvdata VG Name vgdata LV UUID vq3i0C-8Dfp-PEsX-I6dK-nf1q-CU4h-RG0Apj LV Write Access read/write LV Creation host, time test, 2017-11-07 10:54:36 +0800 LV Status available # open 1 LV Size <1000.00 GiB Current LE 255999 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
PV Name /dev/xvdb2
VG Name centos
LV Name root
fdisk 创建分区
[root@test ]# fdisk /dev/xvdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types 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 u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) 命令(输入 m 获取帮助):p 磁盘 /dev/xvdb:214.7 GB, 214748364800 字节,419430400 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000bdf76 设备 Boot Start End Blocks Id System /dev/xvdb1 * 2048 2099199 1048576 83 Linux /dev/xvdb2 2099200 104857599 51379200 8e Linux LVM 命令(输入 m 获取帮助):n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p 分区号 (3,4,默认 3):3 起始 扇区 (104857600-419430399,默认为 104857600): 将使用默认值 104857600 Last 扇区, +扇区 or +size{K,M,G} (104857600-419430399,默认为 419430399): 将使用默认值 419430399 分区 3 已设置为 Linux 类型,大小设为 150 GiB 命令(输入 m 获取帮助):t 分区号 (1-3,默认 3):3 Hex 代码(输入 L 列出所有代码):8e 已将分区“Linux”的类型更改为“Linux LVM” 命令(输入 m 获取帮助):p 磁盘 /dev/xvdb:214.7 GB, 214748364800 字节,419430400 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000bdf76 设备 Boot Start End Blocks Id System /dev/xvdb1 * 2048 2099199 1048576 83 Linux /dev/xvdb2 2099200 104857599 51379200 8e Linux LVM /dev/xvdb3 104857600 419430399 157286400 8e Linux LVM 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) 正在同步磁盘。
重新探测分区
[root@test ]# partprobe /dev/xvdb
查看分区
[root@test ]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom xvdb 202:16 0 200G 0 disk ├─xvdb1 202:17 0 1G 0 part /boot ├─xvdb2 202:18 0 49G 0 part │ ├─centos-root 253:0 0 44G 0 lvm / │ └─centos-swap 253:1 0 5G 0 lvm [SWAP] └─xvdb3 202:19 0 150G 0 part xvdc 202:32 0 1000G 0 disk └─vgdata-lvdata 253:2 0 1000G 0 lvm /data xvde 202:64 0 300G 0 disk
创建PV
[root@test ]# pvcreate /dev/xvdb3 Physical volume "/dev/xvdb3" successfully created.
[root@test ]# vgextend centos /dev/xvdb3 Volume group "centos" successfully extended
[root@test ]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 198.99 GiB PE Size 4.00 MiB Total PE 50942 Alloc PE / Size 12543 / <49.00 GiB Free PE / Size 38399 / <150.00 GiB VG UUID 5ezkm8-5kuT-0Vs0-nqMH-9PxQ-906t-wd20Y6 --- Volume group --- VG Name vgdata System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size <1000.00 GiB PE Size 4.00 MiB Total PE 255999 Alloc PE / Size 255999 / <1000.00 GiB Free PE / Size 0 / 0 VG UUID y5rGh6-NPQ3-nvxJ-ytcO-M5La-51Y3-xjrFgA
使用百分比扩容LV
[root@test ]# lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from <44.00 GiB (11263 extents) to 193.99 GiB (49662 extents). Logical volume centos/root successfully resized.
扩容文件系统
ext3/ext4
resize2fs
xfs
xfs_growfs
[root@test ]# xfs_growfs /dev/centos/root meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2883328 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=11533312, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=5631, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 11533312 to 50853888
查看磁盘情况
[root@test ]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 194G 44G 151G 23% / devtmpfs devtmpfs 5.8G 0 5.8G 0% /dev tmpfs tmpfs 5.8G 0 5.8G 0% /dev/shm tmpfs tmpfs 5.8G 65M 5.8G 2% /run tmpfs tmpfs 5.8G 0 5.8G 0% /sys/fs/cgroup /dev/xvdb1 xfs 1014M 142M 873M 15% /boot /dev/mapper/vgdata-lvdata ext4 985G 677G 258G 73% /data tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/1001 tmpfs tmpfs 1.2G 0 1.2G 0% /run/user/0