day12:磁盘阵列

news2024/11/24 18:27:19

一,RAID概述

RAID(Redundant Array of Independent Disks)是一种数据存储虚拟化技术,起源于1980年代,旨在提高存储系统的性能和可靠性。最初,由加州大学伯克利分校的研究人员提出,RAID技术的核心理念是将多个物理硬盘组合成一个逻辑单元,以提供数据冗余和更高的读写性能。

RAID与LVM可以结合使用,在物理层面使用RAID提高冗余和性能,而在逻辑层面使用LVM灵活管理存储空间。这种组合可以最大化存储系统的性能和灵活性。

二,常见的RAID级别

RAID级别的选择依赖于特定应用场景的需求,包括性能、冗余策略和存储成本等。

RAID级别描述优点缺点图例运用场景
RAID 0
数据条带化(Striping),将数据均匀分布到多个磁盘上(至少两块)提高读写性能,没有冗余任何一个磁盘故障导致数据丢失高性能需求的场景,如视频编辑、游戏服务器等。
RAID 1
数据镜像(Mirroring),每个数据都有一个完整的副本(至少两块)数据冗余,提高数据安全性存储效率低,需两倍的磁盘空间需要高可用性的场景,如数据库服务器和文件服务器。
RAID 5
数据条带化 和奇偶校验,至少需要三个磁盘提高读写性能,有冗余,能承受一个磁盘故障写入性能较低,至少需要三块磁盘通常用于文件服务器、企业级存储,平衡性能和冗余。
RAID 6
类似于RAID 5,但有双重奇偶校验,至少需要四个磁盘能承受两个磁盘故障,数据安全性更高写入性能更低,存储效率较低数据安全要求高的环境,如银行和金融服务。
RAID 10
结合RAID 0和RAID 1,数据条带化与镜像结合,至少需要四个磁盘提高读写性能和数据冗余需要较多的磁盘空间数据库应用、虚拟化环境,要求高性能和高可用性。
RAID 50
RAID 5的条带化,至少需要六个磁盘提高性能和冗余能力成本高,复杂度增加大型存储系统,平衡性能和容量,适用于高负载应用。
RAID 60
RAID 6的条带化,提供更高的冗余和性能提供高冗余性和良好的读取性能,适合对数据安全性要求极高的应用场景。写入性能受影响和存储效率较低,整体成本较高。数据安全性极高的应用,如关键业务系统和大数据存储。

三,软硬RAID

软RAID(基本上不用)mdadm

通过软件工具(如 mdadm)在操作系统级别管理RAID,灵活性高,但可能对CPU性能有一定影响,适合小型或个人项目。

硬RAID(硬件——RAID卡)

使用专用的RAID控制器卡,提供更高的性能和可靠性,通常有自己的处理器和内存,适合对性能和数据安全性有较高要求的企业环境。(具有帮助手册)

