Linux 学习笔记之 LVM

LVM相关概念:

LVM(Logical Volume Manager)利用Linux内核的device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。通过LVM,可以实现存储空间的抽象化并在上面建立虚拟分区(virtual partitions),从而可以更简便地扩大和缩小分区,可以在增删分区时无需担心某个硬盘上没有足够的连续空间,LVM只是提供了对硬盘的一个方便的管理机制,并没有提供额外的安全保证。

LVM的相关术语:

物理卷Physical volume(PV):位于逻辑卷管理的最底层,可以是过个硬盘的多个分区。

卷组Volume group(VG):建立在多个物理卷上,它将多个物理卷聚合为一个大的管理单元(卷组),可以动态管理卷组中的物理卷。

逻辑卷Logical volume(LV):虚拟分区,它建立在卷组之上,可以动态的调整逻辑卷大小。

物理块Physical extent(PE):它是物理卷中可供分配的最小存储单元(默认大小4M)。它的大小会在创建卷组的时候被指定,一旦卷组创建完成后,物理区域大小无法再调整;同一卷组中各个物理卷的物理块大小一致。

逻辑块Logical exten(LE):LE是逻辑卷上的最小可存储单元,和PE大小一致。

优点

相对于普通的硬盘分区管理,LVM更富于弹性:

使用卷组(VG),组合多个物理卷形成一个的大的存储池,可动态管理卷组。

使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区(Virtual Partitions),在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。

可以在线(online)对逻辑卷(LV)和卷组(VG)进行管理操作,扩展,缩减,删除等。

允许创建快照,可以保存文件系统的备份。

缺点

相对于普通的卷,其创建过程更为复杂。

练习:利用现有磁盘sdb创建两个物理卷,组建一个15G的卷组vg1,并创建一个7G的逻辑卷lv1,挂载到/mnt/lv001



Step1:创建两个分区,并组建成一个15G的卷组

[[email protected] ~]# fdisk -l /dev/sdb    #查看sdb使用情况,磁盘未划分任何分区,接下来创建分区sdb1(5G),sdb2(10G)

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x067824c0

Device Boot      Start         End      Blocks   Id  System

[[email protected] ~]# fdisk -l /dev/sdb    #使用fdisk命令来创建分区sdb1,sdb2

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

255 heads, 63 sectors/track, 15665 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x067824c0

Device Boot      Start         End      Blocks   Id  System

[[email protected] ~]# fdisk  /dev/sdb

WARNING: 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): n    #创建分区

Command action

e   extended

p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-15665, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-15665, default 15665): +5G    #指定分区大小5G

Command (m for help): t    #改变分区ID号

Selected partition 1

Hex code (type L to list codes): 8e    #8e是LVM分区ID号

Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): w

The partition table has been altered!

[[email protected] ~]# partx -a /dev/sdb    #通知内核更新分区表

BLKPG: Device or resource busy

error adding partition 1

[[email protected] ~]# fdisk -l /dev/sdb    #验证分区是否创建好

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

....此处略去N行信息

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         654     5253223+  8e  Linux LVM

同理创建大小为10G的分区sdb2

[[email protected] ~]# fdisk -l /dev/sdb    #创建好的分区sdb1,sdb2如下

Disk /dev/sdb: 128.8 GB, 128849018880 bytes

...此处略去N行信息

Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         654     5253223+  8e  Linux LVM

/dev/sdb2             655        1960    10490445   8e  Linux LVM

Step2:将分区转化为物理卷


[[email protected] ~]# pvcreate /dev/sdb{1,2}    #将分区sdb1,sdb2创建为物理卷PV
Physical volume "/dev/sdb1" successfully created

Physical volume "/dev/sdb2" successfully created

[[email protected] ~]# vgdisplay vg1    #创建卷组,取名为vg1
  --- Volume group ---
  VG Name               vg1
  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               15.01 GiB
  PE Size               4.00 MiB
  Total PE              3842
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3842 / 15.01 GiB

VG UUID               QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6

[[email protected] ~]# lvcreate -L 7G -n lv1 vg1    #创建逻辑卷,指定大小为7G,卷名为lv1

Logical volume "lv1" created

[[email protected] ~]# mkfs.ext4 /dev/vg1/lv1     #格式化逻辑卷lv1为ext4文件系统格式

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

458752 inodes, 1835008 blocks

91750 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1879048192

56 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

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

[[email protected] ~]# lvdisplay /dev/vg1/lv1     #查看逻辑卷lv1的详细信息

--- Logical volume ---

LV Path                /dev/vg1/lv1

LV Name                lv1

VG Name                vg1

LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

LV Write Access        read/write

LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

LV Status              available

# open                 0

LV Size                7.00 GiB

Current LE             1792

Segments               1

Allocation             inherit

Read ahead sectors     auto

- currently set to     256

Block device           25

[[email protected] ~]# mkdir /mnt/lv001    #创建挂载点目录lv001

