关于linux中的磁盘扩容和LVM的疑问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux中的磁盘扩容和LVM的疑问相关的知识,希望对你有一定的参考价值。

我在VM虚拟机中安装Linux玩oracle9i,当初我只将分区sda1的容量分给/根目录,但是现在数据量不断增加,第一块磁盘已经不够用了.我需要将/根目录扩容,但是现在就算增加另一块磁盘也不会为原来的分区起到作用.
商业应用的时候,分区的数据一定会不断增长,DBA是怎样解决问题的?
听说LVM可以,粗略一看好像最后要格式化才可以mount上去.
备份我也不懂.我只想用最简便方法尽快让数据库运行下去!
各位DBA有什么好的办法吗?谢谢

LVM 甚至可以在服务器不断电的情况下动态对磁盘进行扩容,再虚拟一块硬盘后来加入到LVM中

1.添加虚拟硬盘
先关掉虚拟机的电源,然后选择虚拟机,点右键,setting里面点击Add后选择硬盘设备,设置硬盘为1G

2.开启电源,RHEL5启动完成后

格式化硬盘,划出硬盘分区并将格式改为 LVM格式

fdisk -l 查看硬盘分区情况

Disk /dev/hda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 522 4088542+ 8e Linux LVM

Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM

fdisk /dev/hdb

n

p

2

Command (m for help): n 新建分区
Command action
e extended
p primary partition (1-4) 分区类型为主分区(如果硬盘分区超过4个了,则选择扩展分区,再新建逻辑分区)
p
Partition number (1-4): 2 第几个分区
First cylinder (1986-8322, default 1986): 起始磁柱
Using default value 1986 这时选默认
Last cylinder or +size or +sizeM or +sizeK (1986-8322, default 8322): +1024M 这里我们将这个分区设成一G

Command (m for help): p 查看分区情况

Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 83 Linux

Command (m for help): t 更改分区的类型
Partition number (1-4): 2 选择第二个
Hex code (type L to list codes): 8e 这里磁盘格式为 LINUX LVM ,可以使用L来进行查看

Command (m for help): p 再次查看

Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 8e Linux LVM 可以看到 hdb2已经变成LVM格式了

Command (m for help): w 保存,切记要保存,不然上面分区,格式化的操作都不会执行,等于白做了
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks. 这里提示我们重启系统后分区表才会改变,其实用下面一个命令即可

partprobe

[root@el5test ~]# fdisk -l

Disk /dev/hda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 522 4088542+ 8e Linux LVM

Disk /dev/hdb: 4294 MB, 4294967296 bytes
16 heads, 63 sectors/track, 8322 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 1 1985 1000408+ 8e Linux LVM
/dev/hdb2 1986 3970 1000440 8e Linux LVM 可以看到hdb2格式化完成了

3.加入到LVM中

[root@el5test ~]# pvdisplay 先看下系统中PV
--- Physical volume ---
PV Name /dev/hda2
VG Name VolGroup00
PV Size 3.90 GB / not usable 24.72 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 124
Free PE 0
Allocated PE 124
PV UUID 0fxOi9-ZeOY-OlQf-QmIO-Gpb4-kaci-24ovGP

--- Physical volume ---
PV Name /dev/hdb1
VG Name VolGroup00
PV Size 976.96 MB / not usable 16.96 MB
Allocatable yes
PE Size (KByte) 32768
Total PE 30
Free PE 5
Allocated PE 25
PV UUID dtNfYJ-31fK-5CxL-9Pxa-pYWb-GcQ5-Vt5011

[root@el5test ~]# pvcreate /dev/hdb2 建立物理卷(PV)
Physical volume "/dev/hdb2" successfully created

[root@el5test ~]# vgextend VolGroup00 /dev/hdb2 把新物理卷加入到卷组中去
/dev/cdrom: open failed: Read-only file system
Attempt to close device '/dev/cdrom' which is not open.
Volume group "VolGroup00" successfully extended 加入成功

[root@el5test ~]# lvextend -L+1G /dev/VolGroup00/LogVol00 把新的空间加到逻辑卷中去
Extending logical volume LogVol00 to 5.03 GB
Logical volume LogVol00 successfully resized

[root@el5test ~]# resize2fs -p /dev/VolGroup00/LogVol00 加上去之后,目前用df -h还看不到新的空间,需要激活
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 1318912 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 1318912 blocks long.

