LVM卷的创建及案例演示
LVM:Logical Volume Manager, Version:2
dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块。
/dev/dm-# 这里的#表示数字,代表某一块dm设备
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root pv管理工具:
pvs:简要展示pv信息
pvdisplay:显示pv的详细信息
pvcreate /dev/DEVICE:创建pv
vg管理工具:
vgs
vgsdisplay
vgcreate [-s #MG] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath....]
vgextend VolumnGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumnGroupName PhysicalDevicePath [PhysicalDevicePath...]
lv管理工具
lvs
lvdisplay
lvcreate -L #[MG] -n LV_Name VolumeGroup
扩展逻辑卷:
lvextend -L [+]#[MGT] /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_ANME/LV_NAME #[MGT]
lvreduce -L [-]#[MGT] /dev/VG_NAME/LV_NAME
mount
看一下原理:
案例:我们讲解一个创建LVM卷
此时我安装一块1200G的硬盘,在Linux显示为/dev/xvdb的块设备。
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#fdisk /dev/xvdb Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Command (m for help): p
Disk /dev/xvdb: 1.2 TiB, 1288490188800 bytes, 2516582400 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc9629da1 Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-2516582399, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-2516582399, default 2516582399): Created a new partition 1 of type 'Linux' and of size 1.2 TiB.
Partition #1 contains a LVM2_member signature. Do you want to remove the signature? [Y]es/[N]o: Y The signature will be removed by a write command. Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks. [root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#ls
autofs fd log mapper ppp tty50 tty6 ttyS2 vcs5 vga_arbiter
block full loop-control mcelog psaux tty51 tty60 ttyS3 vcs6 vhost-net
btrfs-control fuse loop0 mem ptmx tty52 tty61 ttyprintk vcsa vhost-vsock
char hpet loop1 memory_bandwidth pts tty53 tty62 uinput vcsa1 xen
console hugepages loop2 mqueue random tty54 tty63 urandom vcsa2 xvda
core hwrng loop3 net rfkill tty55 tty7 vcs vcsa3 xvda1
cpu_dma_latency initctl loop4 network_latency rtc tty56 tty8 vcs1 vcsa4 xvdb
cuse input loop5 network_throughput rtc0 tty9 vcs2 vcsa5 xvdb1
disk kmsg loop6 null shm tty58 ttyS0 vcs3 vcsa6 zero
ecryptfs lightnvm loop7 port snapshot tty59 ttyS1 vcs4 vfio
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#pvcreate /dev/xvdb1
Physical volume "/dev/xvdb1" successfully created.
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#pvdisplay
"/dev/xvdb1" is a new physical volume of "1.17 TiB"
--- NEW Physical volume ---
PV Name /dev/xvdb1
VG Name
PV Size 1.17 TiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID u9Re6S-Bl6b-WLic-7aau-mOK5-2bBX-CB7TKg [root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#vgcreate data /dev/xvdb1
Volume group "data" successfully created
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#vgdisplay
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 1.17 TiB
PE Size 4.00 MiB
Total PE 307199
Alloc PE / Size 0 / 0
Free PE / Size 307199 / 1.17 TiB
VG UUID 1zQAIi-3O6I-k0re-ZnpQ-9o16-ZG4i-zbiW5L [root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#lvcreate -L 1170G -n lv-data data #这里的lv-data是lvm的名字,是自定义的。而data是vgGroup的名称
Logical volume "lv-data" created.
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv-data data -wi-a----- 1.14t
[root@:vg_adn_clickhouseTest_3ubuntu:172.31.18.18 /dev]#lvdisplay
--- Logical volume ---
LV Path /dev/data/lv-data
LV Name lv-data
VG Name data
LV UUID OtxncR-HT6N-filt-TM84-t19s-WaJg-3fbFws
LV Write Access read/write
LV Creation host, time ip-172-31-18-18, 2018-12-21 11:48:03 +0800
LV Status available
# open 0
LV Size 1.14 TiB
Current LE 299520
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
我们已经创建好了卷,接下来就开始就开始格式化这个lvm卷才能使用。我一般格式化成ext4的文件系统的格式,最后再进行挂载即可。
[root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /dev]#mkfs -t ext4 /dev/mapper/data-lv--data
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 306708480 4k blocks and 76677120 inodes
Filesystem UUID: 48bfb718-44fc-4368-960c-d3b74dc7878a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848 Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done [root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /dev]#mkdir /data
[root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /dev]#cd /data
[root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /data]#ls[root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /data]#mount /dev/mapper/data-lv--data /data
[root@:vg_adn_clickhouseTest_3ubuntu:54.88.193.72:172.31.18.18 /data]#df -Th
Filesystem Type Size Used Avail Use% Mounted on
udev devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 3.2G 772K 3.2G 1% /run
/dev/xvda1 ext4 97G 1.6G 96G 2% /
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/loop0 squashfs 88M 88M 0 100% /snap/core/5328
/dev/loop1 squashfs 13M 13M 0 100% /snap/amazon-ssm-agent/495
tmpfs tmpfs 3.2G 0 3.2G 0% /run/user/1002
/dev/loop2 squashfs 90M 90M 0 100% /snap/core/6130
/dev/loop3 squashfs 18M 18M 0 100% /snap/amazon-ssm-agent/930
/dev/mapper/data-lv--data ext4 1.2T 77M 1.1T 1% /data
创建快照
现在我们再讲一下快照:
通过使用lvm的快照我们可以轻松的备份数据,由于snapshot和源lvm的关系,snapshot只能够临时使用,不能脱离源lvm而存在.
当一个snapshot创建的时候,仅拷贝原始卷里的数据,这部是物理上的数据拷贝,因此snapshot创建的特别块,当原始卷里的数据由写入时,备份卷开始记录原始卷哪些数据发生了变化,然后在原始卷新书局覆盖旧数据时,将旧数据拷贝到snapshot的预留空间中,起到备份数据的作用,就保证了所有数据和创建备份卷之前的数据一致性。
snapshot的特点:
采用COW实现方式时,snapshot的大小并不需要和原始卷一样大
1、根据原始卷数据的改变大小范围来设置
2、根据原始卷数据的更新频率来定,一旦snapshot的空间记录满了原始卷块变换的信息,那么这个snapshot就不能使用了
lvcreate -L 50M -n lv0backup -s /dev/vg0/lv0
创建一个50M 名字为lv0backup源设备为/dev/vg0/lv0的快照
此快照不需要格式化,直接进行挂载使用就行。
删除快照
1、首先是确定一下之前创建快照的路径
[root@chaofeng mapper]# lvdisplay
--- Logical volume ---
LV Path /dev/data/lv-data
LV Name lv-data
VG Name data
LV UUID DKIkKT-b7yU-9jSZ-I4fk-4Knb-NQHe-9gWgbL
LV Write Access read/write
LV Creation host, time chaofeng, -- :: +
LV snapshot status source of
data_snap [INACTIVE]
LV Status available
# open
LV Size 19.50 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device : --- Logical volume ---
LV Path /dev/data/data_snapp
LV Name data_snap
VG Name data
LV UUID IBJMrz-leJD-EbVs-YyGZ-IUJT-da0k-0FN5Hy
LV Write Access read/write
LV Creation host, time chaofeng, -- :: +
LV snapshot status INACTIVE destination for lv-data
LV Status available
# open
LV Size 19.50 GiB
Current LE
COW-table size 4.00 MiB
COW-table LE
Snapshot chunk size 4.00 KiB
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
确定好之后开始删除
[root@chaofeng data]# lvremove /dev/data/data_snap
Do you really want to remove active logical volume data/data_snap? [y/n]: y
Logical volume "data_snap" successfully removed
此刻我们已经删除了快照所在的那块分区了。
缩减LVM空间大小
首先查看一下原LVM空间大小
[root@chaofeng data]# lvdisplay
--- Logical volume ---
LV Path /dev/data/lv-data
LV Name lv-data
VG Name data
LV UUID DKIkKT-b7yU-9jSZ-I4fk-4Knb-NQHe-9gWgbL
LV Write Access read/write
LV Creation host, time chaofeng, -- :: +
LV Status available
# open
LV Size 19.50 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
目前LVM空间是19.5G的大小,现在我想缩减到15G。
[root@chaofeng data]# lvreduce -L 15G /dev/data/lv-data
WARNING: Reducing active logical volume to 15.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data/lv-data? [y/n]: y
Size of logical volume data/lv-data changed from 19.50 GiB ( extents) to 15.00 GiB ( extents).
Logical volume data/lv-data successfully resized.
[root@chaofeng data]# lvdisplay
--- Logical volume ---
LV Path /dev/data/lv-data
LV Name lv-data
VG Name data
LV UUID DKIkKT-b7yU-9jSZ-I4fk-4Knb-NQHe-9gWgbL
LV Write Access read/write
LV Creation host, time chaofeng, -- :: +
LV Status available
# open
LV Size 15.00 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :
此时已经缩减成功了。
在LVM的一些预留空间上创建swap分区
刚刚我们看到把19.5G的空间缩减到15G,也就是说此时lvm还有4.5G左右的空间预留,那我们来把这部分空间划做交换分区来使用
[root@chaofeng data]# lvcreate --help | head #先查看一下命令创建的语法
lvcreate - Create a logical volume Create a linear LV.
lvcreate -L|--size Size[m|UNIT] VG
[ -l|--extents Number[PERCENT] ]
[ --type linear ]
[ COMMON_OPTIONS ]
[ PV ... ] Create a striped LV (infers --type striped). [root@chaofeng data]# vgdisplay #再确定一下VG组的名字
--- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size <20.00 GiB
PE Size 4.00 MiB
Total PE
Alloc PE / Size / 15.00 GiB
Free PE / Size / <5.00 GiB
VG UUID 46OJtj-IL0F-StLt-aj5H-I5Au-wE7W-rk3l5l
[root@chaofeng data]# lvcreate -L 4G -n swap_lvm data #创建
Logical volume "swap_lvm" created.
此时已经创建成功了。那接下来我们就要进行格式化并挂载了
[root@chaofeng mapper]# mkswap /dev/mapper/data-swap_lvm
正在设置交换空间版本 ,大小 = KiB
无标签,UUID=5f25be8c-ef13-485b-a243-4f13041ffcc9
[root@chaofeng mapper]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Jan 4 20:31:39 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=84629116-e18f-4776-9204-aaa79fee0844 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/mapper/data-swap_lvm swap swap defaults 0 0 #要在/etc/fstab里面添加这句话
[root@chaofeng mapper]# swapon -a
[root@chaofeng mapper]# free -h
total used free shared buff/cache available
Mem: 972M 169M 553M 7.6M 249M 603M
Swap: .7G 0B .7G
到此我们的swap分区已经添加成功。
LVM卷的创建及案例演示的更多相关文章
- 新添加一块硬盘制作LVM卷并进行分区挂载
linux服务器新添加一块硬盘,可以直接将盘格式化挂载就能用,比如挂载在/usr/local目录,但是这样有一个弊端,就是如果这一块磁盘满了,后续想要扩容的话,不能继续挂载这个/usr/local挂载 ...
- 【linux】新添加一块硬盘制作LVM卷并进行分区挂载
linux服务器新添加一块硬盘,可以直接将盘格式化挂载就能用,比如挂载在/usr/local目录,但是这样有一个弊端,就是如果这一块磁盘满了,后续想要扩容的话,不能继续挂载这个/usr/local挂载 ...
- linux运维基础知识-系统分区及LVM逻辑卷的创建
系统分区及LVM逻辑卷的创建 分区 创建逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图 ...
- LVM逻辑卷:创建LVM分区实例
一.概述 LVM(Logical Volume Manager)是基于内核的一种逻辑卷管理器,LVM适合于管理大存储设备,并允许用户动态调整文件系统的大小.此外LVM快照功能可以帮助我们快速备份数据. ...
- Linux LVM学习总结——创建卷组VG
在Linux平台如何创建一个卷组(VG)呢?下面简单介绍一下卷组(VG)的创建步骤.本文实验平台为Red Hat Enterprise Linux Server release 6.6 (Santia ...
- GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性.最大的优点是在不损伤数据的前提下调整存储空间的大小. 本篇主要讲述L ...
- LVM逻辑卷的创建及使用
在上一篇随笔里面 LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理,包括LVM中最重要的四个基本点(PE.PV.VG以及LV),这 ...
- Linux磁盘管理:LVM逻辑卷的创建及使用
一.创建LVM逻辑卷 事先添加了三块虚拟物理磁盘/dev/sdb 1G, /dev/sdc 2G, /dev/sdd 3G 使用fdisk –l命令查看: [root@localhost ~]# fd ...
- Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用
在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...
随机推荐
- SQLServer 里面的 DDL,DML,DCL,TCL
1.DDL (Data Definition Language )数据库定义语言 statements are used to define the database structure or sch ...
- 【Mysql】可视化工具
一.navicat 破解方法:http://www.jianshu.com/p/b1f9194e1e31 二. MySQL Workbench(GUI TOOL)一款专为MySQL设计的ER/数据库建 ...
- Java虚拟机 - 类加载机制
[深入Java虚拟机]之四:类加载机制 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下 ...
- 2.Observer Pattern(观察者模式)
Observer Pattern(观察者模式)定义: 在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新. 干说定义肯定没有举例理解的透彻.想到Observ ...
- 理解Java异常
一.Java异常的简介 Java异常是Java提供的一种识别及响应错误的一致性机制.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器.Ja ...
- IO流作业
IO流作业 一. 填空题 Java IO流可以分为 字节流 和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道 ...
- JSON 解析与封装
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.解析: var str = '{"name":"huangxiaojian&qu ...
- AngularJS图片上传功能实践
逻辑理清楚了:service提供FileReader函数,directive提供点击事件的绑定和监听,controller用来修改html上的ng-src属性值 1.HTML <input ty ...
- windows10 java环境变量设置
由于安装的是jdk1.8所以不需要配置classpath了,只需要配置java_home和path即可. 我的电脑 -> 右键属性 -> 高级系统设置 -> 高级 -> 环境变 ...
- Maven学习(五)使用Maven构建多模块项目
使用Maven构建多模块项目 一般的web项目构成: 建立解决方案目录parent 首先使用命令进入到我们需要建立maven项目的目录: mvn archetype:generate -DgroupI ...