[[email protected] ~]# mount /dev/vg1/lv1 /mnt/lv001/    #挂载逻辑卷lv1到/mnt/lv001目录下

[[email protected] ~]# ll /mnt/lv001/    #验证已挂载成功

total 16

drwx------ 2 root root 16384 Aug 31 05:18 lost+found

至此,逻辑卷lv1已经创建成功,如果要实现自动挂载,修改/etc/fstab文件,为/dev/vg1/lv1添加相应的挂载条目即可。

练习:扩展lv1卷大小,将lv1大小调整到10G (故需要添加3G空间到原有7G空间上去)



[[email protected] ~]# lvextend --size +3G /dev/vg1/lv1 /dev/sdb2    #为lv1添加3G空间

Size of logical volume vg1/lv1 changed from 7.00 GiB (1792 extents) to 10.00 GiB (2560 extents).

Logical volume lv1 successfully resized

[[email protected] ~]# lvdisplay /dev/vg1/lv1     #查看lv1的详细信息

--- Logical volume ---

LV Path                /dev/vg1/lv1

LV Name                lv1

VG Name                vg1

LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

LV Write Access        read/write

LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

LV Status              available

# open                 1

LV Size                10.00 GiB

Current LE             2560

Segments               1

Allocation             inherit

Read ahead sectors     auto

- currently set to     256

Block device           253:4

[[email protected] ~]# resize2fs /dev/vg1/lv1    #扩展文件系统大小,扩展完成后,逻辑卷lv1的10G空间就可以正常使用

resize2fs 1.41.12 (17-May-2010)

Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv001; on-line resizing required

old desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/vg1/lv1 to 2621440 (4k) blocks.

The filesystem on /dev/vg1/lv1 is now 2621440 blocks long.


练习:缩减逻辑卷大小,将lv1从10G缩减到3G



注意:逻辑卷缩小后的空间不能小于它上面文件现占有的空间,否则可能坏导致数据损坏,缩减逻辑卷的大致步骤是:

卸载文件系统--》使用e2fsck检测逻辑卷--》使用resize2fs调整文件系统大小-》使用lvreduce缩减逻辑卷大小

[[email protected] ~]# df -lh /dev/vg1/lv1    #验证缩减前实际使用空间不超过3G

Filesystem           Size  Used Avail Use% Mounted on

/dev/mapper/vg1-lv1  9.8G   16M  9.3G   1% /mnt/lv001

[[email protected] ~]# umount /dev/vg1/lv1    #卸载逻辑卷

[[email protected] ~]# e2fsck -f /dev/vg1/lv1    #强制检测逻辑卷

e2fsck 1.41.12 (17-May-2010)

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Checking reference counts

Pass 5: Checking group summary information

/dev/vg1/lv1: 12/655360 files (0.0% non-contiguous), 77935/2621440 blocks

[[email protected] ~]# resize2fs /dev/vg1/lv1 3G    #调整文件系统大小

resize2fs 1.41.12 (17-May-2010)

Resizing the filesystem on /dev/vg1/lv1 to 786432 (4k) blocks.

The filesystem on /dev/vg1/lv1 is now 786432 blocks long.

[[email protected] ~]# lvreduce -L 3G /dev/vg1/lv1    #缩减逻辑卷大小至3G

WARNING: Reducing active logical volume to 3.00 GiB

THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce lv1? [y/n]: y    #回答y确认操作

Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 3.00 GiB (768 extents).

Logical volume lv1 successfully resized        #提示已经调整成功

[[email protected] ~]# lvdisplay /dev/vg1/lv1     #再度查看lv1详细信息,确认大小已经缩减为3G

--- Logical volume ---

LV Path                /dev/vg1/lv1

LV Name                lv1

VG Name                vg1

LV UUID                XpUB9b-8rjS-AHRo-Dxcs-5Do7-xm76-X3RN5w

LV Write Access        read/write

LV Creation host, time centos6, 2015-08-31 05:17:16 +0800

LV Status              available

# open                 0

LV Size                3.00 GiB

Current LE             768

Segments               1

Allocation             inherit

Read ahead sectors     auto

- currently set to     256

Block device           253:4

练习:为卷组vg1添加一个新的10G的PV



...此处省略创建物理卷sb3(大小为10G)的过程。

[[email protected] ~]# vgextend vg1 /dev/sdb3    #使用vgextend添加新的物理卷sdb3到卷组vg1

Physical volume "/dev/sdb3" successfully created

Volume group "vg1" successfully extended

[[email protected] ~]# vgdisplay /dev/vg1    #查看vg1的详细信息,卷组大小已经扩展到20G

--- Volume group ---

VG Name               vg1

System ID

Format                lvm2

Metadata Areas        3

Metadata Sequence No  5

VG Access             read/write

VG Status             resizable

MAX LV                0

Cur LV                1

Open LV               1

Max PV                0

Cur PV                3

Act PV                3

VG Size               25.01 GiB

PE Size               4.00 MiB

Total PE              6402

Alloc PE / Size       768 / 3.00 GiB

