标签 Raid 下的文章

mdadm 是 多磁盘和设备管理 Multiple Disk and Device Administration 的缩写。它是一个命令行工具,可用于管理 Linux 上的软件 RAID 阵列。本文概述了使用它的基础知识。

以下 5 个命令是你使用 mdadm 的基础功能:

  1. 创建 RAID 阵列mdadm --create /dev/md/test --homehost=any --metadata=1.0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
  2. 组合(并启动)RAID 阵列mdadm --assemble /dev/md/test /dev/sda1 /dev/sdb1
  3. 停止 RAID 阵列mdadm --stop /dev/md/test
  4. 删除 RAID 阵列mdadm --zero-superblock /dev/sda1 /dev/sdb1
  5. 检查所有已组合的 RAID 阵列的状态cat /proc/mdstat

功能说明

mdadm –create

上面的创建命令除了 -create 参数自身和设备名之外,还包括了四个参数:

1、–homehost

默认情况下,mdadm 将你的计算机名保存为 RAID 阵列的属性。如果你的计算机名与存储的名称不匹配,则阵列将不会自动组合。此功能在共享硬盘的服务器群集中很有用,因为如果多个服务器同时尝试访问同一驱动器,通常会发生文件系统损坏。名称 any 是保留字段,并禁用 -homehost 限制。

2、 –metadata

-mdadm 保留每个 RAID 设备的一小部分空间,以存储有关 RAID 阵列本身的信息。 -metadata 参数指定信息的格式和位置。1.0 表示使用版本 1 格式,并将元数据存储在设备的末尾。

3、–level

-level 参数指定数据应如何在底层设备之间分布。级别 1 表示每个设备应包含所有数据的完整副本。此级别也称为磁盘镜像

4、–raid-devices

-raid-devices 参数指定将用于创建 RAID 阵列的设备数。

通过将 -level=1(镜像)与 -metadata=1.0 (将元数据存储在设备末尾)结合使用,可以创建一个 RAID1 阵列,如果不通过 mdadm 驱动访问,那么它的底层设备会正常显示。这在灾难恢复的情况下很有用,因为即使新系统不支持 mdadm 阵列,你也可以访问该设备。如果程序需要在 mdadm 可用之前以只读访问底层设备时也很有用。例如,计算机中的 UEFI 固件可能需要在启动 mdadm 之前从 ESP 读取引导加载程序。

mdadm –assemble

如果成员设备丢失或损坏,上面的组合命令将会失败。要强制 RAID 阵列在其中一个成员丢失时进行组合并启动,请使用以下命令:

# mdadm --assemble --run /dev/md/test /dev/sda1

其他重要说明

避免直接写入底层是 RAID1 的设备。这导致设备不同步,并且 mdadm 不会知道它们不同步。如果你访问了在其他地方被修改了设备的某个 RAID1 阵列,则可能导致文件系统损坏。如果你在其他地方修改 RAID1 设备并需要强制阵列重新同步,请从要覆盖的设备中删除 mdadm 元数据,然后将其重新添加到阵列,如下所示:

# mdadm --zero-superblock /dev/sdb1
# mdadm --assemble --run /dev/md/test /dev/sda1
# mdadm /dev/md/test --add /dev/sdb1

以上用 sda1 的内容完全覆盖 sdb1 的内容。

要指定在计算机启动时自动激活的 RAID 阵列,请创建 /etc/mdadm.conf 配置。

有关最新和详细信息,请查看手册页:

$ man mdadm
$ man mdadm.conf

本系列的下一篇文章将展示如何将现有的单磁盘 Linux 系统变为镜像磁盘安装,这意味着即使其中一个硬盘突然停止工作,系统仍将继续运行!


via: https://fedoramagazine.org/managing-raid-arrays-with-mdadm/

作者:Gregory Bartholomew 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Linux 系统上,有大量的文件系统可以使用,那么我们为什么还要尝试一个新的文件系统?它们都工作的很好,不是吗?但是它们并不完全相同,其中的一些文件系统具有非常突出的优点,例如 ZFS。

为什么选择 ZFS

ZFS 非常的优秀。这是一个真正现代的文件系统,内置的功能对于处理大量的数据很有意义。

现在,如果您正在考虑将 ZFS 用于您的超高速 NVMe SSD,这可能不是一个最佳选择。 它比别的文件系统要慢,不过,这完全没有问题, 它旨在存储大量的数据并保持安全。

ZFS 消除了建立传统 RAID 阵列(LCTT 译注:独立磁盘冗余阵列)的需要。 相反,您可以创建 ZFS 池,甚至可以随时将驱动器添加到这些池中。 ZFS 池的行为操作与 RAID 几乎完全相同,但功能内置于文件系统中。