四,软RAID创建-RAID1

  1. 环境准备

    1. 一块盘,3主1扩7逻辑(10个分区),每个分区容量差不多相等(注意扩展分区只是存放逻辑分区的相关信息,所以是不可能有太大的空间的,你应该知道,看看我写的10个分区就明白了)
    2. 安装mdadm工具
  2. mdadm命令

    1. 具体的命令:mdadm 【模式】【磁盘阵列】【参数】设备名
      完整选项简写选项描述示例命令
      --create-C创建新的 RAID 阵列mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
      --raid-devices=<数量>-n指定 RAID 设备数量mdadm -C /dev/md0 -l 1 -n 3 /dev/sdb1 /dev/sdb2 /dev/sdb3
      --level=<级别>-l指定 RAID 级别mdadm -C /dev/md0 -l 5 -n 4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
      --spare-devices-x用于指定在 RAID 阵列中使用的备份设备数量。这个选项与 RAID 阵列的创建或调整有关。mdadm -C /dev/md0 --level=5 -n=4 -x 1 /dev/sda{1,2,3,4,5}
       
      --name=<名称>-N指定自定义名称mdadm -C /dev/md0 -N myraid -l 0 -n 2 /dev/sdb1 /dev/sdb2
      --assemble-A组装已存在的 RAID 阵列(也就是重新启动)mdadm -A /dev/md0 /dev/sdb1 /dev/sdb2
      可以不指定具体的设备,因为 mdadm 可以通过配置文件(前提要有)或扫描系统自动识别 RAID 设备。mdadm -A /dev/md0
      -A --scan 自动扫描组装所有 RAID 阵列,并且启动mdadm --assemble --scan
      --add-a向 RAID 阵列添加新设备mdadm -a /dev/md0 /dev/sdb3
      --remove-r从 RAID 阵列中移除设备mdadm -r /dev/md0 /dev/sdb1
      --fail-f将设备标记为故障mdadm -f /dev/md0 /dev/sdb1
      --stop-S停止 RAID 阵列mdadm -S /dev/md0
      --detail-D查看 RAID 阵列详细信息mdadm -D /dev/md0
      --examine-E检查 RAID 超级块信息mdadm -E /dev/sdb1
      --zero-superblock-z清除 RAID 超级块mdadm -z /dev/sdb1
      --monitor-m监视 RAID 阵列状态mdadm -m /dev/md0
      --force-f强制操作mdadm -A --force /dev/md0 /dev/sdb1 /dev/sdb2
      --save-s保存当前 RAID 配置必须和-A(--assemble)连用(或者是刷新已有配置文件)mdadm -A --save /dev/md0【不跟设备就是所有,跟就是特定】
      --detail --scan-D -scan自动扫描并输出配置mdadm --detail --scan 【raid设备名,不写就当前所有】> /etc/mdadm.conf
  3. RAID0创建

    1. 创建raid0:mdadm -C /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
      1. 【设备名:/dev/md[x],x可以从0开始】胡乱写就会自己分配
    2. 查看状态:mdadm -D /dev/md[x]或者  cat /proc/mdstat
    3. 格式:mkfs.[选项]、mkswap     【设备】
    4. 挂载:mount 【设备】【挂载点】
  4. RAID1创建

    1. 创建raid1:mdadm -C  /dev/md1 -l 1 -n 2 /dev/sdb3 /dev/sdb5
    2. 查看raid1:cat /proc/mdstat或者mdadm -D /dev/md1
    3. 格式化:mkfs.ext4 【设备】
    4. 挂载
  5. 保存RAID(修改配置文件/etc/mdadm.conf)

    1. 这个文件默认没有要创建
      1. mdadm --detail --scan > /etc/mdadm.conf(建议覆盖不要追加)
    2. mdadm -A --save 【设备名】:刷新一下
  6. 停止与其它RAID

    1. 先解除挂载——》mdadm -S /dev/md[x]关闭
    2. mdadm -A  /dev/md[x]启动——》然后就可以挂载了
  7. RAID删除

    1. 解挂
    2. 停止使用:mdadm -S /dev/md[x]
    3. 删除磁盘阵列:mdadm -R /dev/md[x]
    4. 清除元数据:mdadm --misc   -z /dev/sd[x][数字](与之前删除的阵列相关的磁盘)
      1. misc 表示与设备或 RAID 阵列的某些状态或元数据相关的杂项信息,通常用于描述不特定或不标准的设备状态。
    5. 重新将当前的raid状态放入配置文件,可以vim配置文件,也可以:mdadm -D --scan > /etc/mdadm.conf

五,软RAID创建-RAID5

  1. 环境准备

    1. 4块盘
    2. mdadm安装
  2. RAID5创建

    1. 创建raid:mdadm -C /dev/md5 -x 1 -l 5 -n 3 /dev/sdb6 /dev/sdb7 /dev/sdb8 /dev/sdb9
      1. -x表示热备盘的数量,热备盘:当 RAID 阵列中的某个磁盘发生故障时,热备盘会自动介入,开始恢复数据并替代故障磁盘。(一般不指定就是最后一个盘,如果指定就按照如下语法:-x 数量 【盘名】)
    2. 查看raid5:mdadm -D /dev/md5 ,cat /proc/mdstat
    3. 设置文件系统(格式):mkfs.ext4  /dev/md5(或者mkswap {设备名})
    4. 挂载:mkdir /mnt/raid5;mount /dev/md5 /mnt/raid5
  3. 保存RAID

    1. mdadm -D -scan > /etc/mdadm.conf
  4. 热备盘测试

    1. mdadm /dev/md5 -f /dev/sdb8
    2. 移除sdb8再添加就相当于撤销了-f的损坏标记
      mdadm -r /dev/md5  /dev/sdb8;mdadm -a /dev/md5 /dev/sdb8
  5. 停止与启动RAID

    1. mdadm -S /dev/md5(停止)mdadm  -A  /dev/md5(启动)
  6. RAID删除

    1. 解挂
    2. 关闭阵列:mdadm -S /dev/阵列名
    3. 删除阵列:mdadm -r /dev/阵列名【不要跟设备名】
    4. 清除元数据:mdadm -Z /dev/sdb【对应删除的物理盘】

六,扩展内容

inode

什么是 inode?

我们可以把 inode 想象成一个 学生档案卡,上面记录着学生的名字、年龄、班级等信息,但不记录具体位置。类似地,在文件系统中,每个文件都有一个 inode,里面记录了文件大小、文件类型、权限、以及文件在磁盘上的存储位置等信息。

链接(ln 【-s】源  目标)

