linux入门系列13–磁盘治理之RAID、LVM手艺
asp.net core 3.x 授权中的概念,asp.net core 3.x 身份验证-1涉及到的概念》
前一篇文章进修了磁盘分区、花样化、挂载等相干学问,本文将解说RAID和LVM手艺。
磁盘治理操纵主假如运维职员用的较多,假如只是纯真的开发职员,能够先略过本文。然则在许多小公司里每每都是一人多用,运维、开发平常都是统一个人,因而对个人的妙技请求更高。即使不是云云,多了解下相干观点也是有益而无害的。
本文将先解说RAID手艺计划相干理论学问并经由历程案例演示RAID操纵,然后演示LVM手艺以处理存储资本动态调解问题。
一、自力冗余磁盘阵列(RAID)
RAID(Redundant Array of Independent Disk)手艺把多个硬盘装备组合成一个容量更大、平安性更好的磁盘阵列,并把数据切割成多个区段后离别寄存在各个差别的物理硬盘装备上,应用疏散读写手艺提拔磁盘阵列团体的机能,同时把多个主要数据的副本同步到差别的物理硬盘装备上,从而起到了异常好的数据冗余备份结果。
简朴说就是经由历程RAID手艺能够提拔磁盘读写机能,同时能够冗余备份数据保证数据可靠性。然则机能和可靠性不也许同时满足的异常好,因而在二者之间作出衡量就产生了差别的RAID计划。
1.1 RAID计划及特性
听说现在RAID磁盘阵列的计划最少有十几种,但是万变不离其宗,都是在读写机能和可靠性之间衡量,因而只引见几种比较有代表性的计划。
计划 | 特性 |
---|---|
RAID0 | 磁盘读写机能高,但数据可靠性低 |
RAID1 | 磁盘装备应用率低,但数据可靠性高 |
RAID5 | 统筹本钱、读写机能和数据平安的折衷计划 |
RAID10 | 相对于本钱,更注重数据平安可靠 |
1.1.1 RAID0
把多块物理硬盘装备经由历程硬件或软件的体式格局串连在一起,构成一个大的卷组,并将数据顺次写入到各个物理硬盘中。
最理想状况下,磁盘读写机能将进步数倍,但假如个中恣意一块磁盘损坏将致使悉数体系数据被损坏。也就是说虽然RAID0有用进步磁盘数据的吞吐速率,然则不具备数据备份和毛病修复才能。
其示意图以下:
1.1.2 RAID1
如上所述,虽然RAID0提拔了磁盘读写速率,然则由于它将数据顺次写入各个磁盘中,把数据离开存储,假如个中一块磁盘发作毛病将会致使悉数体系数据损坏。因而假如对数据请求性请求较高,但对磁盘读写速率没有请求的话,这类计划就不适宜,须要用到RAID1计划。
RAID1示意图以下:
RAID1是把多块硬盘绑定,数据同时写入多块磁盘,如许就会有多份数据副本,当个中某一块硬盘发作毛病后,立时自动以热交换的体式格局来恢复数据的平常运用。
虽然经由历程副本的情势保证了数据的平安性,然则磁盘装备应用率不高,从示意图能够看出,假如是2块磁盘则应用率只需50%,因而增添了本钱开支。
1.1.3 RAID5
前面两种计划离别倾向于磁盘速率和数据平安,而RAID5则是在读写机能、数据平安和本钱之间的一个互相让步计划。
示意图以下:
RAID5手艺是把硬盘装备的数据奇偶校验信息保留到其他硬盘装备中。如许的优点是个中任何一装备损坏后不至于涌现致命缺点,图中的parity部份寄存的就是数据的奇偶校验信息。
简朴说就是RAID5计划现实上没有备份硬盘中的实在数据信息(数据只需一份),而是当硬盘装备涌现问题后经由历程奇偶校验信息来尝试重修损坏的数据。
这类计划统筹了了硬盘装备的读写速率、数据平安性与存储本钱问题。
1.1.4 RAID10
虽然RAID5看起来在本钱问题、磁盘读写以及数据平安性有了一个互相让步的计划,但现实上许多企业,尤其是金融企业数据自身的代价远比磁盘价钱高,因而本钱并非第一斟酌要素,在这类场景下,平常是采纳RAID10手艺。
RAID10计划现实就是把RAID0和RAID1两种计划举行组合而来,示意图以下:
如图所示,须要最少4块硬盘来组建RAID10,先两两组合制作为RAID1确保数据有副原本保证平安性,然后在将组合后的两个RAID1采纳RAID0举行组合,进一步进步装备的读写速率。
从理论上讲,只需统一组中的硬盘不全坏掉,那末最多能够损坏50%的硬盘装备而不丧失数据。
由于RAID10计划继承了RAID0的高读写速率和RAID1的数据平安性,在不斟酌本钱的状况下RAID10的机能都超过了RAID5,因而当前成 为普遍运用的一种存储手艺。
申明:由于篇幅所限,其他的计划就不逐一列出,须要申明的是应当依据现实需求去斟酌本钱、磁盘机能、数据平安性等要素,按需挑选最适宜需求场景的计划。
1.2 mdadm敕令
经由历程上一篇文章“linux入门系列12--磁盘治理之分区、花样化与挂载”的解说,已学会了磁盘装备治理以后,再来布置RAID就会异常简朴,因而假如还没控制的话,发起先返回去看上一篇文章。
在正式操纵RAID之前,我们先看一下在linux中RAID磁盘阵列的治理敕令mdadm。
语法花样:
mdadm [形式参数] RAID称号 [选项] [成员磁盘列表]
参数选项:
参数 | 作用 |
---|---|
-a | 搜检装备称号 |
-n | 指定装备数目 |
-l | level,指定 RAID 级别 |
-C | 竖立RAID |
-v | 显现细致历程 |
-f | 模仿装备损坏 |
-r | remove,移除装备 |
-D | 检察细致信息 |
1.3 实例1-RAID10布置
1.3.1 环境预备
我们直接在虚拟机中模仿增添多块磁盘来演示RAID的操纵,生产环境中采纳的敕令和步骤都是一致的。
为了防备试验之间的滋扰,我们先克隆一台新的Centos虚拟机举行演示
点击“克隆”后,弹出虚拟机导游
点击“下一步”
保留默许挑选“虚拟机中的当前状况”,点击“下一步”
挑选“竖立完全的克隆”,点击“下一步”
按需修正虚拟机称号已寄存的位置,点击“完成”按钮
守候克隆完成(依据差别机械的机能,克隆时候差别)
如许新的虚拟机就预备好了。
1.3.2 竖立RAID10
如前所述,RAID10最少须要4块磁盘,因而我们先增添4块磁盘。
(1)增添磁盘
挑选适才克隆的虚拟机,点击“编辑虚拟机设置”
在弹出的“虚拟机设置”窗口中,点击“增添”
在弹出的“增添硬件导游”中挑选“硬盘”,然后点击“下一步”
磁盘范例保留默许“SCSI”,点击“下一步”
磁盘范例坚持默许的“竖立新虚拟机磁盘”,点击“下一步”
依据须要设置磁盘大小,此处设置为1G,点击“下一步”
挑选磁盘文件寄存途径,点击“完成”按钮
即可看到适才增添的一块磁盘已胜利。
在上边界面中点击“增添”按钮,用雷同的要领再增添3块磁盘,统共新增添4块磁盘。
(2)竖立RAID10磁盘阵列
启动适才增添磁盘的虚拟机,并用之前解说的lsblk或fdisk检察磁盘装备
[root@origin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-swap 253:0 0 2G 0 lvm [SWAP]
└─centos-root 253:1 0 17.5G 0 lvm /
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
sde 8:64 0 1G 0 disk
sr0 11:0 1 3.9G 0 rom /run/media/root/CentOS 7 x86_64
[root@origin ~]# fdisk -l
Disk /dev/sde: 1073 MB, 1073741824 bytes, 2097152 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
Disk /dev/sdb: 1073 MB, 1073741824 bytes, 2097152 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
Disk /dev/sdd: 1073 MB, 1073741824 bytes, 2097152 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
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 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
...省略部份内容
[root@origin ~]#
能够看到适才增添的磁盘:sdb、sdc、sdd、sde,装备称号称号离别为:/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde
接下来用mdadm敕令竖立RAID10
[root@origin ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@origin ~]#
C参数代表竖立一个RAID阵列卡;-v参数显现竖立的历程,同时在后面追加一个装备称号/dev/md0,如许/dev/md0就是竖立后的RAID 磁盘阵列的称号;-a yes 参数代表自动竖立装备文件;-n 4参数代表运用4块硬盘来布置这个RAID磁盘阵列;而-l 10参数则代表RAID10计划。
竖立磁盘阵列胜利以后,下一步就是花样化
1.3.3 花样化RAID
用mkfs敕令花样化RAID磁盘阵列
[root@origin ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
[root@origin ~]#
1.3.4 挂载磁盘阵列
竖立目次并挂载磁盘阵列
[root@origin ~]# mkdir /raid
[root@origin ~]# mount /dev/md0 /raid
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 9.0M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.9G 3.9G 0 100% /run/media/root/CentOS 7 x86_64
/dev/md0 2.0G 6.0M 1.9G 1% /raid
[root@origin ~]#
咦,仔细的朋侪也许就有疑问了,以至入手下手疑心是否是本身操纵错了,前面明显增添了4块磁盘,每一个磁盘为1G,总量应当为4G,但此处却看到/dev/md0大小为2G?
是的,你没看错,依据前面解说的RAID10计划,容量会削减。此处能够看到4块磁盘的状况下,可用容量会削减一半。
我们还须要把挂载信息写入到设置文件中,使其永远见效
[root@origin ~]# echo "/dev/md0 /raid ext4 defaults 0 0">>/etc/fstab
[root@origin ~]# cat /etc/fstab
...省略部份内容
/dev/md0 /raid ext4 defaults 0 0
[root@origin ~]#
如许就把磁盘阵列挂载到了raid目次。
1.3.5 检察磁盘阵列信息
检察磁盘阵列信息
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@origin ~]#
能够看到4块磁盘阵列中的4块磁盘均已平常事情。
至此,RAID10计划布置完成。因而可知,悉数操纵流程给增添硬盘一致,都是须要竖立、花样化、挂载等步骤,异常简朴。
1.4 实例2-修复RAID10中坏掉的磁盘
此试验模仿适才的磁盘阵列中某块硬盘坏掉后的替代操纵,因而在前边的环境中继承实行以下操纵。
1.4.1 模仿装备损坏
运用mdadm敕令的-f参数模仿装备损坏
[root@origin ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
0 8 16 - faulty /dev/sdb
[root@origin ~]#
在确认有一块物理硬盘装备涌现损坏而不能继承平常运用后,运用mdadm敕令将其移除,然后检察RAID磁盘阵列的状况,发明/dev/sdb磁盘的状况已转变。
在RAID10级别的磁盘阵列中,当RAID1磁盘阵列中存在一个毛病盘时并不影响RAID10 磁盘阵列的运用。当购买了新的硬盘装备后再运用 mdadm 敕令来予以替代即可,在此期间我们能够在/RAID目次中平常地竖立或删除文件。
由于我们是在虚拟机中模仿的,为了更实在,先重启体系,以后再继承后边的操纵。
重启以后发明损坏的盘已不再磁盘阵列中了
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@origin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-swap 253:0 0 2G 0 lvm [SWAP]
└─centos-root 253:1 0 17.5G 0 lvm /
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
└─md0 9:0 0 2G 0 raid10 /raid
sdd 8:48 0 1G 0 disk
└─md0 9:0 0 2G 0 raid10 /raid
sde 8:64 0 1G 0 disk
└─md0 9:0 0 2G 0 raid10 /raid
sr0 11:0 1 3.9G 0 rom
1.4.2 作废磁盘阵列目次挂载
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 80K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/md0 2.0G 6.0M 1.9G 1% /raid
/dev/sda1 497M 134M 363M 27% /boot
[root@origin ~]# umount /raid/
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 80K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 134M 363M 27% /boot
[root@origin ~]#
增添磁盘,须要先作废挂载
1.4.3 增添磁盘并到场磁盘阵列
作废挂载以后,我们再用mdadm敕令的-a参数增添磁盘
[root@origin ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
4 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
[root@origin ~]#
能够看到/dev/sdb装备到场磁盘阵列胜利
1.4.4 从新挂载磁盘阵列
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 80K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/md0 2.0G 6.0M 1.9G 1% /raid
能够看到磁盘阵列/dev/md0又胜利挂载到/raid目次了。
由于之前/etc/fstab文件以及增添了纪录,因而此处就无须再增添了。
至此就模仿出装备坏掉以后,从新用新磁盘修复的历程。
1.5 实例3-RAID5+备份盘计划
按上边的RAID10布置计划,最多许可 50%的硬盘装备发作毛病。统一组中的磁盘只需不全坏都能够平常事情,然则在极度状况下假如统一个RAID1中的磁盘装备悉数损坏,也会致使数据丧失。这类状况我们采纳采纳多加一块备份盘来处理,这块硬盘日常平凡处于闲置状况,一旦RAID磁盘阵列中有硬盘涌现毛病后则会立时自动顶替上去。
一样为了防备滋扰,从新克隆一个虚拟机,并采纳RAID5计划来举行演示。
采纳RAID5并没有什么特别之处,目标只是为了演示下RAID5的用法,由于前面示例1和2都是用的RAID10。
由于RAID5最少须要3块磁盘,别的此计划还须要一块备份盘,因而在虚拟机中克隆新机械后,增添4块硬盘。
1.5.1 竖立RAID5
采纳mdadm敕令竖立RAID5
[root@origin ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1047552K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@origin ~]#
参数-n 3代表竖立这个RAID5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
检察/dev/md0磁盘阵列看到有一块备份盘在守候中了(spare)。
1.5.2 花样RAID5磁盘阵列
用mkfs敕令将磁盘阵列花样化为ext4文件花样
[root@origin ~]# mkfs.ext4 /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
[root@origin ~]#
1.5.3 挂载磁盘阵列到目次
[root@origin ~]# echo "/dev/md0 /raid ext4 defaults 0 0" >> /etc/fstab
[root@origin ~]# mkdir /raid
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...省略部份内容
/dev/md0 2.0G 6.0M 1.9G 1% /raid
[root@origin ~]#
1.5.4 模仿磁盘损坏
我们再次模仿把硬盘装备/dev/sdb 移出磁盘阵列
[root@origin ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
[root@origin ~]#
敏捷检察/dev/md0 磁盘阵列的状况,发明备份盘/dev/sde已被自动顶替上去并入手下手了数据同步。
1.5.5 恢复损坏的磁盘
实在场景下,我们要保证随时有一块余暇的备份盘以防不测,因而须要替代或修复适才坏掉的盘/dev/sdb,恢复后它又自动变成余暇的备份盘,一旦有装备坏掉又会自动顶上去,从而保证数据的平安性。
由于我们上边一个步骤是模仿的/dev/sdb装备坏点,虽然坏了然则照样在占用中,因而重启虚拟机(重启后发明/dev/sdb就没有了,不重启会提醒/dev/sdd装备忙碌没法胜利实行以下步骤),然后实行以下操纵:
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
[root@origin ~]# umount /raid/
[root@origin ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 80K 914M 1% /dev/shm
tmpfs 914M 8.9M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 134M 363M 27% /boot
/dev/md0 2.0G 6.0M 1.9G 1% /raid
[root@origin ~]# mdadm -D /dev/md0
/dev/md0:
...省略部份内容
Number Major Minor RaidDevice State
3 8 64 0 active sync /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
5 8 16 - spare /dev/sdb
[root@origin ~]#
能够看到,增添后/dev/sdb装备又自动变成备份盘了。如许就保证了数据的平安。
二、逻辑卷治理器(LVM)
前面解说的用RAID磁盘阵列手艺来治理磁盘装备,虽然能有用供应磁盘装备的读写机能以及数据的平安性,然则硬盘装备分区或布置RAID磁盘阵列后,硬盘分区大小就难以调解,而LVM(逻辑卷治理器)手艺能够许可用户对硬盘资本举行动态调解。
2.1 LVM概述
LVM(Logical Volume Manager)是Linux体系用于对硬盘分区举行治理的一种机制,竖立初志是为了处理硬盘装备在竖立分区后不容易修正分区大小的缺点。
只管对传统的硬盘分区进 行强迫扩容或缩容从理论上来说是可行的,然则却也许形成数据的丧失。
LVM架构图以下:
LVM手艺是在硬盘分区和文件体系之间增添了一个逻辑层,它供应了一个笼统的卷组,能够把多块硬盘举行卷组兼并。如许一来,用户没必要体贴物理硬盘装备的底层架构和规划,就能够完成对硬盘分区的动态调解。
物理卷处于LVM中的最底层,能够明白为物理硬盘、硬盘分区或许RAID磁盘阵列。卷组竖立在物理卷之上,一个卷组能够包括多个物理卷,而且在卷组竖立以后也能够继承向个中增添新的物理卷。逻辑卷是用卷组中余暇的资本竖立的,而且逻辑卷在竖立后能够动态地扩大或减少空间。
在生产环境中没法精确地评价每一个硬盘分区在往后的运用状况,因而会致使 本来分派的硬盘分区不够用。跟着营业的增添磁盘不够用了须要扩容,或许营业缩减我们须要对磁盘分区举行精简缩容等等,这些都能够经由历程LVM来处理。
布置LVM时,须要逐一设置物理卷、卷组和逻辑卷。常用敕令以下:
功用 | 物理卷治理 | 卷组治理 | 逻辑卷治理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
竖立 | pvcreate | vgcreate | lvcreate |
显现 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩大 | vgextend | lvextend | |
减少 | vgreduce | lvreduce |
2.2 案例实操
为了防备滋扰,从新克隆一个虚拟机,并增添2块磁盘(增添2块的目标是为了演示将磁盘增添到LVM的卷组中,现实状况也许会有更多的磁盘)。
也许步骤为:先对这两块新硬盘举行竖立物理卷的操纵,然后对这两块硬盘举行卷组兼并,接下来依据需求把兼并后的卷组切割出一个约为 150MB 的逻辑卷装备,末了把这个逻辑卷装备花样化成 EXT4 文件体系后挂载运用。
2.2.1 布置LVM
(1)让磁盘装备支撑LVM
[root@origin ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 19.5G 0 part
├─centos-swap 253:0 0 2G 0 lvm [SWAP]
└─centos-root 253:1 0 17.5G 0 lvm /
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sr0 11:0 1 3.9G 0 rom /run/media/root/CentOS 7 x86_64
[root@origin ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
[root@origin ~]# pvscan
PV /dev/sda2 VG centos lvm2 [19.51 GiB / 0 free]
PV /dev/sdc lvm2 [1.00 GiB]
PV /dev/sdb lvm2 [1.00 GiB]
Total: 3 [21.51 GiB] / in use: 1 [19.51 GiB] / in no VG: 2 [2.00 GiB]
[root@origin ~]#
检察适才新家的2块装备为:sdb、sdc。将其竖立物理卷,并经由历程pvscan敕令检察以竖立物理卷。
(2)磁盘装备到场卷组
[root@origin ~]# vgcreate storage /dev/sdb /dev/sdc
Volume group "storage" successfully created
[root@origin ~]# vgdisplay
--- Volume group ---
VG Name storage
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 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 0 / 0
Free PE / Size 510 / 1.99 GiB
VG UUID EKcctk-C1nM-Y2W8-s7pS-1bq8-W9ie-UTJM8Z
...省略部份内容
[root@origin ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "storage" using metadata type lvm2
Found volume group "centos" using metadata type lvm2
[root@origin ~]#
用vgcreate竖立称号为storage的卷组,并经由历程vgdisplay或vgscan能够检察。
(3)竖立逻辑卷
切割出一个约为 150MB 的逻辑卷装备。这里须要注重切割单位的问题,在对逻辑卷举行切割时有两种计量单位。第一种是以容 量为单位,所运用的参数为-L。比方,运用-L 150M生成一个大小为 150MB 的逻辑卷。别的一种是以基础单位的个数为单位,所运用的参数为-l。每一个基础单位的大小默许为 4MB。比方,运用-l 37 能够生成一个大小为 37×4MB=148MB 的逻辑卷。
[root@origin ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created
[root@origin ~]# lvscan
ACTIVE '/dev/storage/vo' [148.00 MiB] inherit
ACTIVE '/dev/centos/root' [17.51 GiB] inherit
ACTIVE '/dev/centos/swap' [2.00 GiB] inherit
[root@origin ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
LV Write Access read/write
LV Creation host, time origin, 2020-01-01 22:14:18 +0800
LV Status available
'#' open 0
LV Size 148.00 MiB
Current LE 37
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
...省略部份内容
[root@origin ~]#
经由历程lvcreate竖立称号为vo的逻辑卷后,经由历程lvdisplay能够检察/dev/storage/vo大小为刚设置的148M(LV Size 148.00 MiB)。
(4)花样化逻辑卷并挂载
[root@origin ~]# mkfs.ext4 /dev/storage/vo
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
38000 inodes, 151552 blocks
7577 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=33816576
19 block groups
8192 blocks per group, 8192 fragments per group
2000 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
[root@origin ~]# mkdir /lvm
[root@origin ~]# mount /dev/storage/vo /lvm
[root@origin ~]# echo "/dev/storage/vo /lvm ext4 defaults 0 0" >> /etc/fstab
[root@origin ~]#
花样化逻辑卷后挂载到lvm目次,并把挂载信息写入fstab文件使其开机自动见效。
(5)检察挂载状况
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 9.0M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.9G 3.9G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo 140M 1.6M 128M 2% /lvm
[root@origin ~]# echo "test">/lvm/test.txt
[root@origin ~]# ls /lvm/
lost+found test.txt
[root@origin ~]#
经由历程df敕令就能够检察挂载胜利,并能够胜利写入文件到lvm目次下。
2.2.2 LVM扩容
上一步竖立的容量为148M,下面将演示将其扩大到300M
(1)卸载装备与挂载点的关联
[root@origin ~]# umount /lvm
[root@origin ~]#
(2)扩大逻辑卷
把上一个试验中的逻辑卷 vo 扩大至 300MB
[root@origin ~]# lvextend -L 300M /dev/storage/vo
Extending logical volume vo to 300.00 MiB
Logical volume vo successfully resized
[root@origin ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
LV Write Access read/write
LV Creation host, time origin, 2020-01-01 22:14:18 +0800
LV Status available
'#' open 0
LV Size 300.00 MiB
...省略部份内容
能够看到扩大后/dev/storage/vo逻辑卷大小为300M。
(3)搜检硬盘完全性并重置硬盘容量
[root@origin ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage/vo: 12/38000 files (0.0% non-contiguous), 10455/151552 blocks
[root@origin ~]# resize2fs /dev/storage/vo
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 307200 (1k) blocks.
The filesystem on /dev/storage/vo is now 307200 blocks long.
[root@origin ~]#
(4)从新挂载装备
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 9.0M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.9G 3.9G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo 287M 2.1M 266M 1% /lvm
[root@origin ~]#
能够看到扩容后,lvm目次的大小为300M(上图现实显现为287M)。
如许就完成了逻辑卷的扩容。
2.2.3 LVM减少容
相较于扩容逻辑卷,在对逻辑卷举行缩容操纵时,其丧失数据的风险更大,所以在生产环境中一定要提早备份数据。
为了保证数据平安性,Linux体系划定,在对LVM逻辑卷举行缩容操纵之前,要先搜检文件体系的完全性。
上一步扩容后lvm容量为300M,本次演示将其缩容到100M,步骤以下:
(1)卸载文件体系
[root@origin ~]# umount /lvm
[root@origin ~]#
(2)搜检文件体系完全性
[root@origin ~]# e2fsck -f /dev/storage/vo
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/storage/vo: 12/76000 files (0.0% non-contiguous), 15761/307200 blocks
[root@origin ~]#
(3)缩容逻辑卷
把逻辑卷 vo 的容量减小到 100MB
[root@origin ~]# resize2fs /dev/storage/vo 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/storage/vo to 102400 (1k) blocks.
The filesystem on /dev/storage/vo is now 102400 blocks long.
[root@origin ~]# lvreduce -L 100M /dev/storage/vo
WARNING: Reducing active logical volume to 100.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vo? [y/n]: y
Reducing logical volume vo to 100.00 MiB
Logical volume vo successfully resized
[root@origin ~]#
(4)从新挂载文件体系
[root@origin ~]# mount -a
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 4.5G 14G 26% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 914M 140K 914M 1% /dev/shm
tmpfs 914M 9.0M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
/dev/sr0 3.9G 3.9G 0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/storage-vo 93M 1.6M 85M 2% /lvm
[root@origin ~]#
能够看到lvm目次已减少到93M,如许就完成了逻辑卷的缩容操纵。
2.2.4 LVM快照功用
逻辑卷快照功用就类似于复原操纵体系,能够将逻辑卷状况复原到指定时候点。
LVM快照功用有2个特性:快照卷只能运用一次,一旦实行复原操纵后立时自动删除;快照卷的容量必需等同于逻辑卷的容量防备数据丧失。
(1)检察当前卷组信息
[root@origin ~]# vgdisplay
--- Volume group ---
VG Name storage
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 1.99 GiB
PE Size 4.00 MiB
Total PE 510
Alloc PE / Size 25 / 100.00 MiB
Free PE / Size 485 / 1.89 GiB
...省略部份内容
能够看到卷组中已运用了100M,余暇容量另有1.89G。(Alloc PE / Size 25 / 100.00 MiB, Free PE / Size 485 / 1.89 GiB)
(2)生成快照卷
[root@origin ~]# lvcreate -L 100M -s -n SNAP /dev/storage/vo
Logical volume "SNAP" created
[root@origin ~]# lvdisplay
--- Logical volume ---
LV Path /dev/storage/vo
LV Name vo
VG Name storage
LV UUID qziHT9-1qTT-1CRa-TIoq-cosz-Hhn0-jX5CVm
LV Write Access read/write
LV Creation host, time origin, 2020-01-01 22:14:18 +0800
LV snapshot status source of
SNAP [active]
LV Status available
'#' open 1
LV Size 100.00 MiB
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID TVfDRL-LnYd-z76K-fOuS-AD3C-Sw49-7jPgPo
LV Write Access read/write
LV Creation host, time origin, 2020-01-01 22:40:10 +0800
LV snapshot status active destination for vo
LV Status available
'#' open 0
LV Size 100.00 MiB
Current LE 25
COW-table size 100.00 MiB
COW-table LE 25
Allocated to snapshot 0.01%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
...省略部份内容
经由历程lvcreate敕令生成一个名为SNAP的快照逻辑卷。此时逻辑卷的存储空间占用量为0.01%。(Allocated to snapshot 0.01%)
(3)逻辑卷中增添文件,检察快照卷空间运用量
[root@origin ~]# dd if=/dev/zero of=/lvm/files count=1 bs=50M
1+0 records in
1+0 records out
52428800 bytes (52 MB) copied, 0.289668 s, 181 MB/s
[root@origin ~]# ls /lvm/
files lost+found test.txt
[root@origin ~]# df -h
Filesystem Size Used Avail Use% Mounted on
...省略部份内容
/dev/mapper/storage-vo 93M 52M 35M 61% /lvm
[root@origin ~]# lvdisplay
...省略部份内容
--- Logical volume ---
LV Path /dev/storage/SNAP
LV Name SNAP
VG Name storage
LV UUID TVfDRL-LnYd-z76K-fOuS-AD3C-Sw49-7jPgPo
LV Write Access read/write
LV Creation host, time origin, 2020-01-01 22:40:10 +0800
LV snapshot status active destination for vo
LV Status available
'#' open 0
LV Size 100.00 MiB
Current LE 25
COW-table size 100.00 MiB
COW-table LE 25
Allocated to snapshot 50.29%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
...省略部份内容
在逻辑卷所挂载的目次中竖立一个50MB 的垃圾文件,然后再检察快照卷/dev/storage/SNAP和逻辑卷/dev/storage/vo的状况。能够发明存储空间的占用量都上升了,快照卷占用量为:Allocated to snapshot 50.29%。
(4)经由历程快照卷复原逻辑卷
经由历程适才竖立的/dev/storage/SNAP快照卷,复原逻辑卷/dev/storage/vo的状况。
复原之前先作废目次挂载
[root@origin ~]# umount /lvm/
[root@origin ~]# lvconvert --merge /dev/storage/SNAP
Merging of volume SNAP started.
vo: Merged: 72.9%
vo: Merged: 100.0%
Merge of snapshot into logical volume vo has finished.
Logical volume "SNAP" successfully removed
[root@origin ~]#
能够看到复原逻辑卷后,快照卷自动删除了,经由历程lvdisplay敕令检察也不会再有/dev/storage/SNAP 。
(5)从新挂载逻辑卷并检察文件
[root@origin ~]# mount -a
[root@origin ~]# ls /lvm/
lost+found test.txt
[root@origin ~]#
能够看到,复原以后适才竖立files文件不见了,如许就把逻辑卷复原到了竖立快照时的状况。
2.2.5 删除逻辑卷
当生产环境中想要从新布置LVM或许不再须要运用 LVM 时,能够删除LVM。
须要提早备份好主要的数据信息,然后顺次删除逻辑卷、卷组、物理卷装备,次序不可倒置。
(1)作废挂载
[root@origin ~]# umount /lvm/
作废逻辑卷与目次的挂载关联,删除设置文件中永远见效的装备参数,找到之前增添在/etc/fstab文件中的一行“/dev/storage/vo /lvm ext4 defaults 0 0”并删除。
(2)删除逻辑卷
[root@origin ~]# lvremove /dev/storage/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
[root@origin ~]#
(3)删除卷组
[root@origin ~]# vgremove storage
Volume group "storage" successfully removed
[root@origin ~]#
只写卷组称号即可,不须要装备的绝对途径。
(4)删除物理卷
[root@origin ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped
Labels on physical volume "/dev/sdc" successfully wiped
[root@origin ~]#
在上述操纵实行终了以后,再实行 lvdisplay、vgdisplay、pvdisplay 敕令来检察 LVM 的信 息时就不会再看到信息了,申明删除胜利。
经由历程上文和本文的演示,基础控制了centos7下磁盘治理相干操纵,假如非运维职员不一定要控制的异常深入,明白即可。
本文讲了许多磁盘相干的敕令,须要多敲几篇天然就熟习了。下一篇文章再补充解说下SSH效劳相干的学问,然后就入手下手解说应用效劳的布置和运用了(如apache、邮件体系、mysql、动态网站布置等)。
手把手带你阅读Mybatis源码(三)缓存篇