lvm 管理 与lvm 脚本化创建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvm 管理 与lvm 脚本化创建相关的知识,希望对你有一定的参考价值。

磁盘管理

1.IDE硬盘被称为hd,scsi接口的磁盘被称为sd,一般系统只能连接4个IDE接口的硬盘,比如IDE0口的master被称为hda,而该口的

slave 被称为hdb,IDE1的master 端的被称为hdc,而该端口的slave 被称为hdd,二scsi接口的硬盘会按照他们连接到系统的顺序、

依次为sda,sdb,sdc,sdd,sde...,一个计算机系统的scsi设备可以达到十几甚至几十个。

主分区的数目不能超过4个,扩展分区被当做一个主分区来看待,而扩展分区中则可以分出很多的逻辑分区。

主分区按照顺序可1、2、3、4,系统只能为主分区在此4个数字中选取一个未被使用的数字作为自己的分区号,而逻辑分区从

5开始。

  1. 查看某个硬盘的分区的情况:fdisk -l /dev/sda

给某个硬盘进行分区:fdisk /dev/sda

m 查看命令的提示

n 新建分区

e 扩展分区

p 主分区

d 删除分区

l 查看linux支持的文件系统类型

t 改变分区的文件系统类型标识

q 不保存退出,分区设定参数失效、

w 保存分区参数设定

  1. 格式化

mkfs -t ext3(文件类型) /dev/sdb5

mkfs -t ext3 -b 4096 -m 2 -L sample /dev/hda7 : 以新的参数从新格式化为ext3,新的分区的块大小为

4KB,保留给root用户的空间为分区空间的2%,并且分区卷标为sample。

4.tune2fs

可以使用tune2fs 命令来调整已经格式化的分区的参数,其可以调整的参数和mkfs类似,但是块的大小不能调整,

如块大小就不能被调整。如果要改变区块的大小,就只能对分区重新格式化。

例子: tune2fs -r 5000 -L tzsample /dev/hda7

将/dev/hda7 的卷标改为tzsample,对于保留给root用户的空间则不用百分比来表示,而是直接分配5000个块,即

5000*4KB约20MB左右,

  1. 卷标

用blkid命令可以查看分区的卷标

blkid可以查看所有的分区卷标,分区类型和uuid

如果要查看ext2/ext3分区卷标,可以使用e2lable /dev/sda1方式来查看

当然df -h也可以查看到挂载的磁盘卷标。

用mkswap -L 命令可以给一个swap设卷标

dumpe2fs -h /dev/sda5 查看卷标名称

6.mount 命令的选项

如果希望在挂载文件系统的时候设置被挂载文件系统的一些属性,则可以使用-o选项来指定。

例子:
mount -o ro /dev/hda7 /mymnt : 以ro只读属性挂载 /dev/hda7

可以使用mount 命令将ios光盘镜像文件挂载高系统中以直接使用,而不需要解压缩或者将其刻录成光盘

mount -o loop rhas4-u2-cd1.iso /mymnt

7.开机自动挂载文件系统

vim /etc/fstab

.......
/dev/hda7 /mymnt ext3 defaults 0 0

第1列是要挂载的设备名,,第二列是要使用的对用的挂载点,第三列是挂载文件系统类型,第4列是挂载属性一般取默认

值default ,第5列指明了是否要备份(0为不备份,1要备份,一般根分区要备份,其他分区则不需要备份,取0即可)。第6列

指明自检顺序(0 为不自检,1或2为需要自检,如果是根分区则要设为1,其他分区只能为2)

mount -a 可以不启动是改动的内容生效

8.raid

raid0 至少要有两个以上的磁盘,在raid中,数据分散的保存在不同的磁盘上,存取速度最快。没有容错

raid 1 完全复制,使用镜像技术 硬盘的总容量是N/2;

raid 3 磁盘的利用率是(N-1)/N

RAID 5 是将数据的校验位交互放于各个硬盘,raid 5的写效率一般但是读效率很高 硬盘的利用率为(N-1)/N

8.1创建每个不同硬盘的不同分区,t 指定为fd(linux raid auto)

8.2 mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1

使用mdadm 创建raid5,其中-C 表示创建RAID,选项 -l5表示建立的RAID为级别5,-n3 表示参与构建RAID5的工作

分区有3个,选项-x1 则表示另有一个磁盘分区做为备用分区,当三个工作分区
8.3 mdadm -D 查看RAID的基本信息

cat /proc/mdstat
8.4 mkfs.ext3 /dev/md0

8.5 mount /dev/md0 /raidmnt

mdadm /dev/md0 -a /dev/sdb1 //增加硬盘。

9./etc/crontab 每项共六个字段

minute hour day mouth dayofweek command

minute :0-59 之间的任何数字

