蚊章汇 - Babin Lonston
type: channel
link: https://linuxcn.bwsl.wang/author/84/
description: Babin Lonston
items: 在 Linux 下使用 RAID（七）：在 RAID 中扩展现有的 RAID 阵列和删除故障的磁盘
items: 在 Linux 下使用 RAID（六）：设置 RAID 10 或 1 + 0（嵌套）
items: 在 Linux 下使用 RAID（五）：安装 RAID 6（条带化双分布式奇偶校验）
items: 在 Linux 下使用 RAID（四）：创建 RAID 5（条带化与分布式奇偶校验）
items: 在 Linux 下使用 RAID（三）：用两块磁盘创建 RAID 1（镜像）
items: 在 Linux 下使用 RAID（二）：使用 mdadm 工具创建软件 RAID 0 （条带化）
items: 在 Linux 下使用 RAID（一）：介绍 RAID 的级别和概念
items: 设置iSCSI的发起程序（客户端）（三）
items: 在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）
items: 使用iSCSI Target创建集中式安全存储（一）

在 Linux 下使用 RAID（七）：在 RAID 中扩展现有的 RAID 阵列和删除故障的磁盘
type: item
date: 2015-09-02T17:25:00+08:00
description: 每个新手都会对阵列（array）这个词所代表的意思产生疑惑。阵列只是磁盘的一个集合。换句话说，我们可以称阵列为一个集合（set）或一组（group）。就像一组鸡蛋中包含6个一样。同样 RAID 阵列中包含着多个磁盘，可能是2，4，6，8，12，16等，希望你现在知道了什么是阵列。在这里，我们将看到如何扩展现有的阵列或 RAID 组。例如，如果我们在阵列中使用2个磁盘形成一个 raid 1 集合，在某些情况，如果该组中需要更多的空间，就可以使用 mdadm -grow 命令来扩展阵列大小，只需要将一个磁盘加入到现有的阵列中即可。在说完扩展（添加磁盘到现有的阵列中）后，我们将看看如何从阵列中删除故障的磁盘。扩展 RAID 阵列和删除故障的磁盘假设磁盘中的一个有问题了需要删除该磁盘，但我们需要在删除磁盘前添加一个备用磁盘来扩展该镜像，因为我们需要保存我们的数据。当磁盘发生故障时我们需要从阵列中删除它，这是这个主题中我们将要学习到的。扩展 RAID 的特性我们可以增加（扩展）任意 RAID 集合的大小。我们可以在使用新磁盘扩展 RAID 阵列后删除故障的磁盘。我们可以扩展 RAID 阵列而无需停机。要求为了扩展一个RAID阵列，我们需要一个已有的 RAID 组（阵列）。我们需要额外的磁盘来扩展阵列。在这里，我们使用一块磁盘来扩展现有的阵列。在我们了解扩展和恢复阵列前，我们必须了解有关 RAID 级别和设置的基本知识。点击下面的链接了解这些。介绍 RAID 的级别和概念使用 mdadm 工具创建软件 RAID 0 （条带化）我的服务器设置操作系统 : CentOS 6.5 Final IP地址 : 192.168.0.230 主机名 : grow.tecmintlocal.com 2 块现有磁盘 : 1 GB 1 块额外磁盘 : 1 GB 在这里，我们已有一个 RAID ，有2块磁盘，每个大小为1GB，我们现在再增加一个磁盘到我们现有的 RAID 阵列中，其大小为1GB。扩展现有的 RAID 阵列1、 在扩展阵列前，首先使用下面的命令列出现有的 RAID 阵列。# mdadm --detail /dev/md0 检查现有的 RAID 阵列注意: 以上输出显示，已经有了两个磁盘在 RAID 阵列中，级别为 RAID 1。现在我们增加一个磁盘到现有的阵列里。2、 现在让我们添加新的磁盘“sdd”，并使用fdisk命令来创建分区。# fdisk /dev/sdd 请使用以下步骤为 /dev/sdd 创建一个新的分区。按 n 创建新的分区。然后按 P 选择主分区。接下来选择分区号为1。只需按两次回车键选择默认值即可。然后，按 P 来打印创建好的分区。按 L，列出所有可用的类型。按 t 去修改分区。键入 fd 设置为 Linux 的 RAID 类型，然后按回车确认。然后再次使用p查看我们所做的更改。使用w保存更改。为 sdd 创建新的分区3、 一旦新的 sdd 分区创建完成后，你可以使用下面的命令验证它。# ls -l /dev/ | grep sd 确认 sdd 分区4、 接下来，在添加到阵列前先检查磁盘是否有 RAID 分区。# mdadm --examine /dev/sdd1 在 sdd 分区中检查 RAID注意:以上输出显示，该盘有没有发现 super-blocks，意味着我们可以将新的磁盘添加到现有阵列。5、 要添加新的分区 /dev/sdd1 到现有的阵列 md0，请使用以下命令。# mdadm --manage /dev/md0 --add /dev/sdd1 添加磁盘到 RAID 阵列6、 一旦新的磁盘被添加后，在我们的阵列中检查新添加的磁盘。# mdadm --detail /dev/md0 确认将新磁盘添加到 RAID 中注意: 在上面的输出，你可以看到磁盘已经被添加作为备用的。在这里，我们的阵列中已经有了2个磁盘，但我们期待阵列中有3个磁盘，因此我们需要扩展阵列。7、 要扩展阵列，我们需要使用下面的命令。# mdadm --grow --raid-devices=3 /dev/md0 扩展 Raid 阵列现在我们可以看到第三块磁盘(sdd1)已被添加到阵列中，在第三块磁盘被添加后，它将从另外两块磁盘上同步数据。# mdadm --detail /dev/md0 确认 Raid 阵列注意: 对于大容量磁盘会需要几个小时来同步数据。在这里，我们使用的是1GB的虚拟磁盘，所以它非常快在几秒钟内便会完成。从阵列中删除磁盘8、 在数据被从其他两个磁盘同步到新磁盘sdd1后，现在三个磁盘中的数据已经相同了（镜像）。正如我前面所说的，假定一个磁盘出问题了需要被删除。所以，现在假设磁盘sdc1出问题了，需要从现有阵列中删除。在删除磁盘前我…

