在 Linux 上配置软件 RAID

02/02/2017

本文内容

一种比较常见的情况是,在 Azure 中的 Linux 虚拟机上使用软件 RAID 将多个附加的数据磁盘显示为单个 RAID 设备。 通常,与仅使用单个磁盘相比,使用此方法不但可改进性能,而且还可提高吞吐量。

附加数据磁盘

配置 RAID 设备需要两个或更多空数据磁盘。 创建 RAID 设备的主要原因是为了提高磁盘的 IO 性能。 根据 IO 需求,可以选择附加存储在标准存储且一个磁盘最多具有 500 IO/ps 的磁盘,或高级存储且一个磁盘最多具有 5000 IO/ps 的磁盘。 本文不详细介绍如何为 Linux 虚拟机预配和附加数据磁盘。 请参阅 Microsoft Azure 文章附加磁盘,详细了解如何在 Azure 上为 Linux 虚拟机附加空数据磁盘。

重要

请勿混合使用不同大小的磁盘,否则会导致 RAID 集的性能被限制为运行速度最慢磁盘的性能。

安装 mdadm 实用程序

Ubuntu

sudo apt-get update

sudo apt-get install mdadm

CentOS 和 Oracle Linux

sudo yum install mdadm

SLES 和 openSUSE

zypper install mdadm

创建磁盘分区

在此示例中,我们在 /dev/sdc 上创建单个磁盘分区。 该新磁盘分区将命名为 /dev/sdc1。

启动 fdisk ,以开始创建分区

sudo fdisk /dev/sdc

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0xa34cb70c.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to

switch off the mode (command 'c') and change display units to

sectors (command 'u').

在提示符处按 N 键,以创建新 分区:

Command (m for help): n

接下来,按 P 键以创建主分区 :

Command action

e extended

p primary partition (1-4)

按 1 键,以选择分区号 1:

Partition number (1-4): 1

选择新分区的起始点,或者按 接受默认值,将该分区放在驱动器可用空间的开头:

First cylinder (1-1305, default 1):

Using default value 1

选择分区大小,如键入“+10G”创建一个 10 GB 的分区。 或者,按 创建跨整个驱动器的单个分区:

Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305):

Using default value 1305

接下来,将该分区的 ID 和类型从默认的 ID“83”(Linux) 更改为 ID“fd”(Linux raid auto):

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): fd

最后,将分区表写入驱动器并退出 fdisk:

Command (m for help): w

The partition table has been altered!

创建 RAID 阵列

以下示例将给位于三个不同数据磁盘(sdc1、sdd1、sde1)上的三个分区设置带区(RAID 级别 0)。 运行此命令后会创建一个名为 /dev/md127 的新 RAID 设备。 另请注意,如果这些数据磁盘以前属于另一失效的 RAID 阵列,则可能有必要将 --force 参数添加到 mdadm 命令:

sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \

/dev/sdc1 /dev/sdd1 /dev/sde1

在新 RAID 设备上创建文件系统

CentOS、Oracle Linux、SLES 12、openSUSE 和 Ubuntu

sudo mkfs -t ext4 /dev/md127

SLES 11

sudo mkfs -t ext3 /dev/md127

SLES 11 - 启用 boot.md 并创建 mdadm.conf

sudo -i chkconfig --add boot.md

sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf

备注

在 SUSE 系统中进行这些更改后,可能需要重新启动。 在 SLES 12 中, 不 需要执行此步骤。

将新文件系统添加到 /etc/fstab

重要

错误地编辑 /etc/fstab 文件可能会导致系统无法引导。 如果没有把握,请参考分发的文档来获取有关如何正确编辑该文件的信息。 另外,建议在编辑前备份 /etc/fstab 文件。

为新文件系统创建所需的安装点,例如:

sudo mkdir /data

编辑 /etc/fstab 文件时,使用 UUID 引用文件系统,而非设备名称。 使用 blkid 实用程序确定新文件系统的 UUID:

sudo /sbin/blkid

...........

/dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"

在文本编辑器中打开 /etc/fstab,并为新文件系统添加条目,例如:

UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults 0 2

或在 SLES 11 上:

/dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext3 defaults 0 2

然后,保存并关闭 /etc/fstab。

测试该 /etc/fstab 条目是否正确:

sudo mount -a

如果此命令导致错误消息,请检查 /etc/fstab 文件中的语法。

接下来,运行 mount 命令以确保文件系统已装入:

mount

.................

/dev/md127 on /data type ext4 (rw)

(可选)防故障引导参数

fstab 配置

许多分发版包括 nobootwait 或 nofail 装载参数,这些参数可以添加到 /etc/fstab 文件中。 这些参数允许装入某特定文件系统时失败,并且允许 Linux 系统继续引导,即使它无法正确装入 RAID 文件系统也无妨。 有关这些参数的详细信息,请查阅分发文档。

示例 (Ubuntu):

UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults,nobootwait 0 2

Linux 引导参数

除了以上参数,还可以使用内核参数“bootdegraded=true”启用系统引导功能,即使发现 RAID 已损坏或降级(例如,如果意外从虚拟机移除数据驱动器)。 默认情况下,这也可能会导致系统无法启动。

请参阅发行版文档,了解如何正确编辑内核参数。 例如,在许多分发(CentOS、Oracle Linux、SLES 11)中,可以手动将这些参数添加到“/boot/grub/menu.lst”文件。 在 Ubuntu 中,可将此参数添加到“/etc/default/grub”的 GRUB_CMDLINE_LINUX_DEFAULT 变量。

