您的位置:首页 > 运维架构 > Linux

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

2017-11-28 13:25 711 查看
最近在上海新建机房的时候,给了我2台M2机型服务器,在做初始化的时候发现有一堆磁盘:

12345678910111213[root@Centos64:~]# fdisk -l | grep '300.1 GB' | sortDisk /dev/sda: 300.1 GB, 300069052416 bytesDisk /dev/sdb: 300.1 GB, 300069052416 bytesDisk /dev/sdc: 300.1 GB, 300069052416 bytesDisk /dev/sdd: 300.1 GB, 300069052416 bytesDisk /dev/sde: 300.1 GB, 300069052416 bytesDisk /dev/sdf: 300.1 GB, 300069052416 bytesDisk /dev/sdg: 300.1 GB, 300069052416 bytesDisk /dev/sdh: 300.1 GB, 300069052416 bytesDisk /dev/sdi: 300.1 GB, 300069052416 bytesDisk /dev/sdj: 300.1 GB, 300069052416 bytesDisk /dev/sdk: 300.1 GB, 300069052416 bytesDisk /dev/sdl: 300.1 GB, 300069052416 bytes
其中挂载的只有 /dev/sda,其他都在那闲着。运管那边告诉我这个机型不能做raid。而根据我这边的业务需求,我并不能一次用到这么多分区,所以必须使用LVM合并使用。关于LVM的创建,目前网络上一堆详细教程,用起来也非常简单,这里就只贴一下我的过程。①、用fdisk给每一个磁盘创建一个8e分区:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

[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存储单元:

12345678910111213[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:

1
2
3

[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 我们自定义的名称:

123[root@Centos64:~]# lvcreate -l 100%VG -n lvm vg Logical volume "lvm" created
同样我们可以使用 lvdisplay 或者 lvs 命令来查看创建好的逻辑卷的信息(略)⑤、格式化创建的逻辑卷:

1

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

⑥、挂载分区:

12345678910[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 -hFilesystem Size Used Avail Use% Mounted on/dev/sda1 9.9G 2.1G 7.4G 22% //dev/sda3 20G 370M 19G 2% /usr/localtmpfs 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格式分区就已经很坑了。所以,就将上面的操作串成脚本,一键完成:Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#!/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

哦了,就写这么多,以备后用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