RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

RAID 为 Redundant Array of Indepent Disks (独立磁盘冗余阵列) 的缩写,其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。最常用的四种RAID为 RAID 0、RAID 1、RAID 5、RAID 10。

我们将会使用 mdadm 这个Ubuntu上的工具创建和管理磁盘阵列。

必要的准备

如果要查看当前机器上是否具有磁盘阵列的配置(在 /proc/mdstat 文件内),我们可以打以下的指令:

$cat /proc/mdstat

> Output

> Personalities : [raid0] [linear] [multipath] [raid1] [raid6] [raid5] [raid4] [raid10]

> md0 : active raid0 sdc[1] sdd[0]

> 209584128 blocks super 1.2 512k chunks

>

> unused devices:

从文件系统中卸载磁盘阵列:

$sudo umount /dev/md0

然后,暂停并移除此磁盘阵列:

$ sudo mdadm --stop /dev/md0

$ sudo mdadm --remove /dev/md0

查出磁盘的结构的指令:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

输出

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

sdc 00G linux_raid_member disk

sdd 00G linux_raid_member disk

vda 0G disk

├─vda1 0G ext4 part /

└─vda15 M part

如果发现我们的磁盘已经做过阵列,我们需要重置它们的超级块(Superblock),使其正常化:

$ sudo mdadm --zero-superblock /dev/sdc

$ sudo mdadm --zero-superblock /dev/sdd

你应该删除所有的阵列相关的引用设置,例如在 /etc/fstab 文件内自动挂载设置

$sudo nano /etc/fstab

# /etc/fstab

. . .

# 将这行注释,否则会引至启动失败

# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

当然,你还需要在阵列定义文件 /etc/mdadm/mdadm.conf 内移除原有的阵列设置

sudo nano /etc/mdadm/mdadm.conf

# /etc/mdadm/mdadm.conf

. . .

# 注释阵列设置

# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

最后更新 initramfs 系统:

sudo update-initramfs -u

OK,此时一切回到没有阵列的普通磁盘状态了,我们就可以开始以下的尝试了。

Initramfs 初始 ram 文件系统基于 'tmpfs ' (大小灵活、 内存中的轻量级文件系统),但是他并不是一个单独的块设备 (所以没有缓存和所有额外的开销)。就像 initrd,它包含的工具和脚本在被称为真正的根文件系统上的二进制文件 init启动之前被挂载 。这些工具可以解密抽象层 (用于加密的文件系统),逻辑卷管理器,软件 raid,蓝牙驱动程序基于文件系统的装载机等。

格式化

在格式化过程中有一个点大家要注意的是,由于现在的硬盘容量越来越大,fdisk 只能硬式化2T以内的硬盘,如果你想用两个3T的硬盘做阵列那么还是用Parted GPT吧:

$sudo parted /dev/sdb

这个指令按照向导来做就好了,过程极其简单。将格式做成 ext4 就可以了。

RAID 0

RAID 0 即Data Stripping(数据分条技术)。整个逻辑盘的数据是被分条(stripped)分布在多个物理磁盘上,可以并行读/写,提供最快的速度,但没有冗余能力。要求至少两个磁盘。我们通过RAID 0可以获得更大的单个逻辑盘的容量,且通过对多个磁盘的同时读取获得更高的存取速度。RAID 0首先考虑的是磁盘的速度和容量,忽略了安全,只要其中一个磁盘出了问题,那么整个阵列的数据都会不保了。

在开始之前我们还是先用 lsblk 查看一下磁盘的状态:

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

Output

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

vda 0G disk

├─vda1 0G ext4 part /

└─vda15 M part

创建阵列

$ sudo mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb

检查磁盘阵列的状态:

$cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid0 sdb[1] sda[0]

209584128 blocks super 1.2 512k chunks

unused devices:

RAID 1

两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但无论用多少磁盘做RAID 1,仅算一个磁盘的容量,是所有RAID中磁盘利用率最低的一个级别。

磁盘利用率为50%。也就是说,如果我们有两个磁盘每个500GB,总共是1TB,但在镜像中它只会显示500GB。

在镜像如果一个磁盘发生故障不会有数据丢失,因为两个磁盘中的内容相同。

读取性能会比写入性能更好。

创建 RAID 1 至少要有两个磁盘,你也可以添加更多的磁盘,磁盘数需为2,4,6,8等偶数。要添加更多的磁盘,你的系统必须有 RAID 物理适配器(硬件卡)。

