存储管理 二
1.逻辑卷LVM
1.1.LVM管理
lv概念:
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。可以跨分区,多个硬盘组合。
lvm的制作
lvm的使用
lvm(Logical Volume)扩容--在线扩容。可以在有数据的情况下去扩容。
基本分区(MBR|GPT) ----> Filesystem(制作文件系统类型) ----> mount(挂载)
逻辑卷LVM ----> Filesystem(制作文件系统类型) ----> mount(挂载)
1.2.lvm的制作
第一步,拥有基本分区
做成物理卷:pv(Physical Volume) ------- sdb1、sdb2 打pv的标记。处于LVM最底层,可以是物理硬盘或者分区。
加入卷组:vg(Volume Group)-------- 卷组名字里面包含:sdb1 sdb2。建立在PV之上,可以含有一个到多个PV。
逻辑卷:lv(Logical Volume)------- 大小卷组的空间总和到一起在起个名,逻辑卷是从卷组里面拿空间出来做成的逻辑卷。建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。
制作文件系统------mkfs.xfs lvm路径
挂载 ------mount 使用lvm
#制作lv的时候可以是一整块硬盘也可以是硬盘分好的区并且是还没有用的。必须是没有做文件系统的
实战
1.3.创建LVM
首先准备添加1块新磁盘:可以是/dev/sdc这种没有分区的也可以是/dev/sdb这种已经分区了的
[root@biudefor ~]# ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Jan 25 11:20 /dev/sda
brw-rw----. 1 root disk 8, 1 Jan 25 11:20 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jan 25 11:20 /dev/sda2
brw-rw----. 1 root disk 8, 16 Jan 25 11:20 /dev/sdb
brw-rw----. 1 root disk 8, 17 Jan 25 11:20 /dev/sdb1
brw-rw----. 1 root disk 8, 18 Jan 25 11:20 /dev/sdb2
brw-rw----. 1 root disk 8, 32 Jan 25 11:20 /dev/sdc
创建pv
[root@biudefor ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
[root@biudefor ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 4.00m
/dev/sdc lvm2 --- 5.00g 5.00g
[root@biudefor ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<19.00 GiB / 4.00 MiB free]
PV /dev/sdc lvm2 [5.00 GiB]
Total: 2 [<24.00 GiB] / in use: 1 [<19.00 GiB] / in no VG: 1 [5.00 GiB]
创建vg
[root@biudefor ~]# vgcreate vg1 /dev/sdc #创建vg,vg1是名字
Volume group "vg1" successfully created
[root@biudefor ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg1 1 0 0 wz--n- <5.00g <5.00g
[root@biudefor ~]# vgscan
Reading volume groups from cache.
Found volume group "vg1" using metadata type lvm2
Found volume group "centos" using metadata type lvm2
[root@biudefor ~]# vgdisplay
--- Volume group ---
VG Name vg1
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 <5.00 GiB
PE Size 4.00 MiB
Total PE 1279
Alloc PE / Size 0 / 0
Free PE / Size 1279 / <5.00 GiB
VG UUID UOYUzR-2OdE-Ibdk-Nb8i-2qmH-w0po-T9bVjK
创建lv
[root@biudefor ~]# lvcreate -L 1G -n lv1 vg1 #创建lv
Logical volume "lv1" created.
[root@biudefor ~]# lvcreate -l 250 -n lv2 vg1
Logical volume "lv2" created.
参数解释:
-L 指定lv的大小
-n 给创建的lv起一个名字
-l 250 指定PE
[root@biudefor ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 17.99g
swap centos -wi-ao---- 1.00g
lv1 vg1 -wi-a----- 1.00g
lv2 vg1 -wi-a----- 1000.00m
制作文件系统并挂载
[root@biudefor ~]# mkfs.xfs /dev/vg1/lv1
[root@biudefor ~]# mkfs.ext4 /dev/vg1/lv2
[root@biudefor ~]# mkdir /mnt/lv{1..2}
[root@biudefor ~]# mount /dev/vg1/lv1 /mnt/lv1
[root@biudefor ~]# mount /dev/vg1/lv2 /mnt/lv2
[root@biudefor ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1014M 33M 982M 4% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 969M 2.5M 900M 1% /mnt/lv2
2.VG管理
2.1.扩大VG vgextend
可以使用上面将一整块磁盘做成PV的方式,这里我是用的是将已经分过区,但是内存还有剩余的sdb的剩下的空间做成PV
[root@biudefor ~]# gdisk /dev/sdb
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-10485726, default = 4196352) or {+-}size{KMGTP}:
Last sector (4196352-10485726, default = 10485726) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
[root@biudefor ~]# partprobe /dev/sdb
[root@biudefor ~]# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb1 /dev/sdb3
/dev/sda1 /dev/sdb /dev/sdb2 /dev/sdc
创建PV, 扩大VG
[root@biudefor ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@biudefor ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
[root@biudefor ~]# vgextend vg1 /dev/sdb3
[root@biudefor ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg1 2 2 0 wz--n- 7.99g <6.02g
LV扩容
注意:如果lv所在的vg有空间直接扩容就ok了!,就不需要做上面的操作
[root@biudefor ~]# vgs #查看vg
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 4.00m
vg1 2 2 0 wz--n- 7.99g <6.02g
[root@biudefor ~]# lvextend -L 850M /dev/vg1/lv1 #扩展到850M,这个会失败,因为我们的LV原本就大于850M
[root@biudefor ~]# lvextend -L +800M /dev/vg1/lv1 #在原有基础上加800M
[root@biudefor ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 17.99g
swap centos -wi-ao---- 1.00g
lv1 vg1 -wi-ao---- 1.78g
lv2 vg1 -wi-ao---- 1000.00m
[root@biudefor ~]# lvextend -L +15 /dev/vg1/lv1
[root@biudefor ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- 17.99g
swap centos -wi-ao---- 1.00g
lv1 vg1 -wi-ao---- <1.80g
lv2 vg1 -wi-ao---- 1000.00m
FS(file system)文件系统扩容
[root@biudefor ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1014M 33M 982M 4% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 969M 2.5M 900M 1% /mnt/lv2
[root@biudefor ~]# xfs_growfs /dev/vg1/lv1 #xfs扩容
[root@biudefor ~]# resize2fs /dev/vg1/lv2 #ext4扩容
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 256000 blocks long. Nothing to do!
因为这里没有去扩展LV2
[root@biudefor ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1.8G 33M 1.8G 2% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 969M 2.5M 900M 1% /mnt/lv2
二.交换分区
交换分区管理 Swap ---(也叫虚拟内存)
作用: ‘提升‘ 内存的容量,防止OOM(Out Of Memory)内存容量不足
现象是当内存不够的时候内核会随机杀死进程,它认为占用内存无关的进程。(内核会先删除占用内存多的进程)
一、查看当前的交换分区
[root@biudefor ~]# free -m
total used free shared buff/cache available
Mem: 976 109 718 6 148 702
Swap: 1023 0 1023
[root@biudefor ~]# swapon -s #查看交换分区信息
二、增加交换分区 可以是基本分区,LVM,File
再添加一块磁盘
[root@biudefor ~]# fdisk /dev/sdd #分一个主分区出来
[root@biudefor ~]# partprobe /dev/sdd #刷新分区表
[root@biudefor ~]# ll /dev/sdd*
brw-rw----. 1 root disk 8, 16 Nov 9 14:11 /dev/sdd
brw-rw----. 1 root disk 8, 17 Nov 9 14:11 /dev/sdd1
初始化
[root@biudefor ~]# mkswap /dev/sdd1 #初始化
Setting up swapspace version 1, size = 5242876 KiB
no label, UUID=d2fd3bc0-10c0-4aeb-98ea-6b640d29b783
挂载
[root@biudefor ~]# blkid /dev/sdd1 #查看UUID
/dev/sdd1: UUID="d2fd3bc0-10c0-4aeb-98ea-6b640d29b783" TYPE="swap"
[root@biudefor ~]# vim /etc/fstab #制作开机挂载
/dev/sdd1 swap swap defaults 0 0
[root@biudefor ~]# swapon -a #激活swap分区(读取/etc/fstab)
[root@biudefor ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -1
/dev/sdd1 partition 5242876 0 -2
#swapoff /dev/sdd1 #关闭swap分区
file制作
[root@biudefor ~]# dd if=/dev/zero of=/swap2.img bs=1M count=512
解释:dd 读入从空设备里面拿空块 到交换分区 块多大 一共多少兆
[root@biudefor ~]# mkswap /swap2.img #初始化
[root@biudefor ~]# vim /etc/fstab
/swap2.img swap swap defaults 0 0
[root@biudefor ~]# chmod 600 /swap2.img #交换分区权限需要设置为600,默认644权限不安全。
[root@biudefor ~]# swapon -a
[root@biudefor ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 0 -1
/dev/sdd1 partition 5242876 0 -2
/swap2.img file 524284 0 -3
三.mount详解
常用挂载选项详解
挂载设备文件名、UUID
常见的挂载选项
-t 文件系统类型
-o 指定文件系统属性
rw 读写
ro 只读
suid 支持suid
dev 支持设备文件
nodev 不支持设备文件
noexec 不允许执行二进制文件
exec 允许执行二进制文件
auto mount -a 开机自动挂载
noauto mount -a 开机不自动挂载
usrquota 支持用户级磁盘配额功能
grpquota 支持组级磁盘配额功能
acl 支持facl功能
remount 在线重新挂载
pri 指定优先级
[root@biudefor ~]# mount #查看已经挂载上的系统的属性
案例1:exec/noexec
[root@biudefor ~]# mount /dev/vg1/lv1 /mnt/lv1/ #挂载默认是有执行权限的
[root@biudefor ~]# mount -o noexec /dev/vg1/lv2 /mnt/lv2 #不允许执行二进制文件
[root@biudefor ~]# cat /mnt/lv1/hello.sh
#!/bin/bash
echo "hello"
[root@biudefor ~]# cat /mnt/lv2/hello2.sh
#!/bin/bash
echo "hello"
[root@biudefor ~]# chmod +x /mnt/lv1/hello.sh
[root@biudefor ~]# chmod +x /mnt/lv2/hello2.sh
[root@biudefor ~]# /mnt/lv1/hello.sh
hello
[root@biudefor ~]# /mnt/lv2/hello2.sh
-bash: /mnt/lv2/hello2.sh: Permission denied
取消挂载
[root@biudefor ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 xfs 1.7G 34M 1.7G 2% /mnt/lv1
/dev/mapper/vg1-lv2 ext4 74M 1.6M 67M 3% /mnt/lv2
[root@biudefor ~]# umount /mnt/lv2/
移除
[root@biudefor ~]# lvremove /dev/vg2/lv2
Do you really want to remove active logical volume vg2/lv2? [y/n]: y
Logical volume "lv2" successfully removed
#先移除lv
[root@biudefor ~]# vgremove /dev/vg2
Volume group "vg2" successfully removed
#再移除vg
[root@biudefor ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped.
#移除pv
#如果一个pv做了两个vg,不能移除pv
网友评论