在 Linux 下使用 RAID（六）：设置 RAID 10 或 1 + 0（嵌套）
type: item
date: 2015-09-01T16:51:00+08:00
description: RAID 10 是组合 RAID 1 和 RAID 0 形成的。要设置 RAID 10，我们至少需要4个磁盘。在之前的文章中，我们已经看到了如何使用最少两个磁盘设置 RAID 1 和 RAID 0。在这里，我们将使用最少4个磁盘组合 RAID 1 和 RAID 0 来设置 RAID 10。假设我们已经在用 RAID 10 创建的逻辑卷保存了一些数据。比如我们要保存数据 “TECMINT”，它将使用以下方法将其保存在4个磁盘中。在 Linux 中创建 Raid 10（LCTT 译注：原图有误，已修正）RAID 10 是先做镜像，再做条带。因此，在 RAID 1 中，相同的数据将被写入到两个磁盘中，“T”将同时被写入到第一和第二个磁盘中。接着的数据被条带化到另外两个磁盘，“E”将被同时写入到第三和第四个磁盘中。它将继续循环此过程，“C”将同时被写入到第一和第二个磁盘，以此类推。（LCTT 译注：原文中此处描述混淆有误，已经根据实际情况进行修改。）现在你已经了解 RAID 10 怎样组合 RAID 1 和 RAID 0 来工作的了。如果我们有4个20 GB 的磁盘，总共为 80 GB，但我们将只能得到40 GB 的容量，另一半的容量在构建 RAID 10 中丢失。RAID 10 的优点和缺点提供更好的性能。在 RAID 10 中我们将失去一半的磁盘容量。读与写的性能都很好，因为它会同时进行写入和读取。它能解决数据库的高 I/O 磁盘写操作。要求在 RAID 10 中，我们至少需要4个磁盘，前2个磁盘为 RAID 1，其他2个磁盘为 RAID 0，就像我之前说的，RAID 10 仅仅是组合了 RAID 0和1。如果我们需要扩展 RAID 组，最少需要添加4个磁盘。我的服务器设置操作系统 : CentOS 6.5 Final IP 地址 : 192.168.0.229 主机名 : rd10.tecmintlocal.com 磁盘 1 [20GB] : /dev/sdd 磁盘 2 [20GB] : /dev/sdc 磁盘 3 [20GB] : /dev/sdd 磁盘 4 [20GB] : /dev/sde 有两种方法来设置 RAID 10，在这里两种方法我都会演示，但我更喜欢第一种方法，使用它来设置 RAID 10 更简单。方法1：设置 RAID 101、 首先，使用以下命令确认所添加的4块磁盘没有被使用。# ls -l /dev | grep sd 2、 四个磁盘被检测后，然后来检查磁盘是否存在 RAID 分区。# mdadm -E /dev/sd[b-e] # mdadm --examine /dev/sdb /dev/sdc /dev/sdd /dev/sde # 或 验证添加的4块磁盘注意: 在上面的输出中，如果没有检测到 super-block 意味着在4块磁盘中没有定义过 RAID。第1步：为 RAID 分区3、 现在，使用fdisk，命令为4个磁盘(/dev/sdb, /dev/sdc, /dev/sdd 和 /dev/sde)创建新分区。# fdisk /dev/sdb # fdisk /dev/sdc # fdisk /dev/sdd # fdisk /dev/sde 为 /dev/sdb 创建分区我来告诉你如何使用 fdisk 为磁盘(/dev/sdb)进行分区，此步也适用于其他磁盘。# fdisk /dev/sdb 请使用以下步骤为 /dev/sdb 创建一个新的分区。按 n 创建新的分区。然后按 P 选择主分区。接下来选择分区号为1。只需按两次回车键选择默认值即可。然后，按 P 来打印创建好的分区。按 L，列出所有可用的类型。按 t 去修改分区。键入 fd 设置为 Linux 的 RAID 类型，然后按 Enter 确认。然后再次使用p查看我们所做的更改。使用w保存更改。为磁盘 sdb 分区注意: 请使用上面相同的指令对其他磁盘(sdc, sdd sdd sde)进行分区。4、 创建好4个分区后，需要使用下面的命令来检查磁盘是否存在 raid。# mdadm -E /dev/sd[b-e] # mdadm --examine /dev/sdb /dev/sdc /dev/sdd /dev/sde # 或 # mdadm -E /dev/sd[b-e]1 # mdadm --examine /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 # 或 检查磁盘注意: 以上输出显示，新创建的四个分区中没有检测到 super-block，这意味着我们可以继续在这些磁盘上创建 RAID 10。第2步: 创建 RAID 设备 md5、 现在该创建一个md（即 /dev/md0）设备了，使用“mdad…