这里,我们使用软件 RAID 不是硬件 RAID,如果你的系统有一个内置的物理硬件 RAID 卡,你可以从它的功能界面或使用 Ctrl + I 键来访问它。

创建阵列

$ sudo mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda /dev/sdb

RAID 5

RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三块硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,写入数据的速度相对单独写入一块硬盘的速度略慢,若使用“回写缓存”可以让性能改善不少。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较便宜。

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

sdc 00G disk

vda 0G disk

├─vda1 0G ext4 part /

└─vda15 M part

创建RAID 5阵列

$ sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sda /dev/sdb /dev/sdc

RAID 6

与RAID 5相比,RAID 6增加第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,任意两块磁盘同时失效时不会影响数据完整性。RAID 6需要分配给奇偶校验信息更大的磁盘空间和额外的校验计算,相对于RAID 5有更大的IO操作量和计算量,其“写性能”强烈取决于具体的实现方案,因此RAID6通常不会通过软件方式来实现,而更可能通过硬件/固件方式实现。

同一数组中最多容许两个磁盘损坏。更换新磁盘后,数据将会重新算出并写入新的磁盘中。依照设计理论,RAID 6必须具备四个以上的磁盘才能生效。

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

sdc 00G disk

sdd 00G disk

vda 0G disk

├─vda1 0G ext4 part /

└─vda15 M part

创建阵列

$ sudo mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

RAID 10

RAID 10是先镜射再分区数据,再将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。

RAID 10(又叫RAID 1+0)特点:

最少需要4块磁盘

先按RAID 0分成两组,再分别对两组按RAID 1方式镜像

兼顾冗余(提供镜像存储)和性能(数据条带形分布)

在实际应用中较为常用

$ lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

sdc 00G disk

sdd 00G disk

vda 0G disk

├─vda1 0G ext4 part /

└─vda15 M part

创建阵列

sudo mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda /dev/sdb /dev/sdc /dev/sdd

挂载文件系统

下一步,在阵列上创建文件系统:

$sudo mkfs.ext4 -F /dev/md0

在文件系统上创建挂载点的文件夹

$ sudo mkdir -p /mnt/md0

挂载阵列至挂载点文件夹上

$ sudo mount /dev/md0 /mnt/md0

检查是否已具有新的磁盘空间:

$df -h -x devtmpfs -x tmpfs

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 20G 1.1G 18G 6% /

/dev/md0 197G 60M 187G 1% /mnt/md0

现在文件系统已经成载挂载将可以访问了。

开机自动挂载

为了确保阵列开机时被载入,我们应该调整一下 /etc/mdadm/mdadm.conf 的配置文件,我可以加以下的指令使系统在启动自检时扫描磁盘阵列的详细信息:

$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

另外,你可以更新 initfamfs 或者初始化RAM文件系统,这样一来阵列会在启动前就可以生效:

$sudo update-initramfs -u

最重要的一点是一定要在 /etc/fstab 配置文件内加入自动挂载的设置:

$ echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

这样 ubuntu 启动后就会自动将磁盘阵列挂入了。

另外,如果没有设置自动挂载,在系统重启后或磁盘名称更改(插入其它硬盘会导致盘名变更的)例如 /dev/md0 变成了 /dev/md127 就可能会出现磁盘不能被挂载的问题,此时切记重新创建阵列,因这将会毁掉你的一切!重新手工挂载一下就OK了:

$ sudo mount /dev/md127 /mnt/md0

