LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。
指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.比如,如果你有两个60GB硬盘,你能生成120GB的逻辑卷.
当你写数据到此逻辑卷中时,文件系统能将数据放置到多个物理卷中.对于大量连接读写操作,他能改善数据I/O效率.
映像在不同的设备上保存一致的数据.数据同时被写入原设备及映像设备.他提供设备之间的容错。
快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,他复制一份对当前数据区域的改动,由于他优先执行这些改动,所以他能重构当前设备的状态。
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中相同,逻辑卷及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。
首先确定系统中是否安装了LVM工具:
如果出现以上信息,说明系统已经安装了LVM管理工具;如果未安装使用命令:yum install lvm -y
进行安装
要创建一个LVM系统,一般需要经过以下步骤:
[root@loaclhost ~]# uname -r 查看系统版本号信息
3.10.0-327.el7.x86_64
[root@loaclhost ~]# cat /etc/redhat-release 查看红帽系统版本
Red Hat Enterprise Linux Server release 7.2 (Maipo)
[root@loaclhost ~]# df -h 查看磁盘使用信息
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 20G 3.6G 16G 19% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 993M 88K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 123M 74M 63% /boot
tmpfs 199M 16K 199M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
[root@loaclhost ~]# fdisk -l 查看磁盘有几个分区
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
三个分区是虚拟机创建的时候添加的那三个/、boot、swap
首先从磁盘上创建三个分区,磁盘大小都为5G.因为磁盘只剩下18.3G的扩展分区可以使用(从后面可以看见)。使用命令fdisk /dev/sda添加分区,注意扩展分区是不能直接使用的,我们应该在扩展分区中建立新的分区才能使用。
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (45467648-83886079,默认为 45467648):
将使用默认值 45467648
Last 扇区, +扇区 or +size{K,M,G} (45467648-83886079,默认为 83886079):
将使用默认值 83886079
分区 4 已设置为 Extended 类型,大小设为 18.3 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (45469696-83886079,默认为 45469696):
将使用默认值 45469696
Last 扇区, +扇区 or +size{K,M,G} (45469696-83886079,默认为 83886079):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 6
起始 扇区 (55957504-83886079,默认为 55957504):
将使用默认值 55957504
Last 扇区, +扇区 or +size{K,M,G} (55957504-83886079,默认为 83886079):+5G
分区 6 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 7
起始 扇区 (66445312-83886079,默认为 66445312):
将使用默认值 66445312
Last 扇区, +扇区 or +size{K,M,G} (66445312-83886079,默认为 83886079):+5G
分区 7 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
分区类型
/dev/sda1 * 2048 411647 204800 83 Linux
标准分区
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
交换分区
/dev/sda4 45467648 83886079 19209216 5 Extended
扩展分区
/dev/sda5 45469696 55955455 5242880 83 Linux
/dev/sda6 55957504 66443263 5242880 83 Linux
/dev/sda7 66445312 76931071 5242880 83 Linux
下面三个分区是新建的LVM分区,所以要改ID,分区类型,LVM的ID为8e
命令(输入 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 更改ID值
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):l
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 隐藏的 NTFS Win 82 Linux 交换 / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 隐藏的 C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM
df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad 休 eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 隐藏的 FAT16 ❤️ 61 SpeedStor ab Darwin 启动 f2 DOS 次要
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fd Linux raid 自动
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fe LANstep
1c 隐藏的 W95 FAT3 75 PC/IX be Solaris 启动 ff BBT
1e 隐藏的 W95 FAT1 80 旧 Minix
命令(输入 m 获取帮助):t
分区号 (1-7,默认 7):5
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-7,默认 7):6
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):t
分区号 (1-7,默认 7):7
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
/dev/sda4 45467648 83886079 19209216 5 Extended
/dev/sda5 45469696 55955455 5242880 8e Linux LVM
/dev/sda6 55957504 66443263 5242880 8e Linux LVM
/dev/sda7 66445312 76931071 5242880 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 这是6版本之前使用的命令,执行三次(8)
正在同步磁盘。
现在默认使用的依然是就得分区,所以需要在同步一下。
[root@loaclhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@loaclhost ~]# pvcreate /dev/sda{5,6,7}
Physical volume “/dev/sda5” successfully created
Physical volume “/dev/sda6” successfully created
Physical volume “/dev/sda7” successfully created
有了物理卷之后可以将分区拼凑成一块,现在想将5,6分区拼凑。
[root@loaclhost ~]# pvs
显示物理卷的相关信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 --- 5.00g 5.00g
/dev/sda6 lvm2 --- 5.00g 5.00g
/dev/sda7 lvm2 --- 5.00g 5.00g
也可以用命令pvdisplay
查看详细信息,一般使用pvs
就可以了
[root@loaclhost ~]# pvdisplay
查看物理卷卷组的详细信息
"/dev/sda5" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda5
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 1stLrw-rHx0-zWfR-eVqT-VSwI-F2hO-zHQyzm
"/dev/sda6" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda6
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID EjzQr2-rXtL-6lUu-QPoI-8zMn-laVN-48jXGp
"/dev/sda7" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda7
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 0r4Tal-tbli-RECK-Fl4g-UuL3-H67u-KNAoHQ
将新创建的两个分区/dev/sda5 /dev/sda6转化为物理卷,主要是添加LVM属性信息并划分PE存储单元。创建卷组pvgdata(名字),并将刚才创建好的两个物理卷加入该卷组。可以看出默认PE大小为4MB,PE是卷组的最小存储单元。
[root@loaclhost ~]# vgcreate pvgdata /dev/sda5 /dev/sda6
Volume group “pvgdata” successfully created
[root@loaclhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
pvgdata 2 0 0 wz--n- 9.99g 9.99g
[root@loaclhost ~]# vgdisplay
--- Volume group ---
VG Name pvgdata
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 9.99 GiB
PE Size 4.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID 1SgmBD-R7no-7PSd-kNIo-L56c-nsIy-fDTmGZ
两个分区整合之后差不多就是10G。有一定误差不影响,只要再范围之内。
从物理卷pvgdata上分割9G给新的逻辑卷lvdata1.
[root@loaclhost ~]# lvcreate -n lvdata1 -L 9G pvgdata
Logical volume “lvdata1” created.
[root@loaclhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvdata1 pvgdata -wi-a----- 9.00g
使用mkfs.ext4
命令在逻辑卷lvdata1上创建ext4文件系统.就是给它格式化。ext4这种格式可以缩小,7版本之后其他文件类型都不可以,因为文件缩小可能导致里面的数据丢失。
[root@loaclhost ~]# mkfs.ext4 /dev/pvgdata/lvdata1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
589824 inodes, 2359296 blocks
117964 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
72 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
将创建好的文件系统/lvdata1挂载到/lvdata1上。
[root@loaclhost ~]# mkdir /lvdata1
[root@loaclhost ~]# mount /dev/pvgdata/lvdata1 /lvdata1
[root@loaclhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 20G 3.6G 16G 19% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 993M 88K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 123M 74M 63% /boot
tmpfs 199M 16K 199M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/mapper/pvgdata-lvdata1 8.8G 37M 8.3G 1% /lvdata1
[root@loaclhost ~]# ll /dev/pvgdata/lvdata1
lrwxrwxrwx. 1 root root 7 4月 5 16:44 /dev/pvgdata/lvdata1 -> …/dm-0
便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到 /etc/fstab 里面。使用blkid
查看UUID。
[root@loaclhost ~]# blkid
/dev/sda1: UUID=“1a274abb-200f-447f-9514-4ce30c60e512” TYPE=“xfs”
/dev/sda2: UUID=“dbc2f8f6-c130-45a3-9927-b3dbd1626ed4” TYPE=“xfs”
/dev/sda3: UUID=“aec7bdd6-e1a7-4eb7-bba0-f28a9a692df7” TYPE=“swap”
/dev/sda5: UUID=“1stLrw-rHx0-zWfR-eVqT-VSwI-F2hO-zHQyzm” TYPE=“LVM2_member”
/dev/sda6: UUID=“EjzQr2-rXtL-6lUu-QPoI-8zMn-laVN-48jXGp” TYPE=“LVM2_member”
/dev/sda7: UUID=“0r4Tal-tbli-RECK-Fl4g-UuL3-H67u-KNAoHQ” TYPE=“LVM2_member”
/dev/sr0: UUID=“2015-10-30-11-11-49-00” LABEL=“RHEL-7.2 Server.x86_64” TYPE=“iso9660” PTTYPE=“dos”
/dev/mapper/pvgdata-lvdata1:UUID="66b778e7-e928-48e0-9915-bccbfa6c8db3" TYPE="ext4"
[root@loaclhost ~]# vim /etc/fstab
为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷lvdata1,然后使用mount -a使内核重新读取/etc/fstab,看是否能够自动挂载。
[root@loaclhost ~]# umount /lvdata1/
[root@loaclhost ~]# mount -a
[root@loaclhost ~]# mount | grep lvdata1
/dev/mapper/pvgdata-lvdata1 on /lvdata1 type ext4 (rw,relatime,seclabel,data=ordered)
给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend -L +500M /dev/pvgdata/lvdata1
-L表示要扩展的大小,数字前面带+,表示在原来的基础上扩展数字那么大,不带+就是将它设置成数字那么大。或者lvextend -L 2.5G /dev/pvgdata/lvdata1
,设置完成后,记得使用resize2fs命令来同步文件系统。PS:上面的500跟2.5只是示例,真实配置根据情况定。
[root@loaclhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda6 pvgdata lvm2 a-- 5.00g 1016.00m
/dev/sda7 lvm2 --- 5.00g 5.00g
[root@loaclhost ~]# vgextend pvgdata /dev/sda7
Volume group "pvgdata" successfully extended
[root@loaclhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda6 pvgdata lvm2 a-- 5.00g 1016.00m
/dev/sda7 pvgdata lvm2 a-- 5.00g 5.00g
[root@loaclhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
pvgdata 3 1 0 wz--n- 14.99g 5.99g
[root@loaclhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvdata1 pvgdata -wi-ao---- 9.00g
[root@loaclhost ~]# lvextend -L +2G /dev/pvgdata/lvdata1
Size of logical volume pvgdata/lvdata1 changed from 9.00 GiB (2304 extents) to 11.00 GiB (2816 extents).
Logical volume lvdata1 successfully resized.
[root@loaclhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lvdata1 pvgdata -wi-ao---- 11.00g
[root@loaclhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 20G 3.6G 16G 19% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 993M 88K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 123M 74M 63% /boot
tmpfs 199M 16K 199M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/mapper/pvgdata-lvdata1 8.8G 37M 8.3G 1% /lvdata1
[root@loaclhost ~]# resize2fs /dev/pvgdata/lvdata1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/pvgdata/lvdata1 is mounted on /lvdata1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/pvgdata/lvdata1 is now 2883584 blocks long.
[root@loaclhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 20G 3.6G 16G 19% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 993M 88K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 123M 74M 63% /boot
tmpfs 199M 16K 199M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /mnt
/dev/mapper/pvgdata-lvdata1 11G 41M 11G 1% /lvdata1
如果文件使用的是xfs格式,命令:xfs_growfs /dev/pvgdata/lvdata1
因为上面的分区都已经使用了,所以下面先创建一个分区8,然后将创建好的分区加入到已经存在的卷组pvgdata中,通过pvs命令查看是否成功。
[root@loaclhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 8
起始 扇区 (76933120-83886079,默认为 76933120):
将使用默认值 76933120
Last 扇区, +扇区 or +size{K,M,G} (76933120-83886079,默认为 83886079):+1G
分区 8 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t
分区号 (1-8,默认 8):
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“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@loaclhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@loaclhost ~]# vgextend pvgdata /dev/sda8
Physical volume "/dev/sda8" successfully created
Volume group "pvgdata" successfully extended
[root@loaclhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda6 pvgdata lvm2 a-- 5.00g 0
/dev/sda7 pvgdata lvm2 a-- 5.00g 3.99g
/dev/sda8 pvgdata lvm2 a-- 1020.00m 1020.00m
步骤如下:
①先卸载逻辑卷lvdata1
②然后通过e2fsck命令检测逻辑卷上的剩余空间。
③使用resize2fs将文件系统减少到7G。
④再使用lvreduce命令将逻辑卷减少到7G。
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,那数据就会出问题。
[root@loaclhost ~]# umount /lvdata1
[root@loaclhost ~]# e2fsck -f /dev/mapper/pvgdata-lvdata1
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/mapper/pvgdata-lvdata1: 11/720896 files (0.0% non-contiguous), 88276/2883584 blocks
[root@localhost ~]# resize2fs /dev/mapper/pvgdata-lvdata1 7G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/pvgdata-lvdata1 to 1835008 (4k) blocks.
The filesystem on /dev/mapper/pvgdata-lvdata1 is now 1835008 blocks long.
[root@localhost ~]# lvreduce -L 7G /dev/pvgdata/lvdata1
WARNING: Reducing active logical volume to 7.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvdata1? [y/n]: y
Size of logical volume pvgdata/lvdata1 changed from 11.00 GiB (2816 extents) to 7.00 GiB (1792 extents).
Logical volume lvdata1 successfully resized.
完成之后,就可以通过mount命令挂载重新使用了。
[root@localhost ~]# mount /dev/pvgdata/lvdata1 /lvdata1
[root@localhost ~]# mount | grep lvdata1
/dev/mapper/vgdata-lvdata1 on /data1 type ext4 (rw,relatime,seclabel,data=ordered)
(1)通过pvmove命令转移空间数据
(2)通过vgreduce命令即将坏的磁盘或者分区从卷组pvgdata里面移除出去。
(3)通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda6 pvgdata lvm2 a-- 5.00g 2.99g
/dev/sda7 pvgdata lvm2 a-- 5.00g 5.00g
/dev/sda8 pvgdata lvm2 a-- 1020.00m 1020.00m
[root@localhost ~]# pvmove /dev/sda6 /dev/sda7
/dev/sda6: Moved: 2.1%
/dev/sda6: Moved: 40.0%
/dev/sda6: Moved: 74.3%
/dev/sda6: Moved: 100.0%
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda6 pvgdata lvm2 a-- 5.00g 5.00g
/dev/sda7 pvgdata lvm2 a-- 5.00g 2.99g
/dev/sda8 pvgdata lvm2 a-- 1020.00m 1020.00m
[root@localhost ~]# vgreduce pvgdata /dev/sda6
Removed “/dev/sda6” from volume group “pvgdata”
[root@localhost ~]# pvremove /dev/sda6
Labels on physical volume “/dev/sda6” successfully wiped
(4)手工拆除硬盘或者通过一些工具修复分区。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 pvgdata lvm2 a-- 5.00g 0
/dev/sda7 pvgdata lvm2 a-- 5.00g 2.99g
/dev/sda8 pvgdata lvm2 a-- 1020.00m 1020.00m
(1)先通过umount命令卸载掉逻辑卷lvdata1
(2)修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。
(3)通过lvremove删除逻辑卷lvdata1
(4)通过vgremove删除卷组pvgdata
(5)通过pvremove将物理卷转化成普通分区
[root@localhost ~]# umount /dev/mapper/pvgdata-lvdata1
[root@localhost ~]# lvremove /dev/pvgdata/lvdata1
Do you really want to remove active logical volume lvdata1? [y/n]: y
Logical volume “lvdata1” successfully removed
[root@localhost ~]# vgremove pvgdata
Volume group “pvgdata” successfully removed
[root@localhost ~]# pvremove /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8
Labels on physical volume “/dev/sda5” successfully wiped
No PV label found on /dev/sda6.
Labels on physical volume “/dev/sda7” successfully wiped
Labels on physical volume “/dev/sda8” successfully wiped
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
/dev/sda4 45467648 83886079 19209216 5 Extended
/dev/sda5 45469696 55955455 5242880 8e Linux LVM
/dev/sda6 55957504 66443263 5242880 8e Linux LVM
/dev/sda7 66445312 76931071 5242880 8e Linux LVM
/dev/sda8 76933120 79030271 1048576 8e Linux LVM
命令(输入 m 获取帮助):d
分区号 (1-8,默认 8):
分区 8 已删除
命令(输入 m 获取帮助):d
分区号 (1-7,默认 7):
分区 7 已删除
命令(输入 m 获取帮助):d
分区号 (1-6,默认 6):
分区 6 已删除
命令(输入 m 获取帮助):d
分区号 (1-5,默认 5):
分区 5 已删除
命令(输入 m 获取帮助):d
分区号 (1-4,默认 4):
分区 4 已删除
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
命令(输入 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@localhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
swap分区称之为交换分区,相当于windows系统下的虚拟内存。作用就是当我们系统中的内粗不够用的时候,可以通过swap来增加内存。安装linux系统的时候,必须的两个分区一个是根,一个是swap。如果安装系统的时候,swap分区分小了的话,需要增加,那么接下来的内容就是这个:swap分区的创建/扩展。
有两种方法供我们选择
前提就是磁盘还有剩余空间没有划分,或者是已经划分的分区没有使用。这个时候才能使用此方法。
实现步骤:新建分区—修改ID号为82—格式化—启用swap分区—写入fstab文件
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (45467648-83886079,默认为 45467648):
将使用默认值 45467648
Last 扇区, +扇区 or +size{K,M,G} (45467648-83886079,默认为 83886079):
将使用默认值 83886079
分区 4 已设置为 Extended 类型,大小设为 18.3 GiB
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (45469696-83886079,默认为 45469696):
将使用默认值 45469696
Last 扇区, +扇区 or +size{K,M,G} (45469696-83886079,默认为 83886079):+1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00079ee8
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 411647 204800 83 Linux
/dev/sda2 411648 41371647 20480000 83 Linux
/dev/sda3 41371648 45467647 2048000 82 Linux swap / Solaris
/dev/sda4 45467648 83886079 19209216 5 Extended
/dev/sda5 45469696 47566847 1048576 82 Linux swap / Solaris
命令(输入 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@localhost ~]# partx /dev/sda
NR START END SECTORS SIZE NAME UUID
1 2048 411647 409600 200M
2 411648 41371647 40960000 19.5G
3 41371648 45467647 4096000 2G
4 45467648 83886079 38418432 18.3G
5 45469696 47566847 2097152 1G
[root@localhost ~]# mkswap /dev/sda5
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=5cd23db4-7c39-4f6e-b457-7a683050e3a1
[root@localhost ~]# swapon /dev/sda5
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1985 615 713 10 656 1112
Swap: 3023 0 3023
激活前的忘了看,就是多了一个G
既然使用的是分区的剩余空间,就要找一个空间大的分区来进行下面的操作
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 20G 3.6G 16G 19% /
devtmpfs 979M 0 979M 0% /dev
tmpfs 993M 88K 993M 1% /dev/shm
tmpfs 993M 9.0M 984M 1% /run
tmpfs 993M 0 993M 0% /sys/fs/cgroup
/dev/sda1 197M 123M 74M 63% /boot
tmpfs 199M 16K 199M 1% /run/user/0
/dev/sr0 3.8G 3.8G 0 100% /run/media/root/RHEL-7.2 Server.x86_64
[root@localhost ~]# dd if=/dev/zero of=/swapfile bs=1M count=256
记录了256+0 的读入
记录了256+0 的写出
268435456字节(268 MB)已复制,3.33247 秒,80.6 MB/秒
[root@localhost ~]# ll -h /swapfile
-rw-r–r--. 1 root root 256M 4月 6 16:05 /swapfile
[root@localhost ~]# mkswap /swapfile
正在设置交换空间版本 1,大小 = 262140 KiB
无标签,UUID=4c04314e-3cb6-4ebc-a9f3-b04fcdfda284
[root@localhost ~]# swapon /swapfile
[root@localhost ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/sda3 partition 2047996 0 -1
/dev/sda5 partition 1048572 0 -2
这里是数字越大,优先级越高。要更改他们的优先级也很简单,只需要在fstab中增加pri参数就可以。注意,这个pri后面的数值不能是负数!/etc/fstab修改的主要内容如下:
注意:不是必要情况下,系统默认的最好。
为了使设置生效,需要先关闭swap再开启。
其实在正常情况下,我们不需要增大swap分区,也不需要调整优先级。