转至:https://cloud.tencent.com/developer/article/1068328

Linux系统LVM逻辑卷创建过程以及自动化脚本

2018-03-21阅读 6300
 

最近在上海新建机房的时候,给了我 2 台 M2 机型服务器,在做初始化的时候发现有一堆磁盘:

[root@Centos64:~]# fdisk -l | grep '300.1 GB' | sort
Disk /dev/sda: 300.1 GB, 300069052416 bytes
Disk /dev/sdb: 300.1 GB, 300069052416 bytes
Disk /dev/sdc: 300.1 GB, 300069052416 bytes
Disk /dev/sdd: 300.1 GB, 300069052416 bytes
Disk /dev/sde: 300.1 GB, 300069052416 bytes
Disk /dev/sdf: 300.1 GB, 300069052416 bytes
Disk /dev/sdg: 300.1 GB, 300069052416 bytes
Disk /dev/sdh: 300.1 GB, 300069052416 bytes
Disk /dev/sdi: 300.1 GB, 300069052416 bytes
Disk /dev/sdj: 300.1 GB, 300069052416 bytes
Disk /dev/sdk: 300.1 GB, 300069052416 bytes
Disk /dev/sdl: 300.1 GB, 300069052416 bytes

其中挂载的只有 /dev/sda,其他都在那闲着。运管那边告诉我这个机型不能做 raid。而根据我这边的业务需求,我并不能一次用到这么多分区,所以必须使用 LVM 合并使用。

关于 LVM 的创建,目前网络上一堆详细教程,用起来也非常简单,这里就只贴一下我的过程。

①、用 fdisk 给每一个磁盘创建一个 8e 分区:

[root@Centos64:~]# fdisk /dev/sdb

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted. 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-36481, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-36481, default 36481): #直接回车选择最大
Using default value 36481 Command (m for help): t #输入t进入类型选择
Selected partition 1
Hex code (type L to list codes): 8e #输入8e格式
Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): w #w保存

这样就完成了一块磁盘,接着我们依次将其他 sdc 到 sdl 的磁盘也操作一把。

②、全部完成后,使用 pvcreate 将所有分区转化成物理卷,即添加 LVM 属性信息并划分 PE 存储单元:

[root@Centos64:~]# pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

  Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdc1" successfully created
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sde1" successfully created
Physical volume "/dev/sdf1" successfully created
Physical volume "/dev/sdg1" successfully created
Physical volume "/dev/sdh1" successfully created
Physical volume "/dev/sdi1" successfully created
Physical volume "/dev/sdj1" successfully created
Physical volume "/dev/sdk1" successfully created
Physical volume "/dev/sdl1" successfully created

创建完 PV 之后,就可以使用 pvdisplay 或 pvs 查看详细信息了,篇幅有限,这里我就不贴了。

③、下面我们需要创建一个 VG,然后 PV 都加入到这个卷组当中,卷名可自定义,比如 vg:

[root@Centos64:~]# vgcreate vg /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1

    Volume group "vg" successfully created

同样,在创建好 VG 以后,我们也可以使用 vgdisplay 或者 vgs 命来来查看 VG 的信息(略)

④、接着,使用 lvcreate 命令基于 VG 创建逻辑卷,vg 和 lvm 我们自定义的名称:

[root@Centos64:~]# lvcreate -l 100%VG -n lvm vg

   Logical volume "lvm" created

同样我们可以使用 lvdisplay 或者 lvs 命令来查看创建好的逻辑卷的信息(略)

⑤、格式化创建的逻辑卷:

[root@Centos64:~]# mkfs.ext4 /dev/vg/lvm 

⑥、挂载分区:

[root@Centos64:~]# mkdir /data
[root@Centos64:~]# echo '/dev/vg/lvm /data ext4 noatime,acl,user_xattr 1 2' >> /dev/fstab
[root@Centos64:~]# mount -a
[root@Centos64:~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 2.1G 7.4G 22% /
/dev/sda3 20G 370M 19G 2% /usr/local
tmpfs 16G 0 16G 0% /dev/shm
/dev/sda4 244G 205M 232G 1% /data1
/dev/mapper/vg-lvm 3.1T 932M 3.0T 1% /data

这样,我们就完成了 LVM 的手工创建过程了,我还有一台 M2 要弄,而且听运管说以后会继续交付这类机型,我可不想这么苦逼的操作了,光那个创建 8e 格式分区就已经很坑了。

所以,就将上面的操作串成脚本,一键完成:

#!/bin/bash
partition=/data # 定义最终挂载的名称
vgname=vg # 定义逻辑卷组的名称
lvname=lvm # 定义逻辑卷的名称
code='b c d e f g h i k j l' # 根据分区的实际情况修改 disk=
for i in $code
do
fdisk /dev/sd$i << EOF # 这里自动化完成了所有分区fdisk苦逼的交互步骤
n
p
1
1 t
8e
w
EOF
disk="$disk /dev/sd${i}1" # 将所有分区拼起来
done pvcreate $disk
vgcreate $vgname $disk
lvcreate -l 100%VG -n $lvmname $vgname
mkfs.ext4 /dev/$vgname/$lvmname mkdir -p $partition
echo "/dev/$vgname/$lvmname $partition ext4 noatime,acl,user_xattr 1 2' >> /dev/fstab
mount -a
df -h

哦了,就写这么多,以备后用。

Linux系统LVM逻辑卷创建过程以及自动化脚本的更多相关文章

  1. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  2. (转)Linux LVM逻辑卷配置过程详解(创建、扩展、缩减、删除、卸载、快照创建)

    一.预备知识 LVM全称为Logical Volume Manager 逻辑卷管理器,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上.文件系统之下的一个逻辑层,可提高磁盘 ...

  3. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  4. Linux随笔 - Linux LVM逻辑卷配置过程详解[转载]

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  5. 还原lvm逻辑卷创建整个过程

    很多情况入职的时候,系统可能已规划过的,但是有的信息也不是很完整,比如下面的lvm逻辑卷我们先不管对与错,利用一些工具来了解当前lvm逻辑卷的情况 系统采样: [root@fp-web-112 var ...

  6. 【Linux】LVM 逻辑卷管理

    LVM - 逻辑卷管理 简介 LVM(Logical Volume Manager), 即逻辑卷管理,是Linux环境下对磁盘分区进行管理的一种机制. 相关名词 PV(physical volume) ...

  7. Linux之LVM逻辑卷管理

    LVM逻辑卷管理 LVM机制:PV物理卷,VG卷组,LV逻辑卷. --功能-- --物理卷管理-- --卷组管理-- --逻辑卷管理-- create(建立) pvcreate vgcreate lv ...

  8. Linux中LVM逻辑卷管理

    一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区 进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的 ...

  9. Linux系统管理----LVM逻辑卷和磁盘配额作业习题

    1.为主机增加80G SCSI 接口硬盘 2.划分三个各20G的主分区 [root@localhost chen]# fdisk /dev/sdb 命令(输入 m 获取帮助):n Partition ...

随机推荐

  1. golang中的标准库http

    Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. http客户端 基本的HTTP/HTTPS请求 Get.Head.Post和PostForm函数发出HTTP/HTTP ...

  2. Jquery Ajax添加header参数

    在使用ajax请求接口时需要在请求头添加token来进行身份验证,方式如下: $.ajax({ type: 'GET', url: 'http://api.php', dataType: 'json' ...

  3. 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!

    大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...

  4. Java应用程序OOM分析

    内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用. 内存溢出:申请的内存超出了JVM能提供的内存大小,此时称之为溢 ...

  5. python变量系列--1

    所以这里需要注意变量的使用,print(message),直接去引用,和shell略有不同 1.变量名只能包含字母,数字,下划线,但不能以数字开头 2.变量名不能含有空格

  6. docker内存限制

    默认docker容器可以使用宿主机所有的内存和CPU,我们可以通过 docker run 来限制内存和CPU的使用. 有的系统内核不支持 Linux capabilities. 可以通过 docker ...

  7. 2.flink

    Flink 运行时的组件 作业管理器(JobManager) •控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager 所控制执行. •JobManager 会先接收 ...

  8. c#序列化感悟(重点讲讲二进制序列化)

    序列化是一种通过将对象转化为字节流,从而达到储存对象,或者将对象传输到内存,数据库或文件的一个过程,主要用途是保存对象的状态(包括对象的数据),方便对对象的重建,反之读取就是反序列化. 三种序列化类型 ...

  9. ApacheCN Angular 译文集 20211114 更新

    Angular 专家级编程 零.前言 一.架构概述和在 Angular 中构建简单应用 二.将 AngularJS 应用迁移到 Angular 应用 三.使用 Angular CLI 生成具有最佳实践 ...

  10. 阿里P8整理Mysql面试题答案,助你“脱颖而出”,吊打面试官!(建议收藏)

    前言 作为一名开发人员,每天英高都在和数据库进行着斗智斗勇,尤其是互联网行业,对MySQL的使用是比较多的.同样的,因为mysql的重要性以及普及性,在面试的时候一定是一个面试的重点或者说常问问题,说 ...