假设你有一张非常漂亮的画(文件),你想让小朋友们都知道这张画在哪儿。于是你写了几个“名字贴”:

  1. 硬链接(Hard Link):就像给画贴上好几个真正的名字贴,比如贴在不同的小朋友手上。每个名字贴都直接指向这幅画,不管画在哪儿,有名字的小朋友都能找到它。即使画上某个名字被撕掉,其他名字贴还在,所以画还是不会丢!

  2. 软链接(Soft Link):是像给画拍了张“定位照片”,只告诉小朋友“画在这边哦”,所以每次想看画,他们还是得顺着照片找过去。如果画的地方变了(比如搬到别的房间),照片就不管用了——因为照片里的“路”变错了。
     

硬链接(存放的文件地址)

ln 源 目标(对目录没有用)

硬链接(Hard Link)可以理解为多个文件名指向同一个 inode。假设有一个文件叫 “学习计划”,它有一个 inode 编号 1001。如果我们创建一个硬链接,就好像给同一个文件加了另一个名字。比如,“学习计划”有了第二个名字叫 “复习资料”。不管叫哪个名字,它们指向的都是 inode 1001,所以都能找到同一个文件内容。

  • 软链接文件有自己独立的 inode,它只记录了“指向哪个文件名”。
  • 如果原文件被删除或位置改变,软链接会失效,变成“断开的链接”。

软连接(存放的文件地址)

ln -s 源 目标(对目录有用)

软链接(Soft Link)是一个指向原文件路径的快捷方式,它并不直接指向原文件的 inode,而是指向原文件的文件名。就像在桌面上创建一个快捷方式,如果文件名(或位置)变了,快捷方式就会失效。

  • 删除任意一个文件名,文件内容还在,因为文件的 inode 还存在。
  • 文件内容真正消失,只有在所有硬链接都被删除后才会发生。

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

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

相关文章

Chromium 中chrome.topSites扩展接口定义c++

一、chrome.topSites 使用 chrome.topSites API 访问新标签页上显示的热门网站&#xff08;即最常访问的网站&#xff09;。不包括用户自定义的快捷方式。 权限 topSites 您必须声明“topSites”扩展程序清单中授予使用此 API 的权限。 {"name": "My exten…

Qt自定义控件:汽车速度表

1、功能 制作一个汽车速度表 2、实现 从外到内进行绘制&#xff0c;初始化画布&#xff0c;画渐变色外圈&#xff0c;画刻度&#xff0c;写刻度文字&#xff0c;画指针&#xff0c;画扇形&#xff0c;画内圈渐变色&#xff0c;画黑色内圈&#xff0c;写当前值 3、效果 4、源…