在 Linux 下使用 RAID（五）：安装 RAID 6（条带化双分布式奇偶校验）
type: item
date: 2015-08-31T23:50:00+08:00
description: RAID 6 是 RAID 5 的升级版，它有两个分布式奇偶校验，即使两个磁盘发生故障后依然有容错能力。在两个磁盘同时发生故障时，系统的关键任务仍然能运行。它与 RAID 5 相似，但性能更健壮，因为它多用了一个磁盘来进行奇偶校验。在之前的文章中，我们已经在 RAID 5 看了分布式奇偶校验，但在本文中，我们将看到的是 RAID 6 双分布式奇偶校验。不要期望比其他 RAID 有更好的性能，除非你也安装了一个专用的 RAID 控制器。在 RAID 6 中，即使我们失去了2个磁盘，我们仍可以通过更换磁盘，从校验中构建数据，然后取回数据。在 Linux 中安装 RAID 6要建立一个 RAID 6，一组最少需要4个磁盘。RAID 6 甚至在有些组中会有更多磁盘，这样将多个硬盘捆在一起，当读取数据时，它会同时从所有磁盘读取，所以读取速度会更快，当写数据时，因为它要将数据写在条带化的多个磁盘上，所以性能会较差。现在，很多人都在讨论为什么我们需要使用 RAID 6，它的性能和其他 RAID 相比并不太好。提出这个问题首先需要知道的是，如果需要高容错性就选择 RAID 6。在每一个用于数据库的高可用性要求较高的环境中，他们需要 RAID 6 因为数据库是最重要，无论花费多少都需要保护其安全，它在视频流环境中也是非常有用的。RAID 6 的的优点和缺点性能不错。RAID 6 比较昂贵，因为它要求两个独立的磁盘用于奇偶校验功能。将失去两个磁盘的容量来保存奇偶校验信息（双奇偶校验）。即使两个磁盘损坏，数据也不会丢失。我们可以在更换损坏的磁盘后从校验中重建数据。读性能比 RAID 5 更好，因为它从多个磁盘读取，但对于没有专用的 RAID 控制器的设备写性能将非常差。要求要创建一个 RAID 6 最少需要4个磁盘。你也可以添加更多的磁盘，但你必须有专用的 RAID 控制器。使用软件 RAID 我们在 RAID 6 中不会得到更好的性能，所以我们需要一个物理 RAID 控制器。如果你新接触 RAID 设置，我们建议先看完以下 RAID 文章。介绍 RAID 的级别和概念使用 mdadm 工具创建软件 RAID 0 （条带化）用两块磁盘创建 RAID 1（镜像）创建 RAID 5（条带化与分布式奇偶校验）我的服务器设置操作系统 : CentOS 6.5 Final IP 地址 : 192.168.0.228 主机名 : rd6.tecmintlocal.com 磁盘 1 [20GB] : /dev/sdb 磁盘 2 [20GB] : /dev/sdc 磁盘 3 [20GB] : /dev/sdd 磁盘 4 [20GB] : /dev/sde 这是9篇系列教程的第5部分，在这里我们将看到如何在 Linux 系统或者服务器上使用四个 20GB 的磁盘（名为 /dev/sdb、 /dev/sdc、 /dev/sdd 和 /dev/sde）创建和设置软件 RAID 6 （条带化双分布式奇偶校验）。第1步：安装 mdadm 工具，并检查磁盘1、 如果你按照我们最进的两篇 RAID 文章（第2篇和第3篇），我们已经展示了如何安装mdadm工具。如果你直接看的这篇文章，我们先来解释下在 Linux 系统中如何使用mdadm工具来创建和管理 RAID，首先根据你的 Linux 发行版使用以下命令来安装。# yum install mdadm [在 RedHat 系统] # apt-get install mdadm [在 Debain 系统] 2、 安装该工具后，然后来验证所需的四个磁盘，我们将会使用下面的fdisk命令来检查用于创建 RAID 的磁盘。# fdisk -l | grep sd 在 Linux 中检查磁盘3、 在创建 RAID 磁盘前，先检查下我们的磁盘是否创建过 RAID 分区。# mdadm -E /dev/sd[b-e] # mdadm --examine /dev/sdb /dev/sdc /dev/sdd /dev/sde # 或 在磁盘上检查 RAID 分区注意: 在上面的图片中，没有检测到任何 super-block 或者说在四个磁盘上没有 RAID 存在。现在我们开始创建 RAID 6。第2步：为 RAID 6 创建磁盘分区4、 现在在 /dev/sdb, /dev/sdc, /dev/sdd 和 /dev/sde上为 RAID 创建分区，使用下面的 fdisk 命令。在这里，我们将展示如何在 sdb 磁盘创建分区，同样的步骤也适用于其他分区。创建 /dev/sdb 分区# fdisk /dev/sdb 请按照说明进行操作，如下图所示创建分区。按 n创建新的分区。然后按 P 选择主分区。接下来选择分区号为1。只需按两次回车键选择默认值…