TRIM/UNMAP 支持

某些 Linux 内核支持 TRIM/UNMAP 操作以放弃磁盘上未使用的块。 这些操作主要适用于标准存储,以通知 Azure 已删除的页不再有效可以丢弃。 如果创建了较大的文件,并将其删除,则放弃页可以节省成本。

备注

如果将阵列的区块大小设置为小于默认值 (512 KB),则 RAID 可能不会发出丢弃命令。 这是因为主机上的 unmap 粒度也是 512KB。 如果通过 mdadm 的 --chunk= 参数修改了阵列的区块大小,则内核可能会忽略 TRIM/unmap 请求。

在 Linux VM 中有两种方法可以启用 TRIM 支持。 与往常一样,有关建议的方法,请参阅分发:

在 /etc/fstab 中使用 discard 装载选项,例如:

UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext4 defaults,discard 0 2

在某些情况下,discard 选项可能会影响性能。 此处,还可以从命令行手动运行 fstrim 命令,或将其添加到 crontab 以定期运行:

Ubuntu

# sudo apt-get install util-linux

# sudo fstrim /data

RHEL/CentOS

# sudo yum install util-linux

# sudo fstrim /data

linux 内核配置raid,在 Linux VM 上配置软件 RAID - Azure Virtual Machines | Microsoft Docs相关推荐

  1. Linux移动光标指令hkjl,使用 HPC Pack 在 Linux VM 上執行 OpenFOAM - Azure Virtual Machines | Microsoft Docs...

    在 Azure 中的 Linux RDMA 叢集以 Microsoft HPC Pack 執行 OpenFoam 07/22/2016 本文內容 重要 傳統 Vm 將于2023年3月1日淘汰. 如果您 ...

  2. linux 计算标准差,Azure Linux VM 的计算基准测试分数 - Azure Virtual Machines | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. Linux VM 的计 ...

  3. azure linux 配置端口,快速入门 - 在 Azure 门户中创建 Linux VM - Azure Virtual Machines | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:在 Azur ...

  4. star ccm 报java错误_在 Linux VM 上运行 STAR-CCM+ 与 HPC Pack - Azure Virtual Machines | Microsoft Docs...

    在 Azure 中的 Linux RDMA 群集上运行 STAR-CCM+ 和 Microsoft HPC Pack 09/13/2016 本文内容 重要 经典 VM 将于 2023 年 3 月 1 ...

  5. xrdp linux 3389 端口,在 Linux 中使用 xrdp - Azure Virtual Machines | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 安装并配置 xrdp ...

  6. Linux内核入门-如何获取Linux内核源代码、生成配置内核

    如何获取Linux内核源代码 如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补丁,它们都是tar归档压缩包.除 ...

  7. linux redhat9 u盘,LINUX(redhat9)下安装JDK(虚拟机VM上挂载U盘)

    LINUX(redhat9)下安装JDK(虚拟机VM上挂载U盘) 2010-07-11 21:24 1.首先,我们去http://www.doczj.com/doc/11c2bbedb8f67c1cf ...

  8. Linux内核开发_1_编译LInux内核

    目录 1. 准备工作 1.1 学习环境 1.2 下载Linux内核源码 1.3 解压Linux内核 1.4 目录结构介绍 2. Linux内核配置 2.1 配置选项 1. make config 2. ...

  9. linux内核学习之三:linux中的32位与64位

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

最新文章

  1. 提高 GPU 训练利用率的Tricks
  2. 中科院博士整理的机器学习算法知识手册 | 附PDF下载
  3. 高薪必备的一些Spring Boot高级面试题
  4. Arduino+Max30100心率血氧浓度传感器测试
  5. 不进化,则消亡——互联网时代企业管理的十项实践
  6. Python学习笔记:IO编程StringIO和BytesIO
  7. 架构师已死(转自UML软件工程组织)
  8. 既然参与,那就做好,我相信我们是最棒的!!!
  9. oracle erp 报表开发手册,处置OracleERP导出的报表文件
  10. java 正则表达式 反向_正则表达式中的数量表示符、反向引用、零宽断言、以及java中的用法...
  11. 使用Docker-Compose安装GitLab服务器
  12. 如何从一个吊丝男成为一个合格的高级程序员
  13. python中update是啥意思_python中update的基本使用方法详解
  14. 国内Maven仓库--阿里云Aliyun仓库地址及设置
  15. 7-20 约分最简分式c语言,7-24 约分最简分式
  16. hdr_beg(host) 主机名开始
  17. 剑指 Offer 61-68
  18. 停用 微软上载服务器,如何完全禁用 Office上载中心
  19. 快速配置 Sign In with Apple
  20. 日本教育家多湖辉的《学生用功术》---2

热门文章

  1. 吴恩达 coursera ML 第十五课总结+作业答案
  2. 将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择
  3. 安装kinetic之后无法import cv2解决方案
  4. [云炬ThinkPython阅读笔记]2.9 术语表
  5. 云炬VB开发笔记 3VB语言基础和顺序结构
  6. mysql replace into 使用过程中报错
  7. linux退出 putty_使用putty远程连接linux防止关闭putty程序就停止
  8. linux 软链接_Liunx 命令之链接操作
  9. 3DSlicer28:PLUS
  10. 大话数据结构与算法:算法初步1