Free  PE / Size       5634 / 22.01 GiB

VG UUID               QhFxNx-SQz0-62zl-3kOR-hVM5-HucJ-kDuEP6

相关命令如下:



dm: device manager:将一个或多个底层块设备组织成一个逻辑设备的模块

设备文件路径:/dve/dm-#

逻辑卷的文件路径

/dev/mapper/卷组_逻辑卷 或 /dev/卷组/逻辑卷

pv管理工具:

pvs:简要显示系统上的PV的信息

pvdisplay 物理卷:查看指定pv的详细信息

vg管理工具:

vgs 简要显示系统上的卷组信息

vgdisplay 卷组:查看指定卷组的详细信息

lv管理工具:

lvs:简要显示逻辑卷的信息

lvdisplay 逻辑卷: 查看指定逻辑卷的详细信息

lvcreate -L #[mMgGtT] -n NAME VolumeGroup  创建逻辑卷

lvremove /dev/VG_NAME/LV_NAME    删除逻辑卷

扩展逻辑卷:

# lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME

# resize2fs /dev/VG_NAME/LV_NAME

缩减逻辑卷:

# umount /dev/VG_NAME/LV_NAME

# e2fsck -f /dev/VG_NAME/LV_NAME

# resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]

# lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME

# mount

时间: 2024-10-11 17:51:43

Linux 学习笔记之 LVM的相关文章

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

Linux学习笔记——例说makefile 增加系统共享库

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile大致分为4个部分 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [代码仓库]--makefile-example

Linux学习笔记——如何使用echo指令向文件写入内容

0.前言 本文总结如何使用echo命令向文件中写入内容,例如使用echo指令覆盖文件内容,使用echo指令向文件追加内容,使用echo指令往文件中追加制表符. echo向文件中输出内容的基本方法是使用IO重定向指令--">",默认情况下echo输出到标准输出中,使用>指令可重定向输出到文件中. 1.echo指令基本用法 [1]Linux官方用户手册--echo指令 [2]输入指令获得帮助 sudo echo --help 返回内容如下 用法:echo [短选项]... [字

linux学习笔记--vim程序编辑器

1,在linux系统中使用文本编辑器来编辑自己的linux参数配置文件是一件很重要的事情,因此系统管理员至少应该要熟悉一种文本编辑器. 2,不同的linux distribution各有不同的附加软件,linux命令行界面下的文本编辑器有Emacs,pico,nano,joe与vim 3,学习vim的重要性 (1)所有的UNIX Like系统都内置vi文本编辑器,其他的文本编辑器不一定存在 (2)很多软件的编辑接口都会主动调用vi (3)vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确

linux学习笔记-type命令

语法: type [-tpa] name 参数: type:    不加任何参数时,type会显示出name是外部命令还是内部bash内置命令 -t:      当加入-t参数时,type会将name以下面这些字眼显示出它的意义 file:表示为外部命令 alias:表示该命令为命令别名所设置的名称 builtin:表示该命令为bash内置的命令功能 -p:     如果后面接的name为外部命令时,才显示完整文件名 -a:     会有path变量定义的路径中,将所有含有name的命令都列出来

Linux学习笔记三:Linux的权限处理命令

1.改变文件或目录权限  chmod 语法:chmod [{ugo} {+-=} {rwx}] [文件或目录] 或 [mode] [文件或目录] 第一种语法中: 这里的u是所有者,g是指所属组,o是指其他人 +是指增加权限,-是指减少权限,=是指赋予权限 r是指读权限,w是指写权限.x只是执行权限 第二种语法中: 在这里,r的值是4,w的值是2,x的值是1. 这里写的mode,是指一组数字.如:421.这里的421,是指所有者所拥有权限的数字总和是4,所属组所拥有权限的总和是2,其他人所拥有权限

Linux学习笔记033_10

网卡命名: eth0,eth1 子接口(一个网卡上多个IP):eth0:1,eth0:2 ifconfig: 查看网卡信息 ifup ethx:开启网卡 ifdown ethx:关闭网卡 配置网卡: 图形 命令: ONBOOT为yes表示启动计算机时通过网卡 全局网络配置: 第一行为开启ipv4,第二行为开启ipv6,第三行为计算机名,注意计算机名在DNS要解析到,如clc.com 可以加一行:GATWAY=192.168.1.254,不过以network-scripts中的网关优先级高 DNS

Linux学习笔记033_11进程

ps:(process information,静态的) 显示进程信息,不加参数显示当前终端的进程 a:包括所有终端的进程 x:不属于任何终端的进程,和任何用户无关系的进程 u:显示出进程的拥有人 f:显示进程的附属关系(依赖关系,父子进程) USER:进程的拥有人 PID:进程ID,默认用进程ID排序 VSZ:程序在运行时调用多少虚拟内存 RSS:真实内存 TTY:?不属于任何终端,进入终端之前就运行 STAT:状态,s为睡眠 TIME:进程持续时间 COMMAND:运行这个进程的指令 ps