hour :--23 之间的任何数字 */2每隔两个小时,23-8/2 :晚上11点到早上8点之间每两个小时

day :1-31 之间的任何数字

month :1-12 之间的任何数字

dayofweek :0-7之间的任何数字 0或7代表周日。

0 11 4 * 1-3 :每个月的4号和周一到周四的早上11点

0 4 0 root emerge --sync && emerge -uD world

crontab -l:显示计划任务

crontab -r:删除计划任务

crontab -e :编辑crontab任务。并保存退出

10.LVM

10.1fdisk 几个区,在t指定8e

10.2 PV: pvcreate /dev/sdb1
pvcreate /dev/sdc1

pvdisplay :查看

10.3 VG: vgcreate myvg1 /dev/sdb1 /dev/sdc1

vgdisplay:查看

10.4 创建逻辑卷lv

lvcreate -l 40 -n mylv1 myvg1
lvcreate -n lvName -l 100%VG vgName -y #可以根据VG 的百分比进行大小设定
(1)创建一个指定大小的lv,并指定名字为lv_2

lvcreate -L 2G -n lv_2 vg_1

(2)创建一个占全部卷组大小的lv,并指定名字为lv_3(注意前提是vg并没有创建有lv)

lvcreate -l 100%VG -n lv_3 vg_1 #vg_1 为vgname

(3)创建一个空闲空间80%大小的lv,并指定名字为lv_4(常用)

lvcreate -l 80%Free -n lv_4 vg_1

lvcreate -L 90M -n mylv2 myvg1

lvdisplay :查看

10.4 将两个lv 格式化

mkfs.ext3 /dev/vg1/mylv1

mkfs.ext3 /dev/vg1/mylv4

10.5 挂载
mount -t type (文件类型)

mkdir /mylv4mnt /mylv2mnt :建立两个目录

mount /dev/vg1/mylv1 /mylv1mnt

mount /dev/vg1/mylv2 /mylv2mnt

mount /dev/vg1/mylv4 /mylv4mnt

df -h

10.6 对逻辑卷的扩容

在线扩容 lvresize -L +数字M lv的名字(/dev/myvg1/mylv1)

未挂载扩容 lvextend -L +数字M lv的名字

10.7 vg的扩容

partprobe

pv create /dev//sdb3

vgcreate myvg1 /dev/sdb3

10.8 建立在raid5上的lvm

先格式化分区
raid 基础上创建lv

mdadm -C /dev/md0 -l5 -n3 /dev/sd[b-e]1

pvcreate /dev/md0

vgcreate vg1 /dev/md0

lvcreate -L 300M -n mylv4 vg1

lvcreate -l 40 -n mylv1 vg1

lv 的卸载
numount 挂载点
lvremove /dev/卷组名/lv的名字 卸载

                                             创建lvm快照

1.已存在lv为/dev/myvg1/mylv1
lvcreate -L 300M -s -n mylv1_snap /dev/myvg1/mylv1 :-s选项表示创建快照,后面的参数是快照的名称(mylv1_snap)。

2.lvm快照应用
mount /dev/myvg1/mylv1/ /mylv1mnt/
cp sample.tar /mylv1mnt

ls /mylv1mnt
将快照挂载后,快照将立即同步主存储设备
mount /dev/myvg1/mylv1_snap /mylv1snap

对快照中的数据进行备份
rsync -a /mylv1snap/ /backup


查看raid信息
cat /proc/mdstat 或者mdadm -D /dev/md0


移除raid成员
mdadm /dev/md0 -r raid的成员
添加
mdadm /dev/md0 -a raid的成员
停用
mdadm -S /dev/mdo


LVM 是一个应用于 Linux 内核的逻辑卷管理器 (Logical Volume Manager)。 使用 LVM 你可以抽象你的存储空间,并且可以有很容易更改的“虚拟分区”。LVM的基本模块如下:
Physical volume (PV): 物理卷,例如一个硬盘,或一个Software RAID设备; 硬盘的一个分区 (或者甚至硬盘本身或者回环文件),在它上面可以建立卷组。It has a special header and is divided into physical extents. Think of physical volumes as big building blocks which can be used to build your hard drive.
Volume group (VG): 卷组,将一组物理卷收集为一个管理单元;Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
Logical volume(LV): 逻辑卷,等同于传统分区,可看作便准的块设备,以容纳文件系统;A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
Physical extent (PE): 物理块,划分物理卷的数据块;A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.
使用 LVM 你可以比正常的硬盘分区更容易的管理硬盘分区(逻辑卷)。例如,你可以:
使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。
使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
可以根据需要,对分区(LV)和硬盘空间(VG)进行创建、删除、调整大小等操作。(it doesn‘t depend on position of the logical volumes within volume groups as with normal partitions)
Resize/create/delete partitions(LV) and disks(VG) online (filesystems on them still need to be resized, but some support online resizing)
Name your disks(VG) and partitions(LV) as you like
Create small partitions(LV) and resize them "dynamically" as they get more filled (growing must be still done by hand, but you can do it online with some filesystems)
...

