独立磁盘冗余阵列(RAID)技术是一种存储解决方案,它将多个硬盘组合成一个逻辑单元,以提供数据冗余和/或提高磁盘读/写操作的性能。然而,实际的容错能力和磁盘I/O性能取决于硬盘如何设置形成磁盘阵列。根据可用设备和容错/性能需求,定义了不同的RAID级别。
在本文中,小编主要介绍如何通过如mdadm命令将分区组装为RAID设备并创建系统备份,从而更好地管理你的Linux磁盘空间,下面一起来看看吧。
在Linux中安装mdadm
选择用于创建、组装、管理和监控软件RAID的工具称为mdadm(多磁盘管理的缩写),可以通过以下命令进行安装:
$ sudo apt install mdadm [Debian、Ubuntu和Mint上] $ sudo yum install mdadm [RHEL/CentOS/Fedora和Rocky/AlmaLinux] $ sudo zypper install mdadm [OpenSUSE]
将分区组装为RAID设备
将现有分区组装为RAID设备的过程包括以下步骤。
1、使用mdadm创建一个新数组
如果其中一个分区之前已被格式化或者之前已成为另一个RAID阵列的一部分,系统将提示你确认创建新阵列。假设你已采取必要的预防措施以避免丢失其中可能存在的重要数据,则可以安全地键入y并按Enter:
# mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1
2、检查阵列创建状态
为了检查阵列创建状态,将使用以下命令。当然,无论RAID类型如何,这些与我们创建RAID0(如上所示)或设置RAID5时(如下图所示)一样有效。
# cat /proc/mdstat 或 # mdadm --detail /dev/md0 [此命令更加详细]
3、格式化RAID设备
根据你的需要/要求使用文件系统格式化设备,具体可以参考本文中的内容:Linux系统对存储设备进行分区的两种方法
4、监控RAID阵列服务
这里要仔细看好,将mdadm --detail --scan
输出添加到/etc/mdadm/mdadm.conf(Debian及其衍生版本)或/etc/mdadm.conf (CentOS / openSUSE),具体如下所示:
# mdadm --detail --scan
# mdadm --assemble --scan [组装数组]
要确保服务在系统启动时启动,请以root身份运行以下命令:
# systemctl start mdmonitor # systemctl enable mdmonitor
5、检查RAID磁盘故障
在支持冗余的RAID级别中,需要时更换故障驱动器。当磁盘阵列中的某个设备出现故障时,仅当我们首次创建阵列时添加了备用设备时,才会自动开始重建:
否则,需要手动将额外的物理驱动器连接到我们的系统并运行它。
# mdadm /dev/md0 --add /dev/sdX1
其中/dev/md0是遇到问题的阵列,/dev/sdX1是新设备。
6、拆卸工作阵列
如果需要使用设备创建新阵列,可能必须执行此操作(可选步骤):
# mdadm --stop /dev/md0 #停止阵列 # mdadm --remove /dev/md0 #删除RAID设备 # mdadm --zero-superblock /dev/sdX1 #用zero覆盖现有的md超级块
7、创建邮件警报
你可以配置有效的电子邮件地址或系统帐户来发送警报,确保mdadm.conf中有此行(可选步骤):
MAILADDR root
在这种情况下,RAID监控守护程序收集的所有警报都将发送到本地root帐户的邮箱。其中一个警报如下所示。
注意:此事件与步骤五中的示例相关,其中设备被标记为有故障,并且备用设备由mdadm自动构建到阵列中。因此,我们“用完”了健康的备用设备并收到了警报。
了解Linux 中的 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 ) 倍。( n-1 ) 中“lost”的空间用于奇偶校验(冗余)计算(将需要至少三个驱动器)。
请注意,当出现问题时,可以指定备用设备(在本例中为/dev/sde1 )来替换故障部件。运行以下命令,使用分区/dev/sdb1、/dev/sdc1、/dev/sdd1和/dev/sde1作为备用分区组装RAID 5阵列。
# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --spare-devices=1 /dev/sde1
常见用途:Web和文件服务器。
RAID 6(又称双奇偶校验驱动器)
阵列总大小将为 ( n*s)-2*s,其中n是阵列中独立磁盘的数量,s是最小磁盘的大小。请注意,当出现问题时,可以指定备用设备(在本例中为/dev/sdf1 )来替换故障部件。运行以下命令,使用分区/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1和/dev/sdf1作为备用分区组装RAID 6阵列。
# 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的公式计算的。首先,计算每个镜子的尺寸,然后计算条带的尺寸。
请注意,当出现问题时,可以指定备用设备(在本例中为/dev/sdf1 )来替换故障部件。运行以下命令,使用分区/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1和/dev/sdf1作为备用分区组装RAID 1+0阵列。
# mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sd[be]1 --spare-devices=1 /dev/sdf1
常见用途:需要快速 I/O 操作的数据库和应用程序服务器。
在Linux中创建和管理系统备份
记住RAID及其所有好处很有必要,但尽管如此,备份还是必须要做的事情。这一点永远不会有什么坏处!在开始之前,必须注意,系统备份没有一刀切的解决方案,但在规划备份策略时需要考虑以下一些事项。
- 你的系统用来做什么?(桌面还是服务器?如果后一种情况适用,最关键的服务是什么——失去其配置将是非常不划算的)。
- 需要多久备份一次系统?
- 要备份的数据(例如文件/目录/数据库转储)是什么?可能还需要考虑是否确实需要备份大文件(例如音频或视频文件)。
- 这些备份将存储在哪里(指物理位置和介质)?
1、使用dd命令备份驱动器
使用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=/dev/sda
2、使用tar命令备份文件
使用tar命令备份某些文件/
目录,已在文章中介绍。如果需要保留特定文件和目录(配置文件、用户主目录等)的副本,可以考虑使用此方法。
3、使用rsync命令备份和同步文件
使用rsync命令同步文件,这是一个多功能的远程(和本地)文件复制工具。如果需要将文件备份到网络驱动器或从网络驱动器同步文件,rsync是一个不错的选择。无论是同步两个本地目录还是本地文件系统上挂载的本地< --- >
远程目录,基本语法都是相同的。
同步两个本地目录
# rsync -av source_directory destination directory
其中,-a
递归到子目录(如果存在),保留符号链接、时间戳、权限和原始所有者/组和-v verbose。
此外,如果想提高有线数据传输的安全性,可以使用ssh over rsync。
通过SSH同步本地 → 远程目录
# rsync -avzhe ssh backups root@remote_host:/remote_directory/
此示例将本地主机上的备份目录与远程主机上的/root/remote_directory的内容同步。其中该-h
选项以人类可读的格式显示文件大小,并且-e
标志用于指示SSH连接。
通过SSH同步远程 → 本地目录
在这种情况下,请切换上一示例中的源目录和目标目录,命令如下:
# rsync -avzhe ssh root@remote_host:/remote_directory/ backups
请注意,这些只是rsync使用的3个示例(也就是你可能遇到的最常见情况)。有关rsync命令的更多示例和用法,请参阅相关帮助文档。
概括
作为系统管理员,你需要确保Linux系统尽可能良好地运行。如果你做好了充分准备,并且RAID和常规系统备份等存储技术能够很好地支持数据的完整性,那么无疑将是安全的。