在平时的开发工作中,经常会创建磁盘不足够大的虚拟机,然后往集群里面写一些数据导致磁盘满了。手动编辑虚拟机的磁盘大小是不会文件系统识别的,大多数同学只能无奈的重新装OS
,这里我介绍一种基于LVM
实现动态的方式。
LVM了解
LVM
是逻辑盘卷管理(LogicalVolumeManager
)的简称,它是Linux
环境下对磁盘分区进行管理的一种机制,LVM
是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组(volumegroup
),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes
),并进一步在逻辑卷组上创建文件系统。管理员通过LVM
可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配。
查看分区
当前默认只有一个采用lvm
的分区,一开始sda
磁盘容量为16G
,后来发现不够用了,编辑磁盘大小为50G
,但是可以发现这50G
并没有起到扩展分区容量的效果。
123456789101112131415 |
[[email protected] ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_tonyplay-lv_root 14G 3.4G 9.6G 26% /tmpfs 1.9G 72K 1.9G 1% /dev/shm/dev/sda1 477M 42M 410M 10% /boot [[email protected] ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 1024M 0 rom sda 8:0 0 50G 0 disk ├─sda1 8:1 0 500M 0 part /boot└─sda2 8:2 0 15.5G 0 part ├─vg_tonyplay-lv_root (dm-0) 253:0 0 13.9G 0 lvm / └─vg_tonyplay-lv_swap (dm-1) 253:1 0 1.6G 0 lvm [SWAP] |
分区
可以通过新增一块其他磁盘来扩容,我这边采取的是增大当前磁盘的容量实现扩容。
有时候因为系统设备处于繁忙状态,所以分区需要重启后才会生效。
123456789101112131415161718192021222324252627 |
[[email protected] ~]# fdisk /dev/sdaWARNING: 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): nCommand action e extended p primary partition (1-4)pPartition number (1-4): 3First cylinder (2089-6527, default 2089): // 直接回车,用默认值就可以了Using default value 2089Last cylinder, +cylinders or +size{K,M,G} (2089-6527, default 6527): // 直接回车,用默认值就可以了Using default value 6527Command (m for help): wThe partition table has been altered! # 可以看到新建的分区sda3已结被创建出来了,采取默认值会将剩余所有空间都分到分区中[[email protected] ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 1024M 0 rom sda 8:0 0 50G 0 disk ├─sda1 8:1 0 500M 0 part /boot├─sda2 8:2 0 15.5G 0 part │ ├─vg_tonyplay-lv_root (dm-0) 253:0 0 13.9G 0 lvm /│ └─vg_tonyplay-lv_swap (dm-1) 253:1 0 1.6G 0 lvm [SWAP]└─sda3 8:3 0 34G 0 part |
查看当前文件系统
当前文件系统为ext4
12345678 |
[[email protected] ~]# mount/dev/mapper/vg_tonyplay-lv_root on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type sysfs (rw)devpts on /dev/pts type devpts (rw,gid=5,mode=620)tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")/dev/sda1 on /boot type ext4 (rw)none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) |
为新分区创建文件系统
123456789101112131415161718192021222324 |
[[email protected] ~]# sudo mkfs.ext4 /dev/sda3mke2fs 1.41.12 (17-May-2010)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks2228224 inodes, 8912727 blocks445636 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=4294967296272 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624 Writing inode tables: done Creating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done This filesystem will be automatically checked every 39 mounts or180 days, whichever comes first. Use tune2fs -c or -i to override. |
查看卷组信息
123456789101112131415161718192021 |
[[email protected] ~]# vgdisplay --- Volume group --- VG Name vg_tonyplay // 卷组名在下面扩展中会用到 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 15.51 GiB PE Size 4.00 MiB Total PE 3970 Alloc PE / Size 3970 / 15.51 GiB Free PE / Size 0 / 0 VG UUID Y9usSM-nDU5-ZAUd-Y3Te-u5Pd-uFBr-gcYHf0 |
创建新物理卷
12 |
[[email protected] ~]# pvcreate /dev/sda3 Physical volume "/dev/sda3" successfully created |
扩展到卷组
12 |
vgextend vg_tonyplay /dev/sda3 // 卷组名在查看卷组信息中 Volume group "vg_tonyplay" successfully extended |
查看逻辑分区
/dev/vg_tonyplay/lv_root
就是根分区,也是我们要扩展的分区。
12345678910111213141516171819202122232425262728293031323334 |
[[email protected] ~]# lvdisplay --- Logical volume --- LV Path /dev/vg_tonyplay/lv_root // 根分区 LV Name lv_root VG Name vg_tonyplay LV UUID IPd7lm-Sx8g-pe7k-llNL-j1wc-mbA2-2cAdsy LV Write Access read/write LV Creation host, time tony-play, 2017-04-10 17:58:53 -0400 LV Status available # open 1 LV Size 13.91 GiB Current LE 3561 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/vg_tonyplay/lv_swap LV Name lv_swap VG Name vg_tonyplay LV UUID qX637q-iD6i-8blp-hmmS-MvLy-xZ0y-b4D0BF LV Write Access read/write LV Creation host, time tony-play, 2017-04-10 17:59:07 -0400 LV Status available # open 1 LV Size 1.60 GiB Current LE 409 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 |
扩展容量到逻辑分区
123 |
[[email protected] ~]# lvextend /dev/vg_tonyplay/lv_root /dev/sda3 Size of logical volume vg_tonyplay/lv_root changed from 13.91 GiB (3561 extents) to 47.91 GiB (12264 extents). Logical volume lv_root successfully resized |
刷新逻辑分区容量使扩展生效
ext4
用resize2fs
,xfs
用xfs_growfs
123456 |
[[email protected] ~]# resize2fs /dev/vg_tonyplay/lv_rootresize2fs 1.41.12 (17-May-2010)Filesystem at /dev/vg_tonyplay/lv_root is mounted on /; on-line resizing requiredold desc_blocks = 1, new_desc_blocks = 3Performing an on-line resize of /dev/vg_tonyplay/lv_root to 12558336 (4k) blocks.The filesystem on /dev/vg_tonyplay/lv_root is now 12558336 blocks long. |
查看逻辑分区容量
可以发现/dev/mapper/vg_tonyplay-lv_root
已经从开始的14G
扩展到了48G
。ok,这就说明大功告成了,再也不用通过重装系统这种蹩脚的方式扩容了
123456 |
[[email protected] ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg_tonyplay-lv_root 48G 3.4G 42G 8% /tmpfs 1.9G 72K 1.9G 1% /dev/shm/dev/sda1 477M 42M 410M 10% /boot |
小结
至此,lvm
扩容工作的过程应该是比较清楚了,之后有机会的话我会再补充一下LVM
的压缩、删除等操作过程。
原文地址:https://www.cnblogs.com/chinatrump/p/11584600.html