当前位置: 首页 > news >正文

软件磁盘阵列与LVM

一、软件磁盘阵列

磁盘阵列(RAID)是通过硬件或软件技术将多个较小的磁盘整合成为一个较大的磁盘设备,而这个较大的磁盘除了存储还具备数据保护功能。

RAID分不同的级别,不同级别具有不同功能:

  • 1、RAID 0:性能最佳

    这种模式的RAID会将磁盘先切出等量的数据块chunk,当一个文件要写入时,该文件会根据chunk的大小切割好,之后再依序放到各个磁盘里去,数据会被等量的放到各个磁盘上,每块磁盘负责的数据量都降低了,因此性能会好。

    但是RAID 0只要有任何一块磁盘损坏,在RAID上面的所有数据都会遗失而无法读取。

  • 2、RAID 1:完整备份

    这种模式主要是让同一份数据完整地保存在两块磁盘上面。由于数据写入时存在复制行为,所以RAID 1的写入性能不佳,但读取性能还可以。

    RAID 1最大的优点就是数据备份,但磁盘容量有一半用作备份,因此总容量会是全部磁盘容量的一半。

  • 3、RAID 5:性能与数据的均衡考虑

    该磁盘阵列类型需要三块以上的硬盘,这种磁盘阵列的写入类似于RAID 0,这不过每次数据写入,都会有奇偶校验值被记录下来,并且每次记录在不同的磁盘。由于需要存储奇偶校验值,因此RAID 5的总容量时整体磁盘数量减一块。而当损坏的磁盘数量大于等于两块时,RAID 5是无法恢复数据的,它只能支持一块磁盘损坏的情况。

  • 4、RAID 1+0/0+1 与RAID 6

    RAID 1+0/0+1 是RAID 1与RAID 0结合的产物,例如RAID 1+0 是宏观方案使用RAID 1,存储两份相同数据,而微观上,每份数据的存储方案都采用RAID 0,即分多块磁盘分散存储数据。RAID 6是最新的磁盘阵列模式,它是RAID 5 的进一步发展,使用两块磁盘存储奇偶校验值,那么允许出错的磁盘数量也达到了两块。

当磁盘阵列的磁盘损坏时,就需要将坏掉的磁盘拔除,然后换一块新的磁盘。换成新磁盘并且顺利启动磁盘阵列后,磁盘阵列就会开始主动重建(rebuild)原本坏掉的那块磁盘数据到新的磁盘上,然后磁盘阵列上面的数据就恢复了,这就是磁盘阵列的优点。不过,我们还是得要动手拔插硬盘,除非系统支持热插拔,否则通常得要关机才能这么做。

为了让系统可以实时地在坏掉硬盘时主动地重建,就需要热备份磁盘(spare disk)的辅助。所谓的热备份磁盘就是一块或多块没有包含在原本磁盘阵列级别中的磁盘,这块磁盘平时并不会被磁盘阵列所使用,当磁盘阵列有任何磁盘损坏时,这块热备份磁盘就会被主动拉进磁盘阵列中,并将坏掉的那块硬盘移出磁盘阵列,然后立即重建数据系统,如此你的系统就可以永保安康。

硬件磁盘阵列是通过磁盘阵列卡来完成磁盘阵列的功能,但是磁盘阵列卡一般较为昂贵,低端主板上集成的磁盘阵列卡通常仅支持RAID 0和RAID 1,因此就发展出软件模拟磁盘阵列的功能。硬件磁盘阵列向上透明。因此硬件磁盘阵列的设备文件名为/dev/sd[a~p],由于软件磁盘阵列是系统模拟的,因此使用的设备文件名是系统的设备文件,文件名为/dev/md[0~128]

二、LVM

为了实现磁盘分区的动态扩容或缩小,引入了LVM。LVM的全名是Logical Volume Manager,中文翻译为逻辑卷管理器。

  • 物理卷(Physical Volume,PV)