​Java面试经典 150 题.P13. 罗马数字转整数(012)​

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int romanToInt(String s) {int sum…

stl_stack/queue

一.适配器 stack和queue实际上并不能算是一种容器&#xff0c;而是一种容器适配器。而适配器作为stl的6大组件之一&#xff0c;其实是一种设计模式。适配器模式其实就是将一个类的接口&#xff08;该接口无法直接满足客户的需求&#xff09;转换成客户希望的另一个接口&#x…

计算机网络:网络层 —— 虚拟专用网 VPN

文章目录 虚拟专用网 VPN 概述内联网 VPN外联网 VPN 虚拟专用网 VPN 概述 虚拟专用网&#xff08;Virtual Private Network&#xff0c;VPN&#xff09;&#xff1a;利用公用的因特网作为本机构各专用网之间的通信载体&#xff0c;这样形成的网络又称为虚拟专用网。 出于安全…

SSM酒店预订住宿管理系统-计算机毕业设计源码01085

摘要 随着互联网和移动技术的快速发展&#xff0c;酒店行业也面临着巨大的变革和机遇。传统的酒店管理方式存在着信息不透明、预订流程繁琐等问题&#xff0c;无法满足现代消费者对便捷、高效、个性化服务的需求。因此&#xff0c;开发酒店预订住宿管理系统具有重要的意义。本文…

STM32CubeMX学习(三) SPI+DMA通信

STM32CubeMX学习&#xff08;三&#xff09; SPIDMA通信 一、简介二、新建STM32CubeMX项目并使用外部时钟三、SPI3配置四、相关代码五、测试 一、简介 本文将基于STM32F103RCT芯片介绍如何在STM32CubeMXKEIL5开发环境下进行SPIDMA通信。 操作系统&#xff1a;WIN10 x64硬件电…

LLaMA系列一直在假装开源...

伙伴们&#xff0c;很奇怪~ 关于LLM的开源与闭源模型的竞争又开始愈发激烈。 众所周知&#xff0c;开源模型以其开放性和社区驱动的特点受到一部分用户的青睐&#xff0c;而闭源模型则因其专业性和性能优化被广泛应用于商业领域。由于大模型最近2年的突然兴起&#xff0c;开源…

C语言 核心语法2

时间&#xff1a;2024.11.1 一、学习内容 1、计算机的存储规则 1.1存储规则 视频是图片和声音的结合体。 在计算机中&#xff0c;任意数据都是以二进制的形式进行存储的。 在计算机中&#xff0c;二进制可以表示万事万物。 1.2十进制 1.3二进制的运算过程 1.4文本存储 …

客户端与微服务之间的桥梁---网关

当我们创建好了N多个微服务或者微服务的实例之后&#xff0c;每个服务暴露出不同的端口地址&#xff0c;一般对于客户端请求&#xff0c;只需要请求一个端口&#xff0c;要隔离客户端和微服务的直接关系&#xff0c;保证微服务的安全性和灵活性&#xff0c;避免敏感信息的泄露。…

萤石设备视频接入平台EasyCVR私有化部署视频平台高速公路视频上云的高效解决方案

经济的迅猛发展带来了高速公路使用频率的激增&#xff0c;其封闭、立交和高速的特性变得更加显著。然而&#xff0c;传统的人工巡查方式已不足以应对当前高速公路的监控挑战&#xff0c;监控盲点和响应速度慢成为突出问题。比如&#xff0c;非法占用紧急车道的情况屡见不鲜&…

【论文速读】| APILOT:通过避开过时API陷阱,引导大语言模型生成安全代码

基本信息 原文标题&#xff1a;APILOT: Navigating Large Language Models to Generate Secure Code by Sidestepping Outdated API Pitfalls 原文作者&#xff1a;Weiheng Bai, Keyang Xuan, Pengxiang Huang, Qiushi Wu, Jianing Wen, Jingjing Wu, Kangjie Lu 作者单位&a…

泡泡玛特行至巅峰,又顷刻“瓦解”?

今年&#xff0c;在海外“一呼百应”的LABUBU与“老妈”泡泡玛特一同步入了潮玩时代的全新阶段。 先是LABUBU获授“神奇泰国体验官”&#xff0c;首个LABUBU主题店也落地曼谷。随后泡泡玛特也在发布三季度财报后迎来股价新高&#xff08;10月24日收盘价75.85元/股&#xff0c;…

如何看待长周期项目?

有一个客户&#xff0c;想找你做一个软件项目。你大体评估了一下&#xff0c;项目成本300万&#xff0c;项目收入400万&#xff0c;有大概100万左右的毛利。但项目的周期&#xff0c;会比较长&#xff0c;大概是3年。 你会做吗&#xff1f; 我从自己的经验和直觉来看&#x…

Flutter仿微信,高度还原,开源

Flutter仿微信开源项目&#xff0c;持续更新中 Flutter仿微信项目&#xff0c;已开源&#x1f680;&#x1f680;&#x1f680;说明效果预览开发进度说明未来计划项目结构说明组件封装示例最后持续更新中... Flutter仿微信项目&#xff0c;已开源&#x1f680;&#x1f680;&am…

HBA:基于分层激光雷达集束调整的一致性建图

文章目录 前言一、介绍二、相关工作三、方法A. 概述B. 自底向上的分层BA&#xff08;Bundle Adjustment&#xff09;C. 自顶向下位姿图优化 四. 实验A. 精度分析 前言 代码&#xff1a;github 原文&#xff1a;原文 摘要——重建准确且一致的大规模LiDAR点云地图对机器人应用至…

Docker — 跨平台和环境部署

Docker 是一个开源的容器化平台&#xff0c;通过将应用程序和其依赖打包在一个轻量级、独立的容器中&#xff0c;能够跨平台和环境部署。 1. Docker 基本概念 镜像 (Image)&#xff1a;Docker 镜像是一个只读模板&#xff0c;包含运行应用程序所需的代码、库、依赖和环境配置。…

消息队列-Rabbitmq(消息发送,消息接收)

将来我们开发业务功能的时候&#xff0c;肯定不会在控制台收发消息&#xff0c;而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议&#xff0c;因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息&#xff0c;都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不…

一机多控无人机集群飞行控制技术详解

一机多控无人机集群飞行控制技术是指通过单一控制端或多个协同工作的控制端&#xff0c;对多架无人机进行集群管理和控制的技术。这种技术结合了通信技术、路径规划、碰撞避免、分布式与集中式控制等多个方面&#xff0c;以实现无人机集群的协同作战或完成其他特定任务。以下是…

DEVOPS: 认证与调度

概述 不知道大家有没有意识到一个现实&#xff0c;就是大部分时候&#xff0c;我们已经不像以前一样通过命令行&#xff0c;或者可视窗口来使用一个系统了现在我们上微博、或者网购&#xff0c;操作的其实不是眼前这台设备&#xff0c;而是一个又一个集群 通常&#xff0c;这样…