在 Linux 下使用 RAID（四）：创建 RAID 5（条带化与分布式奇偶校验）
type: item
date: 2015-08-27T21:08:44+08:00
description: 在 RAID 5 中，数据条带化后存储在分布式奇偶校验的多个磁盘上。分布式奇偶校验的条带化意味着它将奇偶校验信息和条带化数据分布在多个磁盘上，这样会有很好的数据冗余。在 Linux 中配置 RAID 5对于此 RAID 级别它至少应该有三个或更多个磁盘。RAID 5 通常被用于大规模生产环境中，以花费更多的成本来提供更好的数据冗余性能。什么是奇偶校验？奇偶校验是在数据存储中检测错误最简单的常见方式。奇偶校验信息存储在每个磁盘中，比如说，我们有4个磁盘，其中相当于一个磁盘大小的空间被分割去存储所有磁盘的奇偶校验信息。如果任何一个磁盘出现故障，我们可以通过更换故障磁盘后，从奇偶校验信息重建得到原来的数据。RAID 5 的优点和缺点提供更好的性能。支持冗余和容错。支持热备份。将用掉一个磁盘的容量存储奇偶校验信息。单个磁盘发生故障后不会丢失数据。我们可以更换故障硬盘后从奇偶校验信息中重建数据。适合于面向事务处理的环境，读操作会更快。由于奇偶校验占用资源，写操作会慢一些。重建需要很长的时间。要求创建 RAID 5 最少需要3个磁盘，你也可以添加更多的磁盘，前提是你要有多端口的专用硬件 RAID 控制器。在这里，我们使用“mdadm”包来创建软件 RAID。mdadm 是一个允许我们在 Linux 下配置和管理 RAID 设备的包。默认情况下没有 RAID 的配置文件，我们在创建和配置 RAID 后必须将配置文件保存在一个单独的文件 mdadm.conf 中。在进一步学习之前，我建议你通过下面的文章去了解 Linux 中 RAID 的基础知识。介绍 RAID 的级别和概念使用 mdadm 工具创建软件 RAID 0 （条带化）用两块磁盘创建 RAID 1（镜像）我的服务器设置操作系统 : CentOS 6.5 Final IP 地址 : 192.168.0.227 主机名 : rd5.tecmintlocal.com 磁盘 1 [20GB] : /dev/sdb 磁盘 2 [20GB] : /dev/sdc 磁盘 3 [20GB] : /dev/sdd 这是9篇系列教程的第4部分，在这里我们要在 Linux 系统或服务器上使用三个20GB（名为/dev/sdb, /dev/sdc 和 /dev/sdd）的磁盘建立带有分布式奇偶校验的软件 RAID 5。第1步：安装 mdadm 并检验磁盘1、 正如我们前面所说，我们使用 CentOS 6.5 Final 版本来创建 RAID 设置，但同样的做法也适用于其他 Linux 发行版。# lsb_release -a # ifconfig | grep inet CentOS 6.5 摘要2、 如果你按照我们的 RAID 系列去配置的，我们假设你已经安装了“mdadm”包，如果没有，根据你的 Linux 发行版使用下面的命令安装。# yum install mdadm [在 RedHat 系统] # apt-get install mdadm [在 Debain 系统] 3、 “mdadm”包安装后，先使用fdisk命令列出我们在系统上增加的三个20GB的硬盘。# fdisk -l | grep sd 安装 mdadm 工具4、 现在该检查这三个磁盘是否存在 RAID 块，使用下面的命令来检查。# mdadm -E /dev/sd[b-d] # mdadm --examine /dev/sdb /dev/sdc /dev/sdd # 或 检查 Raid 磁盘注意: 上面的图片说明，没有检测到任何超级块。所以，这三个磁盘中没有定义 RAID。让我们现在开始创建一个吧！第2步：为磁盘创建 RAID 分区5、 首先，在创建 RAID 前磁盘（/dev/sdb, /dev/sdc 和 /dev/sdd）必须有分区，因此，在进行下一步之前，先使用fdisk命令进行分区。# fdisk /dev/sdb # fdisk /dev/sdc # fdisk /dev/sdd 创建 /dev/sdb 分区请按照下面的说明在 /dev/sdb 硬盘上创建分区。按 n 创建新的分区。然后按 P 选择主分区。选择主分区是因为还没有定义过分区。接下来选择分区号为1。默认就是1。这里是选择柱面大小，我们没必要选择指定的大小，因为我们需要为 RAID 使用整个分区，所以只需按两次 Enter 键默认将整个容量分配给它。然后，按 P 来打印创建好的分区。改变分区类型，按 L可以列出所有可用的类型。按 t 修改分区类型。这里使用fd设置为 RAID 的类型。然后再次使用p查看我们所做的更改。使用w保存更改。创建 sdb 分区注意: 我们仍要按照上面的步骤来创建 sdc 和 sdd 的分区。创建 /dev/sdc 分区现在，通过下面…