1、将物理磁盘初始化为物理卷
[[email protected] /]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[[email protected] /]# pvdisplay
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 10.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 7Ypqqf-eL1W-RtIC-2kKR-WLEr-2GqA-KevYO9

--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 10.00 GB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 2l7NBZ-7EUi-qqgo-tJD1-37RW-za×××-eQ7akQ

2、创建卷组,并把PV(物理卷)加入到卷组中
[[email protected] /]# vgcreate vg1 /dev/sdb /dev/sdc
Volume group "vg1" successfully created
[[email protected] /]# vgdisplay
--- 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 19.99 GB
PE Size 4.00 MB
Total PE 5118
Alloc PE / Size 0 / 0
Free PE / Size 5118 / 19.99 GB
VG UUID ekFSpn-vSM3-aPGB-EPis-g1zk-knGO-8AwJcU
2.2 vg 添加和删除pv
把pv加到VG中:vgextend VolGroup00 /dev/sdb

3、基于卷组创建逻辑卷
[[email protected] /]# lvcreate -n lv1 -L 1G vg1
Logical volume "lv1" created

4、为创建好的逻辑卷创建文件系统
[[email protected] /]# mkfs.ext3 /dev/vg1/lv1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
131072 inodes, 262144 blocks
13107 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

5、把格式化好的逻辑卷挂载使用
[[email protected] /]# ll /mnt
total 0
[[email protected] /]# mount /dev/vg1/lv1 /mnt/
[[email protected] /]# ll /mnt/
total 16
drwx------ 2 root root 16384 Jan 11 23:03 lost+found
[[email protected] /]# df -hT /mnt
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1
ext3 1008M 34M 924M 4% /mnt
[[email protected] /]# lvdisplay
--- Logical volume ---
LV Name /dev/vg1/lv1
VG Name vg1
LV UUID GAauro-CPiL-8BKP-19rE-TKNY-0tIY-r7t0xE
LV Write Access read/write
LV Status available

open 1

LV Size 1.00 GB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0

删除逻辑卷时,注意删除顺序,先删除LV,再删除VG:
[[email protected] /]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume "lv1"? [y/n]: y
Logical volume "lv1" successfully removed
[[email protected] /]# vgremove /dev/vg1
Volume group "vg1" successfully removed
[[email protected] /]# vgdisplay
[[email protected] /]# lvdisplay

增加vg 中pv

逻辑卷
注意: 虽然lvextend和lvreduce可以实现lvresize特定选项实现的功能,且他们都有一个-r, --resizefs选项允许文件系统利用fsadm(8)(支持ext2, ext3, ext4, ReiserFS和XFS)同步调节其大小。但除非你要对整个过程有更加精确的控制,直接使用lvresize辅以--resizefs选项来完成所有工作比较简便。
使用lvresize增加或缩小容量
警告: 虽然即便是对根分区,增加文件系统大小一般都可以在线完成(即文件系统已经被挂载),缩小其大小往往要求首先卸载文件系统以避免数据丢失。请首先确定你的文件系统支持相关操作。
为了向逻辑组vg1中的逻辑卷lv1增加2GB空间但并不修改其文件系统,执行:

lvresize -L +2G vg1/lv1

而从逻辑组vg1/lv1中减少500MB空间但并不修改其文件系统大小(需要确保文件系统已经缩小过),执行:

lvresize -L -500M vg1/lv1

设置vg1/lv1为15GB并同时更改其文件系统大小:

lvresize -L 15G -r vg1/lv1

注意: 仅支持ext2, ext3, ext4, ReiserFS and XFS file systems。如果使用不同文件系统请使用合适的组件。
如果想将所有可用空间都加入一个卷组,可以执行:

lvresize -l +100%FREE vg/lv

查阅man lvresize可见详细说明。
单独设置文件系统大小
如果在执行lv{resize,extend,reduce}时没有使用-r, --resizefs选项, 或文件系统不支持fsadm(8)(如Btrfs, ZFS等),则需要在缩小逻辑卷之前或扩增逻辑卷后手动调整文件系统大小。
警告: 并非所有文件系统都支持无损或/且在线地调整大小。
例如对于ext2/ext3/ext4文件系统:

resize2fs vg/lv

会将文件系统大小扩展到逻辑卷支持的最大容量,而

resize2fs -M vg/lv

会将文件系统减小到其所需的最小容量。也可以指定具体的尺寸:

resize2fs vg/lv NewSize

移除逻辑卷
警告: 在移除逻辑卷之前,请先备份好数据以免丢失!
首先,找到你所要移除的逻辑卷的名称。你可以使用以下命令来查看系统的所有逻辑卷:

lvs

接下来,找到你所要移除的逻辑卷的挂载点
$ lsblk
并卸载它:

umount /<mountpoint>

最后,使用以下命令来移除逻辑卷:

lvremove <volume_group>/<logical_volume>

例如:

lvremove VolGroup00/lvolhome

请输入y来确定你要执行移除逻辑卷操作。
此外,请不要忘了更新/etc/fstab。
你可以再次使用lvs命令来确认你的逻辑卷已被移除。
添加物理卷(PV)到卷组(VG)中
首先创建一个新的物理卷(PV),再把卷组(VG)扩充到该物理卷上:

pvcreate /dev/sdb1

vgextend VolGroup00 /dev/sdb1

这将增加你卷组中的物理区域总数,你可以按需要将它们分配到逻辑卷中。
注意: 将分区表保存在LVM所在媒体设备是个值得借鉴的方式。对于MBR可以使用类型8e,或GPT类型8e00。
从卷组(VG)中移除分区
首先,分区中的所有数据需要被转移到别的分区,幸而LVM提供了以下的简便方式:

pvmove /dev/sdb1

如果你想指定所要转移的目标分区,那么可以把该分区作为pvmove的第二个参数:

pvmove /dev/sdb1 /dev/sdf1

接着,从卷组(VG)中移除物理卷(PV):

vgreduce myVg /dev/sdb1

或者把所有的空物理卷(PV)都移除掉:

vgreduce --all vg0

最后,如果你仍然想要使用该分区,而且不想让LVM以为它是一个物理卷,那么你可以执行以下命令:

pvremove /dev/sdb1

快照功能
介绍
LVM可以给系统创建一个快照,由于使用了写入时复制(copy-on-write) 策略,相比传统的备份更有效率。 初始的快照只有关联到实际数据的inode的实体链接(hark-link)而已。只要实际的数据没有改变,快照就只会包含指向数据的inode的指针,而非数据本身。一旦你更改了快照对应的文件或目录,LVM就会自动拷贝相应的数据,包括快照所对应的旧数据的拷贝和你当前系统所对应的新数据的拷贝。这样的话,只要你修改的数据(包括原始的和快照的)不超过2G,你就可以只使用2G的空间对一个有35G数据的系统创建快照。
配置
你可以像创建普通逻辑卷一样创建快照逻辑卷。

lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

你可以修改少于100M的数据直到该快照逻辑卷空间不足为止。

mkinitcpio -g /boot/initramfs-linux.img

快照可以提供文件系统的冻结副本,主要被用来做备份;一份需要两小时才能完成的(快照)备份比直接备份分区更能保证文件系统映像的一致性。

vg 扩容 和删除
1、删除
前提是lv 已经umount
移除VG成员sde
[[email protected] ~]# vgreduce sdcsdd /dev/sde #sdcsdd vg名字 ,/dev/sde 物理卷的名字
Removed "/dev/sde" from volume group "sdcsdd"
移除PV成员sde
[[email protected] ~]# pvremove /dev/sde #pv 删除某个物理卷
Labels on physical volume "/dev/sde" successfully wiped
2、扩容
2.1 创建新的物理卷
#pvvreate /dev/sdc
2.2 扩展vg

vgextend myvg1 /dev/sdc

2.3 扩展lv
lv扩容

lvresize -l +100%FREE vg/lv #vg/lv lv 的名字

脚本化创建并挂载lvm
#!/bin/bash
#auth:sean
#2015-10-10

lvmCrInit()
{

#创建lvm

diskName=$1 #选择硬盘
diskSe=$2 #选择硬盘
pvcreate $diskName
pvName=$(pvdisplay |grep "PV Name"|grep "$diskSe"|awk ‘{ print$3 }‘)
vgName="vgData"
vgcreate $vgName $pvName
lvName="lvData"
lvcreate -n $lvName -l 100%VG $vgName -y
lvPath=$(lvdisplay |grep $lvName|grep Path|awk ‘{ print$3 }‘)
#格式化
mkfs.xfs -f $lvPath
mouPath="/data"
mkdir -p $mouPath
mount $lvPath $mouPath
mouLable=$(mount |grep $lvName |awk ‘{ print$1 }‘)
#cp /etc/fstab /etc/fstabbak
cat >> /etc/fstab <<EOF
$mouLable $mouPath xfs defaults 0 0
EOF

}

lvmCrInit "/dev/sdb" "sdb"

以上是关于lvm 管理 与lvm 脚本化创建的主要内容,如果未能解决你的问题,请参考以下文章

LVM的创建及管理

LVM管理与配额

什么是lvm逻辑卷?都有哪些特点?

Linux CentOS 8(LVM的配置与管理)

Linux CentOS 8(LVM的配置与管理)

linux LVM与磁盘管理