知识点
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,在Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷(volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系统。
常用命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 df -hl fdisk -l fdisk /dev/sda lsblk mount /dev/centos/home /home umount /home lvm pvdisplay vgdisplay lvdisplay
实例 压缩home目录并扩容根目录
开始前先备份好home下的文件
1 2 3 4 5 6 7 8 9 10 [root@localhost ~] 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 908M 0 908M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.9M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/mapper/centos-root 59G 2.2G 57G 4% / /dev/sda1 1014M 194M 821M 20% /boot /dev/mapper/centos-home 19G 33M 19G 1% /home tmpfs 184M 0 184M 0% /run/user/0
1 2 3 4 5 6 7 8 yum install -y psmisc fuser -m -v -i -k /home umount /home
fuser参数 1 2 3 4 5 6 7 8 9 10 11 12 fuser --help -a 显示所有命令行中指定的文件,默认情况下被访问的文件才会被显示。 -c 和-m一样,用于POSIX兼容。 -k 杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal -signal 使用指定的信号,而不是用SIGKILL来杀掉进程。可以通过名称或者号码来表示信号(例如-HUP,-1),这个选项要和-k一起使用,否则会被忽略。 -l 列出所有已知的信号名称。 -i 杀掉进程之前询问用户,如果没有-k这个选项会被忽略。 -m name 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/" ,并使用所有挂载在那个目录下面的文件系统。 -n space 指定一个不同的命名空间(space).这里支持不同的空间文件(文件名,此处默认)、tcp(本地tcp端口)、udp(本地udp端口)。对于端口,可以指定端口号或者名称,如果不会引起歧义那么可以使用简单表示的形式,例如:name/space (即形如:80/tcp之类的表示)。 -s 静默模式,这时候-u,-v会被忽略。-a不能和-s一起使用。 -u 在每个PID后面添加进程拥有者的用户名称。 -v 详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.
1 2 3 4 5 6 7 8 lvremove /dev/mapper/centos-home lvextend -L +10G /dev/mapper/centos-root xfs_growfs /dev/mapper/centos-root
查看剩余空间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@localhost /] --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 8 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 78.99 GiB PE Size 4.00 MiB Total PE 20222 Alloc PE / Size 17996 / <70.30 GiB Free PE / Size 2226 / <8.70 GiB VG UUID jBbnow-HGcl-yDVX-dkxc-AuCC-1MqU-meZ9H1
1 2 3 4 5 6 7 8 lvcreate -L 8.6G -n home centos mkfs.xfs /dev/centos/home mount /dev/centos/home /home
如不需要单独home盘,则修改/etc/fstab
注释home文件夹的挂载
1 2 3 4 5 6 7 8 9 10 /dev/mapper/centos-root / xfs defaults 0 0 UUID=323b5d2c-5008-438c-b768-67d351fe5077 /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0
1 2 3 4 5 6 7 8 9 10 [root@localhost /] 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 908M 0 908M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.9M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/mapper/centos-root 69G 2.2G 67G 4% / /dev/sda1 1014M 194M 821M 20% /boot tmpfs 184M 0 184M 0% /run/user/0 /dev/mapper/centos-home 8.6G 33M 8.6G 1% /home
现在可以恢复home的数据
虚拟机扩容磁盘
1 2 3 4 [root@localhost ~] 磁盘 /dev/sda:1099.5 GB, 1099511627776 字节,2147483648 个扇区 ···
新建分区 依次输入fdisk /dev/sda
、p
、n
、p
、w
、reboot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@localhost ~] 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 命令(输入 m 获取帮助):n //新建分区 Partition type : p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p //选择主分区 分区号 (3,4,默认 3): //默认 起始 扇区 (125829120-2147483647,默认为 125829120): //默认 将使用默认值 125829120 Last 扇区, +扇区 or +size{K,M,G} (125829120-2147483647,默认为 2147483647): //默认 将使用默认值 2147483647 分区 3 已设置为 Linux 类型,大小设为 964 GiB 命令(输入 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) 正在同步磁盘。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [root@localhost ~] Physical volume "/dev/sda3" successfully created. [root@localhost ~] Volume group "centos" successfully extended [root@localhost ~] ··· --- Physical volume --- PV Name /dev/sda3 VG Name centos PV Size 964.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 246783 Free PE 246783 Allocated PE 0 PV UUID fYA0Uh-hpi6-pUq6-UHts-aTSw-jXnU-8cb8tl [root@localhost ~] Size of logical volume centos/root changed from <38.30 GiB (9804 extents) to 964.00 GiB (246784 extents). Logical volume centos/root successfully resized. [root@localhost ~] ··· --- Physical volume --- PV Name /dev/sda3 VG Name centos PV Size 964.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 246783 Free PE 0 Allocated PE 246783 PV UUID fYA0Uh-hpi6-pUq6-UHts-aTSw-jXnU-8cb8tl
1 2 3 4 5 6 7 8 9 10 11 [root@localhost ~] meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=2509824 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=10039296, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=4902, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 10039296 to 252706816
查看根目录空间 1 2 3 4 5 6 7 8 9 [root@localhost ~] 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 7.8G 0 7.8G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 9.4M 7.8G 1% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/centos-root 964G 6.8G 958G 1% / /dev/sda1 1014M 194M 821M 20% /boot /dev/mapper/centos-home 19G 33M 19G 1% /home
新增磁盘并扩容根目录
1 2 3 4 5 6 7 [root@localhost ~] 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 ···
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [root@localhost ~] 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x75b4be71 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n //新建磁盘 Partition type : p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p //选择主分区 分区号 (1-4,默认 1): //默认 起始 扇区 (2048-41943039,默认为 2048): //默认 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039): //默认 将使用默认值 41943039 分区 1 已设置为 Linux 类型,大小设为 20 GiB 命令(输入 m 获取帮助):w //保存并退出 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [root@localhost ~] Physical volume "/dev/sdb1" successfully created. [root@localhost ~] Volume group "centos" successfully extended [root@localhost ~] Size of logical volume centos/root changed from <68.30 GiB (17484 extents) to <88.39 GiB (22627 extents). Logical volume centos/root successfully resized. [root@localhost ~] meta-data=/dev/mapper/centos-root isize=512 agcount=8, agsize=2509824 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=17903616, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=4902, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 17903616 to 23170048 [root@localhost ~] 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 908M 0 908M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.9M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/mapper/centos-root 89G 2.2G 87G 3% / /dev/mapper/centos-home 8.6G 33M 8.6G 1% /home /dev/sda1 1014M 194M 821M 20% /boot tmpfs 184M 0 184M 0% /run/user/0