在 Linux 下使用 RAID（三）：用两块磁盘创建 RAID 1（镜像）
type: item
date: 2015-08-26T17:33:00+08:00
description: RAID 镜像意味着相同数据的完整克隆（或镜像），分别写入到两个磁盘中。创建 RAID 1 至少需要两个磁盘，而且仅用于读取性能或者可靠性要比数据存储容量更重要的场合。在 Linux 中设置 RAID 1创建镜像是为了防止因硬盘故障导致数据丢失。镜像中的每个磁盘包含数据的完整副本。当一个磁盘发生故障时，相同的数据可以从其它正常磁盘中读取。而后，可以从正在运行的计算机中直接更换发生故障的磁盘，无需任何中断。RAID 1 的特点镜像具有良好的性能。磁盘利用率为50％。也就是说，如果我们有两个磁盘每个500GB，总共是1TB，但在镜像中它只会显示500GB。在镜像如果一个磁盘发生故障不会有数据丢失，因为两个磁盘中的内容相同。读取性能会比写入性能更好。要求创建 RAID 1 至少要有两个磁盘，你也可以添加更多的磁盘，磁盘数需为2，4，6，8等偶数。要添加更多的磁盘，你的系统必须有 RAID 物理适配器（硬件卡）。这里，我们使用软件 RAID 不是硬件 RAID，如果你的系统有一个内置的物理硬件 RAID 卡，你可以从它的功能界面或使用 Ctrl + I 键来访问它。需要阅读: 介绍 RAID 的级别和概念在我的服务器安装操作系统 : CentOS 6.5 Final IP 地址 : 192.168.0.226 主机名 : rd1.tecmintlocal.com 磁盘 1 [20GB] : /dev/sdb 磁盘 2 [20GB] : /dev/sdc 本文将指导你在 Linux 平台上使用 mdadm （用于创建和管理 RAID ）一步步的建立一个软件 RAID 1 （镜像）。同样的做法也适用于如 RedHat，CentOS，Fedora 等 Linux 发行版。第1步：安装所需软件并且检查磁盘1、 正如我前面所说，在 Linux 中我们需要使用 mdadm 软件来创建和管理 RAID。所以，让我们用 yum 或 apt-get 的软件包管理工具在 Linux 上安装 mdadm 软件包。# yum install mdadm [在 RedHat 系统] # apt-get install mdadm [在 Debain 系统] 2、 一旦安装好mdadm包，我们需要使用下面的命令来检查磁盘是否已经配置好。# mdadm -E /dev/sd[b-c] 检查 RAID 的磁盘正如你从上面图片看到的，没有检测到任何超级块，这意味着还没有创建RAID。第2步：为 RAID 创建分区3、 正如我提到的，我们使用最少的两个分区 /dev/sdb 和 /dev/sdc 来创建 RAID 1。我们首先使用fdisk命令来创建这两个分区并更改其类型为 raid。# fdisk /dev/sdb 按照下面的说明按 n 创建新的分区。然后按 P 选择主分区。接下来选择分区号为1。按两次回车键默认将整个容量分配给它。然后，按 P 来打印创建好的分区。按 L，列出所有可用的类型。按 t 修改分区类型。键入 fd 设置为 Linux 的 RAID 类型，然后按 Enter 确认。然后再次使用p查看我们所做的更改。使用w保存更改。创建磁盘分区在创建“/dev/sdb”分区后，接下来按照同样的方法创建分区 /dev/sdc 。# fdisk /dev/sdc 创建第二个分区4、 一旦这两个分区创建成功后，使用相同的命令来检查 sdb 和 sdc 分区并确认 RAID 分区的类型如上图所示。# mdadm -E /dev/sd[b-c] 验证分区变化检查 RAID 类型注意: 正如你在上图所看到的，在 sdb1 和 sdc1 中没有任何对 RAID 的定义，这就是我们没有检测到超级块的原因。第3步：创建 RAID 1 设备5、 接下来使用以下命令来创建一个名为 /dev/md0 的“RAID 1”设备并验证它# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[b-c]1 # cat /proc/mdstat 创建RAID设备6、 接下来使用如下命令来检查 RAID 设备类型和 RAID 阵列# mdadm -E /dev/sd[b-c]1 # mdadm --detail /dev/md0 检查 RAID 设备类型检查 RAID 设备阵列从上图中，人们很容易理解，RAID 1 已经创建好了，使用了 /dev/sdb1 和 /dev/sdc1 分区，你也可以看到状态为 resyncing（重新同步中）。第4步：在 RAID 设备上创建文件系统7、 给 md0 上创建 ext4 文件系统# mkfs.ext4 /dev/md0 创建 RAID 设备文件系统8、 接下来，挂载新创建的文件系…

在 Linux 下使用 RAID（二）：使用 mdadm 工具创建软件 RAID 0 （条带化）
type: item
date: 2015-08-25T17:25:00+08:00
description: RAID 即廉价磁盘冗余阵列，其高可用性和可靠性适用于大规模环境中，相比正常使用，数据更需要被保护。RAID 是一些磁盘的集合，是包含一个阵列的逻辑卷。驱动器可以组合起来成为一个阵列或称为（组的）集合。创建 RAID 最少应使用2个连接到 RAID 控制器的磁盘组成，来构成逻辑卷，可以根据定义的 RAID 级别将更多的驱动器添加到一个阵列中。不使用物理硬件创建的 RAID 被称为软件 RAID。软件 RAID 也叫做穷人 RAID。在 Linux 中创建 RAID0使用 RAID 的主要目的是为了在发生单点故障时保存数据，如果我们使用单个磁盘来存储数据，如果它损坏了，那么就没有机会取回我们的数据了，为了防止数据丢失我们需要一个容错的方法。所以，我们可以使用多个磁盘组成 RAID 阵列。在 RAID 0 中条带是什么条带是通过将数据在同时分割到多个磁盘上。假设我们有两个磁盘，如果我们将数据保存到该逻辑卷上，它会将数据保存在两个磁盘上。使用 RAID 0 是为了获得更好的性能，但是如果驱动器中一个出现故障，我们将不能得到完整的数据。因此，使用 RAID 0 不是一种好的做法。唯一的解决办法就是安装有 RAID 0 逻辑卷的操作系统来提高重要文件的安全性。RAID 0 性能较高。在 RAID 0 上，空间零浪费。零容错（如果硬盘中的任何一个发生故障，无法取回数据）。写和读性能都很好。要求创建 RAID 0 允许的最小磁盘数目是2个，但你可以添加更多的磁盘，不过数目应该是2，4，6，8等的偶数。如果你有一个物理 RAID 卡并且有足够的端口，你可以添加更多磁盘。在这里，我们没有使用硬件 RAID，此设置只需要软件 RAID。如果我们有一个物理硬件 RAID 卡，我们可以从它的功能界面访问它。有些主板默认内建 RAID 功能，还可以使用 Ctrl + I 键访问它的界面。如果你是刚开始设置 RAID，请阅读我们前面的文章，我们已经介绍了一些关于 RAID 基本的概念。介绍 RAID 的级别和概念我的服务器设置操作系统 : CentOS 6.5 Final IP 地址 : 192.168.0.225 两块盘 : 20 GB each 这是9篇系列教程的第2部分，在这部分，我们将看看如何能够在 Linux 上创建和使用 RAID 0（条带化），以名为 sdb 和 sdc 两个 20GB 的硬盘为例。第1步：更新系统和安装管理 RAID 的 mdadm 软件1、 在 Linux 上设置 RAID 0 前，我们先更新一下系统，然后安装mdadm 包。mdadm 是一个小程序，这将使我们能够在Linux下配置和管理 RAID 设备。# yum clean all && yum update # yum install mdadm -y 安装 mdadm 工具第2步：确认连接了两个 20GB 的硬盘2、 在创建 RAID 0 前，请务必确认两个硬盘能被检测到，使用下面的命令确认。# ls -l /dev | grep sd 检查硬盘3、 一旦检测到新的硬盘驱动器，同时检查是否连接的驱动器已经被现有的 RAID 使用，使用下面的mdadm 命令来查看。# mdadm --examine /dev/sd[b-c] 检查 RAID 设备从上面的输出我们可以看到，没有任何 RAID 使用 sdb 和 sdc 这两个驱动器。第3步：创建 RAID 分区4、 现在用 sdb 和 sdc 创建 RAID 的分区，使用 fdisk 命令来创建。在这里，我将展示如何创建 sdb 驱动器上的分区。# fdisk /dev/sdb 请按照以下说明创建分区。按n 创建新的分区。然后按P 选择主分区。接下来选择分区号为1。只需按两次回车键选择默认值即可。然后，按P 来显示创建好的分区。创建分区请按照以下说明将分区创建为 Linux 的 RAID 类型。按L，列出所有可用的类型。按t 去修改分区。键入fd 设置为 Linux 的 RAID 类型，然后按回车确认。然后再次使用p查看我们所做的更改。使用w保存更改。在 Linux 上创建 RAID 分区注: 请使用上述步骤同样在 sdc 驱动器上创建分区。5、 创建分区后，验证这两个驱动器是否正确定义 RAID，使用下面的命令。# mdadm --examine /dev/sd[b-c] # mdadm --examine /dev/sd[b-c]1 验证 RAID 分区第4步：创建 RAID md 设备6、 现在使用以下命令创建 md 设备（即 /dev/md0），并选择 RAID 合适的级别。# mdadm -C /dev/md0 -l raid0 -n 2 /dev/sd[b-c]1 # mdadm --create /de…