ZFS 也可以替代 LVM (LCTT 译注:逻辑盘卷管理),使您能够动态地进行分区和管理分区,而无需处理底层的细节,也不必担心相关的风险。

这也是一个 CoW (LCTT 译注:写时复制)文件系统。 这里不会提及太多的技术性,这意味着 ZFS 可以保护您的数据免受逐渐损坏的影响。 ZFS 会创建文件的校验和,并允许您将这些文件回滚到以前的工作版本。

安装 ZFS

 title=

在 Ubuntu 上安装 ZFS 非常简单,但对于 Ubuntu LTS (LCTT 译注:长时间支持版本)和最新版本来说,这个过程稍有不同。

Ubuntu 16.04 LTS

sudo apt install zfs

Ubuntu 17.04 及以后

sudo apt install zfsutils

当你安装好程序后,可以使用 ZFS 提供的工具创建 ZFS 驱动器和分区。

创建池

 title=

在 ZFS 中,池大致相当于 RAID 。 它们很灵活且易于操作。

RAID0

RAID0 只是把你的硬盘集中到一个池子里面,就像一个巨大的驱动器一样。 它可以提高你的驱动器速度,(LCTT 译注:数据条带化后,并行访问,可以提高文件读取速度)但是如果你的驱动器有损坏,你可能会失丢失数据。

要使用 ZFS 实现 RAID0,只需创建一个普通的池。

sudo zpool create your-pool /dev/sdc /dev/sdd

RAID1(镜像)

您可以在 ZFS 中使用 mirror 关键字来实现 RAID1 功能。 RAID1 会创建一个一对一的驱动器副本。 这意味着您的数据一直在备份。 它也提高了性能。 当然,你将一半的存储空间用于了复制。

sudo zpool create your-pool mirror /dev/sdc /dev/sdd

RAID5/RAIDZ1

ZFS 将 RAID5 功能实现为 RAIDZ1。 RAID5 要求驱动器至少是 3 个。并允许您通过将备份奇偶校验数据写入驱动器空间的 1/n(n 是驱动器数),留下的是可用的存储空间。 如果一个驱动器发生故障,阵列仍将保持联机状态,但应尽快更换发生故障的驱动器(LCTT 译注:与原文翻译略有不同,原文是驱动器的数目是三的倍数,根据 wiki, RAID5 至少需要 3 块驱动器,也可以从下面的命令中猜测)。

sudo zpool create your-pool raidz1 /dev/sdc /dev/sdd /dev/sde

RAID6/RAIDZ2

RAID6 与 RAID5 几乎完全相同,但它至少需要四个驱动器。 它将奇偶校验数据加倍,最多允许两个驱动器损坏,而不会导致阵列关闭(LCTT 译注:这里也与原文略有出入,原文是驱动器的数目是四的倍数,根据 wiki ,RAID6 至少需要四个驱动器)。

sudo zpool create your-pool raidz2 /dev/sdc /dev/sdd /dev/sde /dev/sdf

RAID10(条带化镜像)

RAID10 旨在通过数据条带化提高存取速度和数据冗余来成为一个两全其美的解决方案。 你至少需要四个驱动器,但只能使用一半的空间。 您可以通过在同一个池中创建两个镜像来创建 RAID10 中的池(LCTT 译注:这里也与原文略有出入,原文是驱动器的数目是四的倍数,根据 wiki, RAID10 至少需要四个驱动器)。

sudo zpool create your-pool mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf

池的操作

 title=

还有一些管理工具,一旦你创建了你的池,你就必须使用它们来操作。 首先,检查你的池的状态。

sudo zpool status

更新

当你更新 ZFS 时,你也需要更新你的池。 当您检查它们的状态时,您的池会通知您任何更新。 要更新池,请运行以下命令。

sudo zpool upgrade your-pool

你也可以更新全部池。

sudo zpool upgrade -a

添加驱动器

您也可以随时将驱动器添加到池中。 告诉 zpool 池的名称和驱动器的位置,它会处理好一切。

sudo zpool add your-pool /dev/sdx

其它的一些想法

 title=

ZFS 会在您的池的根文件系统中创建一个目录。 您可以使用 GUI 文件管理器或 CLI 按名称浏览它们。

ZFS 非常强大,还有很多其它的东西可以用它来做,但这些都是基础。 这是一个优秀的存储负载文件系统,即使它只是一个用于文件的硬盘驱动器的 RAID 阵列。 ZFS 在 NAS 系统上也非常出色。

无论 ZFS 的稳定性和可靠性如何,在您的硬盘上实施新的功能时,最好备份您的数据。


via: https://www.maketecheasier.com/use-zfs-filesystem-ubuntu-linux/

作者:Nick Congleton 译者:amwps290 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

设置 Linux RAID 1

配置 LINUX RAID 1 非常重要,因为它提供了冗余性。