linux如何使用磁盘阵列卡,Ubuntu 上创建常用磁盘阵列相关推荐

  1. Ubuntu 上创建常用磁盘阵列

    RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失 ...

  2. yocto编译linux,好实用!用 Yocto 在 Ubuntu 上创建最小化 Linux 发行版

    导读 本文主要聚焦在如何使用 Yocto 在 Ubuntu 上创建一个最小化的 Linux 发行版.Yocto 项目在嵌入式 Linux 的世界非常著名,这是因为它用起来非常灵活.方便.Yocto 的 ...

  3. r语言使用linux命令,技术|如何在 Ubuntu 上安装和使用 R 语言

    这个教程指导你如何在 Ubuntu 上安装 R 语言.你也将同时学习到如何在 Ubuntu 上用不同方法运行简单的 R 语言程序. R,和 Python 一样,它是在统计计算和图形处理上最常用的编程语 ...

  4. linux 网桥 权限,如何在 Ubuntu 上搭建网桥

    导读 作为一个 Ubuntu 16.04 LTS 的初学者.如何在 Ubuntu 14.04 和 16.04 的主机上搭建网桥呢?顾名思义,网桥的作用是通过物理接口连接内部和外部网络.对于虚拟端口或者 ...

  5. linux安装字体 apt get,Ubuntu上安装字体的教程

    1.下载获取字体并解压安装 对于开源操作系统而言,Ubuntu平台默认自带很多字体.但通常情况下用户或许对已有字体并不能满足需要.因此,类似Windows系统一样,用户可以在Ubuntu 14.04. ...

  6. linux wireshark使用教程,技术|Ubuntu 上 Wireshark 的安装与使用

    在本教程中,你将学习如何在 Ubuntu 和其它基于 Ubuntu 的发行版上安装最新的 Wireshark.同时你也将学习如何在没有 sudo 的情况下来运行 Wireshark,以及如何设置它来进 ...

  7. linux卸载kodi,如何在Ubuntu上安装Kodi 18 Beta

    Kodi的Beta版周期很长.很棒,因为它有助于将错误排除在生产版本之外,而且还可以保留数月的新功能.值得庆幸的是,Kodi开发人员提供了可供测试和使用的"unstable"软件包 ...

  8. deepin linux桌面环境,如何在Ubuntu上安装Deepin桌面环境

    到目前为止,Deepin拥有最时尚的桌面环境.它可能是最漂亮,最好的user-friendly桌面Linux发行版之一.当我们谈论视觉吸引力时,我说它吹走了Windows 10和MacOS并没有错. ...

  9. linux新建samba账户,ubuntu上创建账户和samba用户

    系统环境: Linux ubuntu152 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64x86_ ...

  10. linux py2exe打包,如何在Ubuntu上使用py2exe(或pyinstaller)创建.exe

    鉴于: – Ubuntu – py2exe和pyinstaller – 使用setup.py(或其他)的 Python脚本 from distutils.core import setup impor ...

最新文章

  1. 直接插入排序算法实现思想个人理解
  2. Idea根据表自动生成实体
  3. Qt中TCP服务端编程
  4. 如何在Amazon AWS上设置一台Linux服务器
  5. bxslider 纵向滑动 vertical image thumbnail slider
  6. 某个应用导致html文件,某个应用导致你的默认浏览器设置出现问题(补丁又闯祸:Windows 10默认应用被重置 附解决方法)...
  7. 使用dig或nslookup指定dns服务器查询域名解析
  8. TCP系列51—拥塞控制—14、TLP、ER与拥塞控制
  9. 使用labelme进行图片语义分割数据的标注(如何转换为训练的灰度图,即像素值为类别值)
  10. 【C++leetcode】寻找给定字符串的最大回文子串
  11. C# .NET 爬虫抓取京东商城所有商品分类
  12. dm-thin-provision架构及实现简析
  13. 谢烟客-----计算机基础
  14. 软件单元黑盒测试,软件测试教学资源单元3 黑盒测试.doc
  15. 博客园添加目录,导航,回到顶部
  16. linux proftpd mysql_proftpd mysql quota 配置完全指南
  17. 深度学习的开胃菜——常用的机器学习知识梳理
  18. GAP:Learning Contextual Representations for Semantic Parsing with Generation-Augmented Pre-Training
  19. OkHttp3源码分析二 拦截器 上
  20. vb.net 实现图片圆形渐变模糊

热门文章

  1. 《还珠格格》《大宅门》取景地将被拍卖:3.6亿起拍
  2. 所有计算机都可以安装win7,t570都可以装win7系统吗_win7 64位系统所有电脑都能装吗...
  3. Java对接谷歌邮箱-代码及其谷歌邮箱账号配置
  4. 2021杭电多校第三场 D题—Game on Plane(思维题)
  5. 一个Layered Window从支持多屏到高DPI开始,遭遇的性能雪崩及其优化历程
  6. 【MOOC】建筑智能化系统工程(南工职)(1)基础知识
  7. Agilent函数发生器编程(Agilent IO Suite使用)
  8. php性格属于哪类,狗狗性格分为6大类,你家是属哪一类?快来是看聪明型还是粘人型...
  9. docker deamon源码学习
  10. 计算机wps函数的使用,WPS表格中IF函数使用的技巧