[root@el5test ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
4.9G 3.0G 1.7G 65% / 可以看到这个卷动态放大了
/dev/hda1 99M 14M 81M 15% /boot
tmpfs 132M 0 132M 0% /dev/shm
none 132M 104K 132M 1% /var/lib/xenstored
参考技术A 通过VMware再添加一块硬盘,然后将进入Linux的救援模式,将根分区占用空间较大的数据拷贝到新硬盘中,然后执行挂装即可。

Linux下lvm在线扩容步骤

 转 :https://jingyan.baidu.com/article/25648fc18f22b29191fd0011.html

图片看不清可以看原文

 

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

 

优势:

    能够在线扩容当前的分区容量。

    Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如PatitionMagic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下方便地调整各个分区大小。

 

结构:

    在整个LVM结构当中以此分为:“物理卷、物理卷分区、卷组、逻辑卷”,下面我详细解释一下这四种结构:

1:物理卷:Physical Volume,简称PV,一个物理卷只不过是一个有LVM管理数据添加在里面的物理存储介质。要使用LVM系统,首先对要用于LVM的磁盘进行初始化,初始化的目的就是将磁盘或分区标识为LVM 的物理卷。使用pvcreate 命令可以将一个磁盘标记为 LVM 物理卷。

 

2:物理分区:Physical Extents,简称PE,LVM将每个物理卷分别叫做物理分区的可寻址存储单元,存储单元的大小通常为几MB。磁盘的开头部分为LVM元数据,之后从索引为零开始,每个物理分区的索引依次递增一,按顺序进行分配。

 

3:卷组:Volume Group,简称VG,物理卷可以组织为卷组。卷组可以由一个或多个物理卷组成,同时系统中可以有多个卷组。创建了卷组之后,该卷组(而不是磁盘)便是表示数据存储的实体。因此,尽管以前是将磁盘从一个系统移动到另一个系统,使用了 LVM 之后,会将卷组从一个系统移动到另一个系统。出于这种原因,通常在一个系统上创建多个卷组会比较方便。

 

4:逻辑分区:Logical Extents,简称LE,逻辑卷的基本分配单元称为逻辑分区。逻辑分区映射到物理分区,因此,如果物理分区的尺寸小为4MB,那么逻辑分区的尺寸也将为4MB。逻辑卷的大小取决于所分配的逻辑分区数量。

技术分享图片

 

工具/原料

  • 一台安装有Linux操作系统的服务器或者笔记本
  • 虚拟机环境也可以

 

方法/步骤

 
  1.  

        要建立LVM,首先需要为LVM准备磁盘或者分区。如果使用磁盘分区作为物理卷的话,需要将分区标识为“Linux LVM”,其分区ID为“0x8e”,接下来我为大家演示一下配置的过程和分区的在线扩容。

     

        本次试验目标:将在线扩容LINUX系统的根分区

     

    下面截图解释一下:

        我在安装系统的时候选择的是默认分区,这时系统默认分配2个区,boot和root,而root分区为LVM系统,以方便未来的在线扩容,现在我要做的就是将根分区扩大5G,当前为17G,扩大5G之后大小为22G,扩容方式为在线扩容,业务不中断,机器也不需要关机,扩容目标为根分区。

    技术分享图片
    技术分享图片
    技术分享图片
  2.  

    扩容顺序:

        创建新的PV---将新的PV加入到当前VG---扩容现有LV----扩容文件系统

     

        下图划分出一个分区,大小5G,分区标识号:83,我需要修改成8E,继续下面配置,如果想知道分区标识号有哪些,可以查看帮助。

    技术分享图片
    技术分享图片
    技术分享图片
  3.  

        创建新PV并将新的PV加入到现有的VG:

    命令:pvcreate (创建PV,如果是创建VG前面修改成VG即可,只是语法稍有区别)

    命令:vgextend (对VG进行扩容)

    语法:vgextend 现有的VG + PV绝对路径

    语法:pvcreate 分区1 + 分区2 + 分区3 + …

    语法:vgcreate –s pe vgname pv + + + (这里的参数-S表示在创建VG的时候修改PE块的大小)

    注:PE块的大小只能是2的倍数,最低从4开始,以此类推8、16、32… 最大应该是64M

     

        下图中是原来的VG,大小为17G,这里新的VG还未加入进来,将新的VG加入进来之后的查看结果,可以看到大小变成了22G,可分配的PE也有了159个。

    技术分享图片
    技术分享图片
    技术分享图片
    技术分享图片
  4.  

        进行LV的扩容和文件系统的扩容:

    命令:lvresize 或者lvextend

    语法:lvresize -L size 需要扩容的LV绝对路径

     

        下图显示现在已经扩容成功,当前容量已经达到了21G,扩容前容量为16G,下面使用命令查看一下当前的LV状态。

    技术分享图片
    技术分享图片
    技术分享图片
    技术分享图片
  5.  

        到这里LV的容量已经成功扩容到21G,比之前增加了5G,但是当前文件系统还未扩容,所以根分区的大小依然不变,还是17G,如下截图

     

        整个根目录就已经成功扩容到22G,相比之前的17G,增加了5G的容量,整个操作过程全部是在线完成的,业务没有中断,系统也不需要重启。

    技术分享图片
    技术分享图片
     

注意事项

 
  • 如果是将根分区缩减,是不能在线进行的,缩减的风险往往大于扩容的风险,如缩减不成功将导致整个文件系统损毁

 

 

 

 

以上是关于关于linux中的磁盘扩容和LVM的疑问的主要内容,如果未能解决你的问题,请参考以下文章

Linux下调整磁盘大小后的基于LVM的磁盘扩容

Linux 使用LVM动态调整磁盘大小/扩容

Linux lvm 卷扩容-2022-5-20

Linux磁盘LVM在线扩容

Linux----LVM扩容磁盘空间

简述linux下lvm 磁盘扩容