软件磁盘阵列与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容量,增加用+号,减少用-号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用阿里云智能云实现垃圾分类

目录 1. 作者介绍2. API3. 阿里云API垃圾分类业务4. 实验过程4.1 接入阿里云4.2 创建并获取AccessKey ID和Secret4.3 登录阿里云官网,搜索垃圾分类技术文档4.4 配置环境变量4.5 代码部分 1. 作者介绍 孙作正,男,西安工程大学电子信息学院&am…

初中英语优秀作文分析-003My Favorite Movie Type-我最喜欢的电影类型

PDF格式公众号回复关键字:SHCZYF003 记忆树 1 I’d like to share my favorite movie type with you. 翻译 我想和你分享我最喜欢的电影类型。 简化记忆 电影类型 句子结构 I 主语 我,would 情态动词 愿意做某事,like 谓语 喜欢,to sha…

docker部署skywalking

skywalking版本下载 1:拉取skywalking的oap镜像(可以选择自己的版本,最好与ui,agent版本一致) docker pull apache/skywalking-oap-server:9.5.02:启动oap docker run -d -p 11800:11800 -p 12800:12800 --name sw_oap apache/…

蓝桥杯物联网竞赛_STM32L071_19_输出方波信号(PWM)

国赛考了一个方波,第一次考这个,连个示波器都没有 CUBMX配置: 按上述配置刚好是32MHZ / 32 / 100 1KHZ 理论: 频率:就是一秒钟能产生多少个脉冲,如下图: 这算是一个脉冲,1KHZ说明一秒钟产生1…

STM32使用HAL库UART接收不定长数据-1

使用STM32的HAL库实现UART串口不定长数据的接收 使用STM32的UART接收数据的时候,经常会遇到接收长度不固定的数据,比如一帧数据可能是10个字节,也可能是12个字节。这种数据称为不定长数据。 现有的很多通信协议是不定长的,比如mo…

Docker大学生看了都会系列(一、Docker介绍)

系列文章目录 第一章 Docker介绍 第二章 2.1 Mac通过Homebrew安装Docker 第二章 2.2 CentOS安装Docker 文章目录 前言Docker容器简介什么是Docker容器为什么要用Docker容器Docker容器的特性Docker容器对比VM(虚拟机)Docker容器三大组成要素镜像容器镜像仓库 Docker容器运行流程…

gradle构建项目简单入门

gradleProject 搭建gradle项目步骤 官网文档地址:https://docs.gradle.org/current/userguide/userguide.html Getting Started 1.Gradle核心内容 1.Gradle介绍 Project:类似模块划分Build Scripts:构建ProjectDependency Management&…

多线程新手村5--线程池

1.1 线程池是什么 线程诞生的意义是因为进程的创建/销毁开销太大,所以使用线程提高代码的执行效率;那如果想要进一步提升执行效率,该怎么办呢?有一个方法是使用线程池。 首先,什么是线程池:池就是池子&am…

Vue——样式绑定的几种方式

文章目录 前言往期回顾绑定对象绑定对象的另一种写法绑定数组数组与对象的嵌套 前言 样式绑定在vue中属于一种很常见的操作。在之前博客中针对样式的绑定操作,介绍了一个指令v-bind。缩写为:xxx。 vue 官网 样式绑定 往期回顾 先简单回顾下最开始绑定标签样式的操…

vue3_组件间通信方式

目录 一、父子通信 1.父传子( defineProps) 2.父传子(useAttrs) 3.子传父(ref,defineExpose ) 4.子传父(defineEmits) 5.子传父(v-model) …

车载测试面试题专题 - 如何测试蓝牙电话功能

现代车载系统中,蓝牙电话功能已经成为了一个必不可少的功能。它不仅提高了驾驶安全性,还提供了极大的便利性。作为车载行业的测试人员,如何全面、有效地测试车载蓝牙电话功能是我们工作的重要部分。因此在车载测试的面试过程中,蓝…

k8s怎么监听自定义资源的变更?(1)

这里我们通过 k8s的 code-generate来生成操作自定义资源的代码来监听变更 第一步下载工具 下载安装 k8s code-generate 查看我们的k8s版本 kubectl get node 输出结果为 可以看到我们的k8s版本为 v1.22.0 所以此时我们要下载与之对应的版本的code-generate git clone htt…

深入解析 Web 开发中的强缓存与协商缓存机制

在 Web 开发中,缓存机制是提高页面加载速度和用户体验的重要技术。缓存分为两种主要类型:强缓存和协商缓存。本文将详细介绍这两种缓存机制的原理、实现方式及其区别,并演示如何在 <meta> 元素中和 Nginx 服务器中进行缓存控制。 强缓存 强缓存(Strong Caching)是指…

iPhone的5G设置怎么更改吗?设置好这些能够优化电池的使用寿命

随着5G技术的普及&#xff0c;iPhone用户现在可以享受到更快的网络速度&#xff0c;但这同时也带来了一个问题&#xff1a;如何在使用5G和保持电池寿命之间找到平衡&#xff1f;苹果公司通过引入“5G Auto”设置&#xff0c;为用户提供了一个智能的解决方案&#xff0c;但用户也…

【JAVA WEB实用与优化技巧】如何使用本地.bat/.sh脚本快速将服务发布到测试环境?

文章目录 普通方式的springboot 使用docker打包发布【手动构建镜像模式】1. maven 打包可运行jar包2.手动打包镜像3.运行容器 全自动化本地命令发布到远程服务的方式配置ssh信任公钥获取公钥git 获取公钥方式: 桌面右键 -> open git gui here -> help -> show SSH key…

Honor of Kings 2024.06.03 50star (S35) AFK

Honor of Kings 2024.06.03 50star (S35) AFK 来个赛季S35总结吧&#xff0c;这个赛季结束以后&#xff0c;可能要和【魔兽世界】一样AFK了&#xff0c;手游来说肯定没法子和WOW相比&#xff0c;干啥都是有队友才好玩。 我玩的基本都是肉&#xff0c;爆发强的英雄&#xff0c;最…

llama-factory微调大模型

一、背景 微调或者全量调大语言模型&#xff0c;还包括deepseek,想找个快速的微调教程&#xff0c;网上暂时没有 二、原理和步骤 原理&#xff1a;搭建环境太累了&#xff0c;还是docker环境镜像简单快捷 1、先下载模型 如果用本身的会自动从huggingface下载&#xff0c;这…

解决JSON.stringify 方法在序列化 BigInt 类型时的错误

今天学nest时&#xff0c;使用apifox发送请求获取数据&#xff0c;结果还一直报错&#xff0c;而且还是我从未见过的 Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at stringify&#xff0c; 我都是跟着人家敲的&#xff0c;我就纳闷了&…

vector的使用和实现

目录 一、vector的常用接口说明1.vector的介绍2.vector的使用2.1 vector的定义2.2 vector的遍历operator[ ]迭代器范围for 2.3 vector的空间增长问题size和capacityreserveresize 2.4 vector的增删查改push_back和pop_backinserterasefindsort vector的模拟实现1、基本成员变量…

Linux基础操作——文件系统+find+head+tail

Linux基础操作——文件系统findheadtail 本文主要涉及LINUX的一些基础操作&#xff0c;文件系统与find命令head和tail命令 文章目录 Linux基础操作——文件系统findheadtail一、Linux下的文件类型二、ls -l 后各列的解释三、 find 查找四、 head 与 tail 查看文件的头部尾部 一…