在 Linux 下使用 RAID（一）：介绍 RAID 的级别和概念
type: item
date: 2015-08-25T01:33:00+08:00
description: RAID 的意思是廉价磁盘冗余阵列（Redundant Array of Inexpensive Disks），但现在它被称为独立磁盘冗余阵列（Redundant Array of Independent Drives）。早先一个容量很小的磁盘都是非常昂贵的，但是现在我们可以很便宜的买到一个更大的磁盘。Raid 是一系列放在一起，成为一个逻辑卷的磁盘集合。在 Linux 中理解 RAID 设置RAID 包含一组或者一个集合甚至一个阵列。使用一组磁盘结合驱动器组成 RAID 阵列或 RAID 集。将至少两个磁盘连接到一个 RAID 控制器，而成为一个逻辑卷，也可以将多个驱动器放在一个组中。一组磁盘只能使用一个 RAID 级别。使用 RAID 可以提高服务器的性能。不同 RAID 的级别，性能会有所不同。它通过容错和高可用性来保存我们的数据。这个系列被命名为“在 Linux 下使用 RAID”，分为9个部分，包括以下主题：第1部分：介绍 RAID 的级别和概念第2部分：在Linux中如何设置 RAID0（条带化）第3部分：在Linux中如何设置 RAID1（镜像化）第4部分：在Linux中如何设置 RAID5（条带化与分布式奇偶校验）第5部分：在Linux中如何设置 RAID6（条带双分布式奇偶校验）第6部分：在Linux中设置 RAID 10 或1 + 0（嵌套）第7部分：扩展现有的 RAID 阵列和删除故障的磁盘第8部分：在 RAID 中恢复（重建）损坏的驱动器第9部分：在 Linux 中管理 RAID这是9篇系列教程的第1部分，在这里我们将介绍 RAID 的概念和 RAID 级别，这是在 Linux 中构建 RAID 需要理解的。软件 RAID 和硬件 RAID软件 RAID 的性能较低，因为其使用主机的资源。 需要加载 RAID 软件以从软件 RAID 卷中读取数据。在加载 RAID 软件前，操作系统需要引导起来才能加载 RAID 软件。在软件 RAID 中无需物理硬件。零成本投资。硬件 RAID 的性能较高。他们采用 PCI Express 卡物理地提供有专用的 RAID 控制器。它不会使用主机资源。他们有 NVRAM 用于缓存的读取和写入。缓存用于 RAID 重建时，即使出现电源故障，它会使用后备的电池电源保持缓存。对于大规模使用是非常昂贵的投资。硬件 RAID 卡如下所示：硬件 RAID重要的 RAID 概念校验方式用在 RAID 重建中从校验所保存的信息中重新生成丢失的内容。 RAID 5，RAID 6 基于校验。条带化是将切片数据随机存储到多个磁盘。它不会在单个磁盘中保存完整的数据。如果我们使用2个磁盘，则每个磁盘存储我们的一半数据。镜像被用于 RAID 1 和 RAID 10。镜像会自动备份数据。在 RAID 1 中，它会保存相同的内容到其他盘上。热备份只是我们的服务器上的一个备用驱动器，它可以自动更换发生故障的驱动器。在我们的阵列中，如果任何一个驱动器损坏，热备份驱动器会自动用于重建 RAID。块是 RAID 控制器每次读写数据时的最小单位，最小 4KB。通过定义块大小，我们可以增加 I/O 性能。RAID有不同的级别。在这里，我们仅列出在真实环境下的使用最多的 RAID 级别。RAID0 = 条带化RAID1 = 镜像RAID5 = 单磁盘分布式奇偶校验RAID6 = 双磁盘分布式奇偶校验RAID10 = 镜像 + 条带。（嵌套RAID）RAID 在大多数 Linux 发行版上使用名为 mdadm 的软件包进行管理。让我们先对每个 RAID 级别认识一下。RAID 0 / 条带化条带化有很好的性能。在 RAID 0（条带化）中数据将使用切片的方式被写入到磁盘。一半的内容放在一个磁盘上，另一半内容将被写入到另一个磁盘。假设我们有2个磁盘驱动器，例如，如果我们将数据“TECMINT”写到逻辑卷中，“T”将被保存在第一盘中，“E”将保存在第二盘，'C'将被保存在第一盘，“M”将保存在第二盘，它会一直继续此循环过程。（LCTT 译注：实际上不可能按字节切片，是按数据块切片的。）在这种情况下，如果驱动器中的任何一个发生故障，我们就会丢失数据，因为一个盘中只有一半的数据，不能用于重建 RAID。不过，当比较写入速度和性能时，RAID 0 是非常好的。创建 RAID 0（条带化）至少需要2个磁盘。如果你的数据是非常宝贵的，那么不要使用此 RAID 级别。高性能。RAID 0 中容量零损失。零容错。写和读有很高的性能。RAID 1 / 镜像化镜像也有不错的性能。镜像可以对我们的数据做一份相同的副本。假设我们有两个2TB的硬盘驱动器，我们总共有4TB，但在镜像中，但是放在 RAID 控制器后面的驱动器形成了一个逻辑驱动器，我…

