2019-04-06 16:28:36 yangyuCISCO 阅读数 62

文章目录

LVM

概念

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管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
在这里插入图片描述

LVM基本术语

1、物理存储介质(PhysicalStorageMedia)

指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。

2、物理卷(Physical Volume,PV)

指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

3、卷组(Volume Group,VG)

类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。

4、逻辑卷(Logical Volume,LV)

类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。

5、物理块(Physical Extent,PE)

每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。

6、逻辑块(Logical Extent,LE)

逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

7、线性逻辑卷 (Linear Volumes)

一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.比如,如果你有两个60GB硬盘,你能生成120GB的逻辑卷.

8、条块化的逻辑卷(Striped Logical Volumes)

当你写数据到此逻辑卷中时,文件系统能将数据放置到多个物理卷中.对于大量连接读写操作,他能改善数据I/O效率.

9、映像的逻辑卷(Mirrored Logical Volumes)

映像在不同的设备上保存一致的数据.数据同时被写入原设备及映像设备.他提供设备之间的容错。

10、快照卷(Snapshot Volumes)

快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,他复制一份对当前数据区域的改动,由于他优先执行这些改动,所以他能重构当前设备的状态。

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中相同,逻辑卷及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

安装LVM

首先确定系统中是否安装了LVM工具:
在这里插入图片描述
如果出现以上信息,说明系统已经安装了LVM管理工具;如果未安装使用命令:yum install lvm -y进行安装

创建和管理LVM

要创建一个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

1、创建分区

首先从磁盘上创建三个分区,磁盘大小都为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 已按照只读方式打开。

2、创建物理卷

[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)

逻辑卷lvdata1不够用,怎么扩展

给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令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分区不够的情况下,如何增加

swap分区称之为交换分区,相当于windows系统下的虚拟内存。作用就是当我们系统中的内粗不够用的时候,可以通过swap来增加内存。安装linux系统的时候,必须的两个分区一个是根,一个是swap。如果安装系统的时候,swap分区分小了的话,需要增加,那么接下来的内容就是这个:swap分区的创建/扩展。
有两种方法供我们选择

方法一、利用磁盘的剩余空间

前提就是磁盘还有剩余空间没有划分,或者是已经划分的分区没有使用。这个时候才能使用此方法。
实现步骤:新建分区—修改ID号为82—格式化—启用swap分区—写入fstab文件

1、首先新建分区,修改ID号

[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)
正在同步磁盘。

2、输入partx /dev/sda让内核识别到新创建的分区

[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

3、接下来输入mkswap /dev/sda5格式化,这里的格式化命令跟文件系统格式化的不同,还有注意下这里的UUID号,后面要用到

[root@localhost ~]# mkswap /dev/sda5
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=5cd23db4-7c39-4f6e-b457-7a683050e3a1

4、接下来使用swapon /dev/sda5 激活swap分区,我们先看看当前的大小,再激活,然后看看激活后的大小

[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

5、写入/etc/fstab文件,红色标记的一行就是新写的

在这里插入图片描述
然后重启测试一下。

方法二、利用分区的剩余空间

既然使用的是分区的剩余空间,就要找一个空间大的分区来进行下面的操作

1、查看哪个分区比较大

[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

2、创建一个256M的文件,名字为跟目录下的swapfile

[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

3、格式化创建的swapfile文件

[root@localhost ~]# mkswap /swapfile
正在设置交换空间版本 1,大小 = 262140 KiB
无标签,UUID=4c04314e-3cb6-4ebc-a9f3-b04fcdfda284

4、激活swap

[root@localhost ~]# swapon /swapfile

5、写入sftab文件,不一定非要使用UUID,也可以使用文件名

在这里插入图片描述

查看swap的优先级

[root@localhost ~]# swapon -s

文件名				类型		大小	已用	权限
/dev/sda3                              	partition	2047996	0	-1
/dev/sda5                              	partition	1048572	0	-2

这里是数字越大,优先级越高。要更改他们的优先级也很简单,只需要在fstab中增加pri参数就可以。注意,这个pri后面的数值不能是负数!/etc/fstab修改的主要内容如下:
在这里插入图片描述
注意:不是必要情况下,系统默认的最好。
为了使设置生效,需要先关闭swap再开启。
在这里插入图片描述
其实在正常情况下,我们不需要增大swap分区,也不需要调整优先级。

没有更多推荐了,返回首页