RAID 分区拥有高级功能,如冗余和更好的性能。所以让我们来说下如何实现 RAID,以及让我们来看看不同类型的 RAID:

  • RAID 0(条带):磁盘组合在一起,形成一个更大的驱动器。这以可用性为代价提供了更好的性能。如果 RAID 中的任何一块磁盘出现故障,则整个磁盘集将无法使用。最少需要两块磁盘。
  • RAID 1(镜像):磁盘从一个复制到另一个,提供了冗余。如果一块磁盘发生故障,则另一块磁盘接管,它有另外一份原始磁盘的数据的完整副本。其缺点是写入时间慢。最少需要两块磁盘。
  • RAID 5(带奇偶校验的条带):磁盘类似于 RAID 0,并且连接在一起以形成一个大型驱动器。这里的区别是,一块磁盘用于奇偶校验位,这允许在单个磁盘发生故障时可以恢复磁盘。最少需要三块盘。

让我们继续进行 Linux RAID 1 配置。

安装 Linux RAID 1 的要求:

1、系统中应该安装了 mdam,请用下面的命令确认。

[root@rhel1 ~]# rpm -qa | grep -i mdadm
mdadm-3.2.2-9.el6.x86_64
[root@rhel1 ~]#

2、 系统应该连接了 2 块磁盘。

创建两个分区,一个磁盘一个分区(sdc、sdd),每个分区占据整块磁盘。

Disk /dev/sdc: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x67cc8cfb

Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ 83 Linux

Disk /dev/sdd: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0294382b

Device Boot Start End Blocks Id System
/dev/sdd1 1 130 1044193+ 83 Linux

现在你可以用你已经创建好的两个分区来设置 RAID 1 了。你可以使用 mdadm 命令来创建 RAID 阵列。

Syntax: mdadm [options] 
Options: -a, xx Adds a disk into a current array 
-C, —create Creates a new RAID array 
-D, —detail Prints the details of an array 
-G, —grow Changes the size or shape of an active array
-f, xx Fails a disk in the array
-l, —level Specifies level (type) of RAID array to create 
-n, —raid-devices Specifies the devices in the RAID array 
-q, —quiet Species not to show output 
-S, —stop Stops an array 
-v, —verbose Provides verbose output

创建 Linux RAID 1 设备:

[root@rhel1 ~]# mdadm -Cv /dev/md0 --level=1 -n2 /dev/sdc1 /dev/sdd1
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: size set to 1044181K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@rhel1 ~]#

使用下列命令查看新创建的 RAID 1 设备:

[root@rhel1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd1[1] sdc1[0]
1044181 blocks super 1.2 [2/2] [UU]
 
unused devices: <none>
[root@rhel1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdd1[1] sdc1[0]
1044181 blocks super 1.2 [2/2] [UU]
 
unused devices: <none>

使用 mdadm 命令再次确认,RAID 1 已经创建好了。

[root@rhel1 ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Dec 7 15:50:06 2016
Raid Level : raid1
Array Size : 1044181 (1019.88 MiB 1069.24 MB)
Used Dev Size : 1044181 (1019.88 MiB 1069.24 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
 
Update Time : Wed Dec 7 15:50:12 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
 
Name : rhel1.lab.com:0 (local to host rhel1.lab.com)
UUID : d5c0f82e:4e0753e6:0b28c178:e6f75af4
Events : 17
 
Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sdc1
1 8 49 1 active sync /dev/sdd1
[root@rhel1 ~]#

使用下列命令格式化新创建的 Linux RAID 1 设备:

[root@rhel1 ~]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65280 inodes, 261045 blocks
13052 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8160 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
 
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

挂载 Linux RAID 1 设备:

[root@rhel1 ~]# mkdir /RAID1
[root@rhel1 ~]# mount /dev/md0 /RAID1
[root@rhel1 ~]# df -h /RAID1
Filesystem Size Used Avail Use% Mounted on
/dev/md0 1004M 18M 936M 2% /RAID1
[root@rhel1 ~]#

作者简介:

大家好!我是 Manmohan Mirkar。我很高兴见到你们!我在 10 多年前开始使用 Linux,我从来没有想过我会到今天这个地步。我的激情是帮助你们获取 Linux 知识。谢谢阅读!


via: http://www.linuxroutes.com/linux-raid-1/

作者:Manmohan Mirkar 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 基金会已经发起了一个全新的 LFCS( Linux 基金会认证系统管理员 Linux Foundation Certified Sysadmin )认证,旨在让来自世界各地的人有机会参加到 LFCS 测试,获得关于有能力在 Linux 系统中执行中级系统管理任务的认证。该认证包括:维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。

Linux Foundation Certified Sysadmin – Part 6

LFCS 系列第六讲

以下视频介绍了 Linux 基金会认证程序。

本讲是系列教程中的第六讲,在这一讲里,我们将会解释如何将分区组装为 RAID 设备——创建和管理系统备份。这些都是 LFCS 认证中的必备知识。

了解RAID

这种被称为独立磁盘冗余阵列(Redundant Array of Independent Disks)(RAID)的技术是将多个硬盘组合成一个单独逻辑单元的存储解决方案,它提供了数据冗余功能并且改善硬盘的读写操作性能。

然而,实际的容错和磁盘 I/O 性能硬盘取决于如何将多个硬盘组装成磁盘阵列。根据可用的设备和容错/性能的需求,RAID 被分为不同的级别,你可以参考 RAID 系列文章以获得每个 RAID 级别更详细的解释。

我们选择用于创建、组装、管理、监视软件 RAID 的工具,叫做 mdadm (multiple disk admin 的简写)。

---------------- Debian 及衍生版 ----------------
# aptitude update && aptitude install mdadm
---------------- Red Hat 和基于 CentOS 的系统 ----------------
# yum update && yum install mdadm
---------------- openSUSE 上 ----------------
# zypper refresh && zypper install mdadm #

将分区组装成 RAID 设备

组装已有分区作为 RAID 设备的过程由以下步骤组成。

1. 使用 mdadm 创建阵列

如果先前其中一个分区已经格式化,或者作为了另一个 RAID 阵列的一部分,你会被提示以确认创建一个新的阵列。假设你已经采取了必要的预防措施以避免丢失重要数据,那么可以安全地输入 Y 并且按下回车。

# mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1

Creating RAID Array

创建 RAID 阵列

2. 检查阵列的创建状态

在创建了 RAID 阵列之后,你可以检查使用以下命令检查阵列的状态。

# cat /proc/mdstat
or
# mdadm --detail /dev/md0    [More detailed summary]

Check RAID Array Status

检查 RAID 阵列的状态

3. 格式化 RAID 设备

如本系列第四讲所介绍的,按照你的需求/要求采用某种文件系统格式化你的设备。

4. 监控 RAID 阵列服务

让监控服务时刻监视你的 RAID 阵列。把# mdadm --detail --scan命令输出结果添加到 /etc/mdadm/mdadm.conf(Debian及其衍生版)或者/etc/mdadm.conf(Cent0S/openSUSE),如下。

# mdadm --detail --scan

Monitor RAID Array

监控 RAID 阵列

# mdadm --assemble --scan     [Assemble the array]

为了确保服务能够开机启动,需要以 root 权限运行以下命令。

Debian 及其衍生版

Debian 及其衍生版能够通过下面步骤使服务默认开机启动:

# update-rc.d mdadm defaults

/etc/default/mdadm 文件中添加下面这一行

AUTOSTART=true

CentOS 和 openSUSE(systemd-based)

# systemctl start mdmonitor
# systemctl enable mdmonitor

CentOS 和 openSUSE(SysVinit-based)

# service mdmonitor start
# chkconfig mdmonitor on

5. 检查RAID磁盘故障

在支持冗余的的 RAID 级别中,在需要时会替换故障的驱动器。当磁盘阵列中的设备出现故障时,仅当存在我们第一次创建阵列时预留的备用设备时,磁盘阵列会将自动启动重建。

Check RAID Faulty Disk

检查 RAID 故障磁盘

否则,我们需要手动将一个额外的物理驱动器插入到我们的系统,并且运行。

# mdadm /dev/md0 --add /dev/sdX1

/dev/md0 是出现了问题的阵列,而 /dev/sdx1 是新添加的设备。

6. 拆解一个工作阵列

如果你需要使用工作阵列的设备创建一个新的阵列,你可能不得不去拆解已有工作阵列——(可选步骤)

# mdadm --stop /dev/md0                 #  Stop the array
# mdadm --remove /dev/md0             # Remove the RAID device
# mdadm --zero-superblock /dev/sdX1     # Overwrite the existing md superblock with zeroes

7. 设置邮件通知

你可以配置一个用于发送通知的有效邮件地址或者系统账号(确保在 mdadm.conf 文件中有下面这一行)。——(可选步骤)

MAILADDR root

在这种情况下,来自 RAID 后台监控程序所有的通知将会发送到你的本地 root 账号的邮件箱中。其中一个类似的通知如下。

说明:此次通知事件和第5步中的例子相关。此处一个设备被标志为错误,并且一个空闲的设备自动地被 mdadm 加入到阵列。我们用完了所有“健康的”空闲设备,因此我们得到了通知。

RAID Monitoring Alerts

RAID 监控通知

了解 RAID 级别

RAID 0

阵列总大小是最小分区大小的 n 倍,n 是阵列中独立磁盘的个数(你至少需要两个驱动器/磁盘)。运行下面命令,使用 /dev/sdb1 和 /dev/sdc1 分区组装一个 RAID 0 阵列。

# mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1

常见用途:用于支持性能比容错更重要的实时应用程序的设置

RAID 1 (又名镜像)

阵列总大小等于最小分区大小(你至少需要两个驱动器/磁盘)。运行下面命令,使用 /dev/sdb1 和 /dev/sdc1 分区组装一个 RAID 1 阵列。

# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

常见用途:操作系统的安装或者重要的子文件夹,例如 /home

RAID 5 (又名奇偶校验码盘)

阵列总大小将是最小分区大小的 (n-1) 倍。所减少的大小用于奇偶校验(冗余)计算(你至少需要3个驱动器/磁盘)。

说明:你可以指定一个空闲设备 (/dev/sde1) 替换问题出现时的故障部分(分区)。运行下面命令,使用 /dev/sdb1, /dev/sdc1, /dev/sdd1,/dev/sde1 组装一个 RAID 5 阵列,其中 /dev/sde1 作为空闲分区。

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1

常见用途:Web 和文件服务

RAID 6 (又名双重奇偶校验码盘)

阵列总大小为(ns)-2s,其中n为阵列中独立磁盘的个数,s为最小磁盘大小。

说明:你可以指定一个空闲分区(在这个例子为 /dev/sdf1)替换问题出现时的故障部分(分区)。

运行下面命令,使用 /dev/sdb1, /dev/sdc1, /dev/sdd1, /dev/sde1 和 /dev/sdf1 组装 RAID 6 阵列,其中 /dev/sdf1 作为空闲分区。

# mdadm --create --verbose /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde --spare-devices=1 /dev/sdf1

常见用途:大容量、高可用性要求的文件服务器和备份服务器。

RAID 1+0 (又名镜像条带)

因为 RAID 1+0 是 RAID 0 和 RAID 1 的组合,所以阵列总大小是基于两者的公式计算的。首先,计算每一个镜像的大小,然后再计算条带的大小。

# mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[b-e]1 --spare-devices=1 /dev/sdf1

常见用途:需要快速 IO 操作的数据库和应用服务器

创建和管理系统备份

记住, RAID 其所有的价值不是在于备份的替换者!在黑板上写上1000次,如果你需要的话,但无论何时一定要记住它。在我们开始前,我们必须注意的是,没有一个放之四海皆准的针对所有系统备份的解决方案,但这里有一些东西,是你在规划一个备份策略时需要考虑的。

  • 你的系统将用于什么?(桌面或者服务器?如果系统是应用于后者,那么最重要的服务是什么?哪个配置是痛点?)
  • 你每隔多久备份你的系统?
  • 你需要备份的数据是什么(比如文件/文件夹/数据库转储)?你还可以考虑是否需要备份大型文件(比如音频和视频文件)。
  • 这些备份将会存储在哪里(物理位置和媒体)?

备份你的数据

方法1:使用 dd 命令备份整个磁盘。你可以在任意时间点通过创建一个准确的镜像来备份一整个硬盘或者是分区。注意当设备是离线时,这种方法效果最好,也就是说它没有被挂载并且没有任何进程的 I/O 操作访问它。

这种备份方法的缺点是镜像将具有和磁盘或分区一样的大小,即使实际数据占用的是一个很小的比例。比如,如果你想要为只使用了10%的20GB的分区创建镜像,那么镜像文件将仍旧是20GB。换句话来讲,它不仅包含了备份的实际数据,而且也包含了整个分区。如果你想完整备份你的设备,那么你可以考虑使用这个方法。

从现有的设备创建一个镜像文件

# dd if=/dev/sda of=/system_images/sda.img
或者
--------------------- 可选地,你可以压缩镜像文件 -------------------
# dd if=/dev/sda | gzip -c > /system_images/sda.img.gz

从镜像文件恢复备份

# dd if=/system_images/sda.img of=/dev/sda
或者
--------------------- 根据你创建镜像文件时的选择(译者注:比如压缩) ----------------
# gzip -dc /system_images/sda.img.gz | dd of=/dev/sda

方法2:使用 tar 命令备份确定的文件/文件夹——已经在本系列第三讲中讲了。如果你想要备份指定的文件/文件夹(配置文件,用户主目录等等),你可以使用这种方法。

方法3:使用 rsync 命令同步文件。rsync 是一种多功能远程(和本地)文件复制工具。如果你想要从网络设备备份或同步文件,rsync 是一种选择。

无论是你是正在同步两个本地文件夹还是本地 < — > 挂载在本地文件系统的远程文件夹,其基本语法是一样的。

# rsync -av source_directory destination_directory

在这里,-a 递归遍历子目录(如果它们存在的话),维持符号链接、时间戳、权限以及原本的属主/属组,-v 显示详细过程。

rsync Synchronizing Files

rsync 同步文件

除此之外,如果你想增加在网络上传输数据的安全性,你可以通过 ssh 协议使用 rsync。

通过 ssh 同步本地到远程文件夹

# rsync -avzhe ssh backups root@remote_host:/remote_directory/

这个示例,本地主机上的 backups 文件夹将与远程主机上的 /root/remote\_directory 的内容同步。

在这里,-h 选项以易读的格式显示文件的大小,-e 标志用于表示一个 ssh 连接。

rsync Synchronize Remote Files

rsync 同步远程文件

通过ssh同步远程到本地文件夹

在这种情况下,交换前面示例中的 source 和 destination 文件夹。

# rsync -avzhe ssh root@remote_host:/remote_directory/ backups

请注意这些只是 rsync 用法的三个示例而已(你可能遇到的最常见的情形)。对于更多有关 rsync 命令的示例和用法 ,你可以查看下面的文章。

总结

作为一个系统管理员,你需要确保你的系统表现得尽可能好。如果你做好了充分准备,并且如果你的数据完整性能被诸如 RAID 和系统日常备份的存储技术支持,那你将是安全的。

如果你有有关完善这篇文章的问题、评论或者进一步的想法,可以在下面畅所欲言。除此之外,请考虑通过你的社交网络简介分享这系列文章。


via: http://www.tecmint.com/creating-and-managing-raid-backups-in-linux/

作者:Gabriel Cánepa 译者:cpsoture 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

无论你以前有没有使用 RAID 阵列的经验,以及是否完成了 此 RAID 系列 的所有教程,一旦你在 Linux 中熟悉了 mdadm --manage 命令的使用,管理软件 RAID 将不是很复杂的任务。

在 Linux 中使用 mdadm 管理 RAID 设备 - 第9部分

在 Linux 中使用 mdadm 管理 RAID 设备 - 第9部分

在本教程中,我们会再介绍此工具提供的功能,这样当你需要它,就可以派上用场。

RAID 测试方案

在本系列的最后一篇文章中,我们将使用一个简单的 RAID 1(镜像)阵列,它由两个 8GB 的磁盘(/dev/sdb 和 /dev/sdc)和一个备用设备(/dev/sdd)来演示,但在此使用的方法也适用于其他类型的配置。也就是说,放心去用吧,把这个页面添加到浏览器的书签,然后让我们开始吧。

了解 mdadm 的选项和使用方法

幸运的是,mdadm 有一个内建的 --help 参数来对每个主要的选项提供说明文档。

因此,让我们开始输入:

# mdadm --manage --help

就会使我们看到 mdadm --manage 能够执行哪些任务:

Manage RAID with mdadm Tool

使用 mdadm 工具来管理 RAID

正如我们在上面的图片看到,管理一个 RAID 阵列可以在任意时间执行以下任务:

  • (重新)将设备添加到阵列中
  • 把设备标记为故障
  • 从阵列中删除故障设备
  • 使用备用设备更换故障设备
  • 先创建部分阵列
  • 停止阵列
  • 标记阵列为 ro(只读)或 rw(读写)

使用 mdadm 工具管理 RAID 设备

需要注意的是,如果用户忽略 --manage 选项,mdadm 默认使用管理模式。请记住这一点,以避免出现最坏的情况。

上图中的高亮文本显示了管理 RAID 的基本语法:

# mdadm --manage RAID options devices

让我们来演示几个例子。

​例1:为 RAID 阵列添加设备

你通常会添加新设备来更换故障的设备,或者使用空闲的分区以便在出现故障时能及时替换:

# mdadm --manage /dev/md0 --add /dev/sdd1

Add Device to Raid Array

添加设备到 Raid 阵列

​例2:把一个 RAID 设备标记为故障并从阵列中移除

在从逻辑阵列中删除该设备前,这是强制性的步骤,然后才能从机器中取出它 - 注意顺序(如果弄错了这些步骤,最终可能会造成实际设备的损害):

# mdadm --manage /dev/md0 --fail /dev/sdb1

请注意在前面的例子中,知道如何添加备用设备来自动更换出现故障的磁盘。在此之后,恢复和重建 raid 数据 就开始了:

Recover and Rebuild Raid Data

恢复和重建 raid 数据

一旦设备已被手动标记为故障,你就可以安全地从阵列中删除它:

# mdadm --manage /dev/md0 --remove /dev/sdb1

例3:重新添加设备,来替代阵列中已经移除的设备

到现在为止,我们有一个工作的 RAID 1 阵列,它包含了2个活动的设备:/dev/sdc1 和 /dev/sdd1。现在让我们试试重新添加 /dev/sdb1 到/dev/md0:

# mdadm --manage /dev/md0 --re-add /dev/sdb1

我们会碰到一个错误:

# mdadm: --re-add for /dev/sdb1 to /dev/md0 is not possible

因为阵列中的磁盘已经达到了最大的数量。因此,我们有两个选择:a)将 /dev/sdb1 添加为备用的,如例1;或 b)从阵列中删除 /dev/sdd1 然后重新添加 /dev/sdb1。

我们选择选项 b),先停止阵列然后重新启动:

# mdadm --stop /dev/md0
# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1

如果上面的命令不能成功添加 /dev/sdb1 到阵列中,使用例1中的命令来完成。

mdadm 能检测到新添加的设备并将其作为备用设备,当添加完成后它会开始重建数据,它也被认为是 RAID 中的活动设备:

Raid Rebuild Status

重建 Raid 的状态

例4:使用特定磁盘更换 RAID 设备

在阵列中使用备用磁盘更换磁盘很简单:

# mdadm --manage /dev/md0 --replace /dev/sdb1 --with /dev/sdd1

Replace Raid Device

更换 Raid 设备

这会导致 --replace 指定的设备被标记为故障,而 --with指定的设备添加到 RAID 中来替代它:

Check Raid Rebuild Status

检查 Raid 重建状态

​例5:标记 RAID 阵列为 ro 或 rw

创建阵列后,你必须在它上面创建一个文件系统并将其挂载到一个目录下才能使用它。你可能不知道,RAID 也可以被设置为 ro,使其只读;或者设置为 rw,就可以同时写入了。

要标记该设备为 ro,首先需要将其卸载:

# umount /mnt/raid1
# mdadm --manage /dev/md0 --readonly
# mount /mnt/raid1
# touch /mnt/raid1/test1

Set Permissions on Raid Array

在 RAID 阵列上设置权限

要配置阵列允许写入操作需要使用 --readwrite 选项。请注意,在设置 rw 标志前,你需要先卸载设备并停止它:

# umount /mnt/raid1
# mdadm --manage /dev/md0 --stop
# mdadm --assemble /dev/md0 /dev/sdc1 /dev/sdd1
# mdadm --manage /dev/md0 --readwrite
# touch /mnt/raid1/test2

Allow Read Write Permission on Raid

配置 Raid 允许读写操作

总结

在本系列中,我们已经解释了如何建立一个在企业环境中使用的软件 RAID 阵列。如果你按照这些文章所提供的例子进行配置,在 Linux 中你会充分领会到软件 RAID 的价值。

如果你碰巧任何问题或有建议,请随时使用下面的方式与我们联系。


via: http://www.tecmint.com/manage-software-raid-devices-in-linux-with-mdadm/

作者:GABRIEL CÁNEPA 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在阅读过 RAID 系列 前面的文章后你已经对 RAID 比较熟悉了。回顾前面几个软件 RAID 的配置,我们对每一个都做了详细的解释,使用哪一个取决与你的具体情况。

Recover Rebuild Failed Software RAID's

恢复并重建故障的软件 RAID - 第8部分

在本文中,我们将讨论当一个磁盘发生故障时如何重建软件 RAID 阵列并且不会丢失数据。为方便起见,我们仅考虑RAID 1 的配置 - 但其方法和概念适用于所有情况。

RAID 测试方案

在进一步讨论之前,请确保你已经配置好了 RAID 1 阵列,可以按照本系列第3部分提供的方法:在 Linux 中如何创建 RAID 1(镜像)

在目前的情况下,仅有的变化是:

  1. 使用不同版本 CentOS(v7),而不是前面文章中的(v6.5)。
  2. 磁盘容量发生改变, /dev/sdb 和 /dev/sdc(各8GB)。

此外,如果 SELinux 设置为 enforcing 模式,你需要将相应的标签添加到挂载 RAID 设备的目录中。否则,当你试图挂载时,你会碰到这样的警告信息:

SELinux RAID Mount Error

启用 SELinux 时 RAID 挂载错误

通过以下命令来解决:

# restorecon -R /mnt/raid1

配置 RAID 监控

存储设备损坏的原因很多(尽管固态硬盘大大减少了这种情况发生的可能性),但不管是什么原因,可以肯定问题随时可能发生,你需要准备好替换发生故障的部分,并确保数据的可用性和完整性。

首先建议是。虽然你可以查看 /proc/mdstat 来检查 RAID 的状态,但有一个更好的和节省时间的方法,使用监控 + 扫描模式运行 mdadm,它将警报通过电子邮件发送到一个预定义的收件人。

要这样设置,在 /etc/mdadm.conf 添加以下行:

MAILADDR user@<domain or localhost>

我自己的设置如下:

MAILADDR gacanepa@localhost

RAID Monitoring Email Alerts

监控 RAID 并使用电子邮件进行报警

要让 mdadm 运行在监控 + 扫描模式中,以 root 用户添加以下 crontab 条目:

@reboot /sbin/mdadm --monitor --scan --oneshot

默认情况下,mdadm 每隔60秒会检查 RAID 阵列,如果发现问题将发出警报。你可以通过添加 --delay 选项到crontab 条目上面,后面跟上秒数,来修改默认行为(例如,--delay 1800意味着30分钟)。

最后,确保你已经安装了一个邮件用户代理(MUA),如mutt 或 mailx。否则,你将不会收到任何警报。

在一分钟内,我们就会看到 mdadm 发送的警报。

模拟和更换发生故障的 RAID 存储设备

为了给 RAID 阵列中的存储设备模拟一个故障,我们将使用 --manage--set-faulty 选项,如下所示:

# mdadm --manage --set-faulty /dev/md0 /dev/sdc1  

这将导致 /dev/sdc1 被标记为 faulty,我们可以在 /proc/mdstat 看到:

Stimulate Issue with RAID Storage

在 RAID 存储设备上模拟问题

更重要的是,让我们看看是不是收到了同样的警报邮件:

Email Alert on Failed RAID Device

RAID 设备故障时发送邮件警报

在这种情况下,你需要从软件 RAID 阵列中删除该设备:

# mdadm /dev/md0 --remove /dev/sdc1

然后,你可以直接从机器中取出,并将其使用备用设备来取代(/dev/sdd 中类型为 fd 的分区是以前创建的):

# mdadm --manage /dev/md0 --add /dev/sdd1

幸运的是,该系统会使用我们刚才添加的磁盘自动重建阵列。我们可以通过标记 /dev/sdb1 为 faulty 来进行测试,从阵列中取出后,并确认 tecmint.txt 文件仍然在 /mnt/raid1 是可访问的:

# mdadm --detail /dev/md0
# mount | grep raid1
# ls -l /mnt/raid1 | grep tecmint
# cat /mnt/raid1/tecmint.txt

Confirm Rebuilding RAID Array

确认 RAID 重建

上面图片清楚的显示,添加 /dev/sdd1 到阵列中来替代 /dev/sdc1,数据的重建是系统自动完成的,不需要干预。

虽然要求不是很严格,有一个备用设备是个好主意,这样更换故障的设备就可以在瞬间完成了。要做到这一点,先让我们重新添加 /dev/sdb1 和 /dev/sdc1:

# mdadm --manage /dev/md0 --add /dev/sdb1
# mdadm --manage /dev/md0 --add /dev/sdc1

Replace Failed Raid Device

取代故障的 Raid 设备

从冗余丢失中恢复数据

如前所述,当一个磁盘发生故障时, mdadm 将自动重建数据。但是,如果阵列中的2个磁盘都故障时会发生什么?让我们来模拟这种情况,通过标记 /dev/sdb1 和 /dev/sdd1 为 faulty:

# umount /mnt/raid1
# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
# mdadm --stop /dev/md0
# mdadm --manage --set-faulty /dev/md0 /dev/sdd1

此时尝试以同样的方式重新创建阵列就(或使用 --assume-clean 选项)可能会导致数据丢失,因此不到万不得已不要使用。

让我们试着从 /dev/sdb1 恢复数据,例如,在一个类似的磁盘分区(/dev/sde1 - 注意,这需要你执行前在/dev/sde 上创建一个 fd 类型的分区)上使用 ddrescue

# ddrescue -r 2 /dev/sdb1 /dev/sde1

Recovering Raid Array

恢复 Raid 阵列

请注意,到现在为止,我们还没有触及 /dev/sdb 和 /dev/sdd,它们的分区是 RAID 阵列的一部分。

现在,让我们使用 /dev/sde1 和 /dev/sdf1 来重建阵列:

# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1

请注意,在真实的情况下,你需要使用与原来的阵列中相同的设备名称,即设备失效后替换的磁盘的名称应该是 /dev/sdb1 和 /dev/sdc1。

在本文中,我选择了使用额外的设备来重新创建全新的磁盘阵列,是为了避免与原来的故障磁盘混淆。

当被问及是否继续写入阵列时,键入 Y,然后按 Enter。阵列被启动,你也可以查看它的进展:

# watch -n 1 cat /proc/mdstat

当这个过程完成后,你就应该能够访问 RAID 的数据:

Confirm Raid Content

确认 Raid 数据

总结

在本文中,我们回顾了从 RAID 故障和冗余丢失中恢复数据。但是,你要记住,这种技术是一种存储解决方案,不能取代备份。

本文中介绍的方法适用于所有 RAID 中,其中的概念我将在本系列的最后一篇(RAID 管理)中涵盖它。

如果你对本文有任何疑问,随时给我们以评论的形式说明。我们期待倾听阁下的心声!


via: http://www.tecmint.com/recover-data-and-rebuild-failed-software-raid/

作者:Gabriel Cánepa 译者:strugglingyouth 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出