设置iSCSI的发起程序（客户端）（三）
type: item
date: 2015-03-04T23:36:00+08:00
description: iSCSI 发起程序是一种用于同 iSCSI 目标器认证并访问服务器上共享的LUN的客户端。我们可以在本地挂载的硬盘上部署任何操作系统，只需要安装一个包来与目标器验证。初始器客户端设置功能可以处理本地挂载磁盘上的任意文件系统在使用fdisk命令分区后不需要重启系统前置阅读使用iSCSI Target创建集中式安全存储（一）在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）我的客户端设置操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.50使用的端口 : TCP 3260警告：永远不要在LUN还挂载在客户端（发起程序）时停止服务。客户端设置1. 在客户端，我们需要安装包‘iSCSI-initiator-utils’，用下面的命令搜索包。# yum search iscsi 示例输出============================= N/S Matched: iscsi ================================ iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils 2. 找到了包，就用下面的yum命令安装初始化包。# yum install iscsi-initiator-utils.x86_64 3. 安装完毕后，我们需要发现目标器上的共享。客户端的命令有点难记，因此我们使用man找到需要运行的命令列表。# man iscsiadm man iscsiadm4. 按下SHIFT+G 进入man页的底部并且稍微向上滚动找到示例的登录命令。下面的发现命令中，需要用我们的服务器IP地址来替换。# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.0.200 --discover 5. 这里我们从下面的命令输出中找到了iSCSI的限定名（iqn）。192.168.0.200:3260,1 iqn.2014-07.com.tecmint:tgt1 发现服务器6. 要登录就用下面的命令来连接一台LUN到我们本地系统中，这会与服务器验证并允许我们登录LUN。# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 --login 登录到服务器注意：登出使用登录命令并在命令的最后使用logout来替换。# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 --logout 登出服务器7. 登录服务器后，使用下面的命令列出节点的记录行。# iscsiadm --mode node 列出节点8. 显示特定节点的所有数据# iscsiadm --mode node --targetname iqn.2014-07.com.tecmint:tgt1 --portal 192.168.0.200:3260 示例输出# BEGIN RECORD 6.2.0-873.10.el6 node.name = iqn.2014-07.com.tecmint:tgt1 node.tpgt = 1 node.startup = automatic node.leading_login = No iface.hwaddress = <empty> iface.ipaddress = <empty> iface.iscsi_ifacename = default iface.net_ifacename = <empty> iface.transport_name = tcp iface.initiatorname = <empty> iface.bootproto = <empty> iface.subnet_mask = <empty> iface.gateway = <empty> iface.ipv6_autocfg = <empty> iface.linklocal_autocfg = <empty> .... 9. 接着列出使用的磁盘，fdisk会列出所有的登录认证过的磁盘。# fdisk -l /dev/sda 列出磁盘10. 运行fdisk命令来创建一个新的分区# fdisk -cu /dev…

在 iSCSI Target 服务器中使用LVM创建和设置LUN（二）
type: item
date: 2015-03-03T19:04:00+08:00
description: LUN是逻辑单元号，它与iSCSI存储服务器共享。iSCSI 目标器通过TCP/IP网络共享它的物理驱动器给发起程序（initiator）。这些来自一个大型存储（SAN：Storage Area Network）的驱动器集合称作LUN。在真实环境中LUN是在LVM中定义的，因为它可以按需扩展。在目标器中使用 LVM 创建 LUN为什么使用LUN？LUN用于存储，SAN存储大多数由LUN的集群来组成存储池，LUN由目标器的几块物理驱动器组成。我们可以使用LUN作为系统物理驱动器来安装操作系统，LUN可以用在集群、虚拟服务器、SAN中。在虚拟服务器中使用LUN的主要用途是作为操作系统的存储。LUN的性能和可靠性根据在创建目标存储服务器时所使用的驱动器决定。前置阅读要了解创建iSCSI 目标器，点击下面的链接。使用iSCSI Target创建集中式安全存储（一）主服务器设置系统信息和网络设置部分与前文的iSCSI 目标器相同 - 我们在相同的服务器上定义LUN。操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.200使用的端口 : TCP 860, 3260配置文件 : /etc/tgt/targets.conf在iSCSI 目标器使用LVM创建LUN首先，用fdisk -l命令找出驱动器的列表，这会列出系统中所有分区的列表。# fdisk -l 上面的命令只会给出基本系统的驱动器信息。为了得到存储设备的信息，使用下面的命令来得到存储设备的列表。# fdisk -l /dev/vda && fdisk -l /dev/sda 列出存储设备注意：这里vda是虚拟机硬盘，因为我使用的是虚拟机来用于演示，/dev/sda 是额外加入的存储。第一步： 创建用于LUN的LVM驱动器我们使用/dev/sda驱动器来创建LVM。# fdisk -l /dev/sda 列出LVM驱动器现在让我们使用如下fdisk命令列出驱动器分区。# fdisk -cu /dev/sda 选项 ‘-c’ 关闭DOS兼容模式。选项 ‘-u’ 用于列出分区表时给出扇区而不是柱面的大小。使用n创建新的分区。Command (m for help): n 使用p创建主分区。Command action e extended p primary partition (1-4) 给我们创建的分区一个分区号。Partition number (1-4): 1 到这里，我们就要设置LVM驱动器了。因此，我们需要使用默认的设置来使用整个驱动器。First sector (2048-37748735, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-37748735, default 37748735): Using default value 37748735 选择分区的类型，这里我们要设置LVM，因此使用8e。使用l列出所有的类型。Command (m for help): t 选择想要改变类型的分区。Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) 在改变完类型之后，通过打印（p）选项来列出分区表。Command (m for help): p Disk /dev/sda: 19.3 GB, 19327352832 bytes 255 heads, 63 sectors/track, 2349 cylinders, total 37748736 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x9fae99c8 Device Boot Start End Blocks Id System /dev/sda1 2048 37748735 18873344 8e Linux LVM 使用w写入设置并退出fdisk工具，重启系统使设置生效。作为参考，我下面附上了截图来给你在创建LVM驱动器时一个明确的指导。创建LVM分区系统重启后，使用fdisk命令列出分区表。# fdisk -l /dev/sda 验证LVM分区第二步： 为LUN创建逻辑卷现在我们使用‘pvcre…