我们实际的分区(或Disk)需要调整系统标识符(system ID)成为 LVM的标识符,然后再经过 pvcreate 的命令将它转成 LVM 最底层的物理卷(PV),之后才能够将这些PV加以利用。调整 system ID 的方式就是通过gdisk。

  • 卷组(Volume Group,VG)

所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。那么这个大磁盘最大可以到多少容量呢?在64位的Linux系统上面,LV几乎没有啥容量限制。

  • 物理扩展块(Physical Extent,PE)

LVM 默认使用4MB的PE数据块,它是整个LVM最小的存储数据单位,也就是说,其实我们的文件数据都是借由写入PE 来完成的。简单地说,这个PE 就有点像文件系统里面的block大小。LVM可以弹性修改文件系统容量就是通过交换PE来进行数据转换。

  • 逻辑卷(Logical Volume,LV)

最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类似分区的东西了。那么LV是否可以随意指定大小呢?当然不可以。既然PE 是整个LVM的最小存储单位,那么LV的大小就是PE的整数倍。为了方便用户利用LVM来管理VG,LV的设备文件名通常为【/dev/gname/vname】的样式。

请添加图片描述

建立PV:

pvcreate #将物理分区建立成pv
pvscan #查找目前系统内的pv
pvdisplay #显示某一pv的具体状态
pvremove #删除pv

建立VG:

vgcreate [-s N[mgt]] VG名称  PV名称 #建立VG
# -s后面接PE的大小,单位可以是m、g、t
vgscan #查找系统中所有VG
vgdispaly #显示某一VG的具体状态
vgextend #在VG内增加额外的PV
vgchange #设置VG是否启动
vgremove #删除一个VG

创建LV:

lvcreate [-L N[mgt]] -n LV名称 VG名称 #建立LV
#-L后面接容量,容量单位可以是M、G、T,但是容量需要为PE的整数倍
lvscan #查询所有的LV
lvdisplay #显示某一lv的状态
lvextend #增加容量
lvreduce #减少容量
lvremove #删除一个LV
lvresize [-L +/-N[mgt]] LV名称 #调整LV容量,增加用+号,减少用-号

相关文章:

  • 统计信号处理基础 习题解答10-5
  • 知名专业定制线缆知名智造品牌推荐-精工电联:解决水下机器人线缆行业痛点的领航者
  • C++第二十一弹---vector深度剖析及模拟实现(上)
  • 基于标准库的STM32的外部中断EXTI
  • MyBatis延迟加载缓存分页逆向工程
  • 【计算机毕业设计】345大学生心理健康测评管理系统小程序
  • Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)
  • 网络原理-TCP/IP --传输层(UDP)
  • 艾体宝洞察 | Redis Enterprise对比ElastiCache
  • springboot实现文件上传功能,整合云服务
  • 前端经典手写面试题---节流防抖
  • (含笔试题)深度解析数据在内存中的存储
  • JS-09-es6常用知识1
  • NVIDIA Technologies
  • Spring Boot(七十四):集成Guava 库实现布隆过滤器(Bloom Filter)
  • #Java异常处理
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Android框架之Volley
  • egg(89)--egg之redis的发布和订阅
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • mysql中InnoDB引擎中页的概念
  • rc-form之最单纯情况
  • React-redux的原理以及使用
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 诡异!React stopPropagation失灵
  • 后端_ThinkPHP5
  • 精彩代码 vue.js
  • 前端性能优化--懒加载和预加载
  • 如何在 Tornado 中实现 Middleware
  • 数据结构java版之冒泡排序及优化
  • 我有几个粽子,和一个故事
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ###C语言程序设计-----C语言学习(3)#
  • #职场发展#其他
  • (20050108)又读《平凡的世界》
  • (4.10~4.16)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (四)图像的%2线性拉伸
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)VirtualBox安装增强功能
  • (转)LINQ之路
  • (转)程序员技术练级攻略
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .bat文件调用java类的main方法
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .Net 垃圾回收机制原理(二)