使用iSCSI Target创建集中式安全存储（一）
type: item
date: 2015-03-02T22:24:00+08:00
description: iSCSI 是一种块级别的协议，用于通过TCP/IP网络共享原始存储设备，可以用已经存在的IP和以太网如网卡、交换机、路由器等通过iSCSI协议共享和访问存储。iSCSI target是一种由远程iSCSI服务器（target）提供的远程硬盘。在Linux中安装iSCSI Target我们不需要占用很大的资源就可以为客户端提供稳定的连接和性能。iSCSI服务器称为“Target（目标器）”，它提供服务器上的存储共享。iSCSI客户端称为“Initiator（发起程序）”，它访问目标器共享的存储。市场中有卖的用于大型存储服务如SAN的iSCSI适配器。我们为什么要在大型存储领域中使用iSCSI适配器以太网适配器（NIC）被设计用于在系统、服务器和存储设备如NAS间传输分组数据，它不适合在Internet中传输块级数据。iSCSI Target的功能可以在一台机器上运行几个iSCSI 目标器一台机器可以提供多个iSCSI 目标器用于iSCSI SAN访问一个目标器就是一块存储，并且可以通过网络被发起程序（客户端）访问把这些存储汇聚在一起让它们在网络中可以访问的是iSCSI LUN（逻辑单元号）iSCSI支持在同一个会话中使用多个连接iSCSI发起程序在网络中发现目标接着用LUN验证并登录，这样就可以本地访问远程存储。我们可以在本地挂载的LUN上安装任何操作系统，就像我们安装我们本地的操作系统一样。为什么需要iSCSI？在虚拟化中，我们需要存储拥有高度的冗余性、稳定性，iSCSI以低成本的方式提供了这些特性。与使用光纤通道的SAN比起来，我们可以使用已经存在的设备比如NIC、以太网交换机等建造一个低成本的SAN。现在我开始使用iSCSI 目标器安装并配置安全存储。本篇中，我们遵循下面的步骤：我们需要隔离一个系统来设置iSCSI 目标器和发起程序（客户端）。在大型存储环境中可以添加多个硬盘，但是这里我们除了基本的安装盘之外只使用了一个额外的驱动器。这里我们只使用了2块硬盘，一个用于基本的服务器安装，另外一个用于存储（LUN），这个我们会在这个系列的第二篇描述。主服务器设置操作系统 – CentOS 6.5 (Final)iSCSI 目标器 IP – 192.168.0.200使用的端口 : TCP 860, 3260配置文件 : /etc/tgt/targets.conf安装 iSCSI Target打开终端并使用yum命令来搜索需要在iscsi 目标器上安装的包名。# yum search iscsi 输出示例========================== N/S matched: iscsi ======================= iscsi-initiator-utils.x86_64 : iSCSI daemon and utility programs iscsi-initiator-utils-devel.x86_64 : Development files for iscsi-initiator-utils lsscsi.x86_64 : List SCSI devices (or hosts) and associated information scsi-target-utils.x86_64 : The SCSI target daemon and utility programs 你会的到上面的那些结果，选择Target包来安装。# yum install scsi-target-utils -y 安装iSCSI工具列出安装的包里面的内容来了解默认的配置、服务和man页面的位置。# rpm -ql scsi-target-utils.x86_64 列出所有的iSCSI包里面的文件让我们启动iSCSI服务，并检查服务运行的状态，iSCSI的服务名是tgtd。# /etc/init.d/tgtd start # /etc/init.d/tgtd status 启动iSCSI服务现在我们需要配置开机自动启动。# chkconfig tgtd on 现在验证tgtd服务的运行级别是否配置正确。# chkconfig --list tgtd 开机启动iSCSI现在使用tgtadm来列出在我们的服务器上已经配置了哪些target和LUN。# tgtadm --mode target --op show tgtd已经安装并在运行了，但是上面的命令没有输出因为我们还没有在Target服务器上定义LUN。要查看手册，可以运行‘man‘命令。# man tgtadm iSCSI Man 页面如果你的目标器上有iptable的话，那么我们需要为iSCSI添加iptable规则。首先使用netstat命令找出iscsi t…