问题标签 [raid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
704 浏览

mysql - Optimal Mysql Config (Partiontion) & Indexes / Hypertable / RAID Config (Huge Database)

tl;rd:

  1. 使用主键进行数据库分区
  2. 索引大小问题。
  3. 数据库大小每天增长约 1-3 GB
  4. 突袭设置。
  5. 你有使用 Hypertable 的经验吗?

长版:

我刚建/买了一个家庭服务器:

  • 至强 E3-1245 3,4 HT
  • 32GB 内存
  • 6x 1.5 TB WD Cavier Black 7200

我将使用服务器主板 INTEL S1200BTL Raid(没有钱购买 RAID 控制器)。http://ark.intel.com/products/53557/Intel-Server-Board-S1200BTL

主板有 4x SATA 3GB/s 接口和 2x SATA 6GB/s

我还不确定我是否可以在 RAID 10 中设置所有 6 个硬盘,

如果不可能,我认为 4x hdds Raid 10 (MYSQL DB) & 2xhdds Raid 0 for (OS/Mysql Indexes)。

(如果raid 0中断,对我来说没问题,我只需要保护数据库)

关于数据库:

它是一个网络爬虫数据库,其中存储了域、url、链接和此类内容。所以我想我用每个表的主键对数据库进行分区,比如 (1-1000000) (1000001-2000000) 等等。

当我在数据库中搜索/插入/选择查询时,我需要扫描孔表,因为有些东西可能在第 1 行,而另一些在第 1000000000000 行。

如果我通过主键(auto_increment)进行这样的分区,这会使用我所有的 CPU 内核吗?以便它并行扫描每个分区?或者我应该坚持使用一个没有分区的巨大数据库。

数据库将非常大,现在在我的家庭系统上,

我看到我可以修复外部链接和链接索引,我只是添加了外部链接,因为我需要查询该字段并且我无法使用链接索引。你看到了吗,我可以在索引上调整什么?我的新系统将有 32 GB,但如果数据库以这种速度增长,我将在 FEW 周/月内使用 90% 的 RAM。

打包的索引有帮助吗?(性能如何下降?)

其他重要表小于 500MB。

当我提取了我需要的所有内容后,可以从此表中擦除数据。

你有使用Hypertables的经验吗?http://hypertable.org/ <= Google 的 Bigtables。如果我转向 Hypertables,这对我的性能有帮助吗(提取数据/搜索/插入/选择和数据库大小)。我在页面上阅读,但我仍然有些无能为力。因为你不能直接比较 MYSQL 和 Hypertables。我会尽快尝试,必须先阅读文档。

我需要一个适合我的设置的解决方案,因为我没有钱用于任何其他硬件设置。

感谢帮助。

0 投票
3 回答
1597 浏览

deployment - Boto - 如何在运行新命令之前等待后台进程(例如 mdadm)完成?

我正在编写我的亚马逊部署脚本,但我还没有设法自动化其中的一个步骤。

该步骤介于设置 RAID(通过 mdadm)然后在新的挂载目录上安装我的数据库(mongo)之间。这是因为在安装 mongo 之前,我必须在后台等待 mdadm 完成。我知道 mdadm 何时通过运行以下命令完成:

当 mdadm 仍在进行中时,此命令将生成进度指示器,例如:

当 mdadm 完成时,此状态将消失。

有没有人有一个干净的解决方案可以判断 mdadm 何时完成,以便脚本可以完全自行运行,然后在 mdadm 完成后继续安装 mongo?

目前,我正在考虑使用 boto 在盒子上放置各种脚本,从 boto 运行脚本,并在脚本解析并读取 mdadm 完成后退出...

非常感谢你的帮助!

0 投票
0 回答
2304 浏览

windows - 发送 IDENTIFY DEVICE COMMAND - ATA PASS THROUGH on raid - SSD

我的目标是在具有 raid 配置的系统中检测固态驱动器。使用 smartmontools 的以下命令,我观察到位 434 (217) 显示 SSD 的值 1: smartctl -i -r ataioctl,2 /dev/csmi0,0

尝试读取相同的 512 字节数据我尝试通过以下 2 种方式发送 IDENTIFY DEVICE 命令:

方法 1 失败,DeviceIoControl() 将 GetLastError() 设置为 87 (ERROR_INVALID_PARAMETER),你能帮我理解什么可能是错误的,我是否在正确的轨道上?

方法 2 有 info->IoctlHeader.ReturnCode = 3 这意味着 CSMI_SAS_STATUS_INVALID_PARAMETER。(提供的 CSMI 缓冲区太小)

///////// 方法一 /////////

//////// 方法二 //////////

0 投票
2 回答
10000 浏览

linux - MDADM 暂停 Raid 重新同步以启用位图

我有一个 3x3TB 的团队,它决定在我计划扩大团队的那一天开始重新同步。这是几天前的事情,重新同步尚未完成。它没有完成的原因是因为无论出于何种原因,机器硬停顿(完全无响应)似乎是随机的。因此,由于我找不到突然随机挂起的原因,我想至少给我的团队一个重建的机会。我已经读过,如果我启用位图,那么它可以在崩溃时恢复重新同步,而不是从 0% 开始。

我试过了:

这表示停止请求已在 /dev/md0 上排队,但它实际上从未停止。

接下来我尝试了这个:

该文件中的文本立即更改回“重新同步”。

问题:

我需要找到一种方法来发出这个命令:

但是当我发出这个命令时,raid 不能重新同步。

有没有办法在启动时启用位图?我是否可以启动一个 live linux 发行版并让 raid 从那里重新同步(如果硬冻结是我的 Ubuntu 安装)?

0 投票
4 回答
1136 浏览

multithreading - Powershell 同时唤醒多个媒体驱动器

我有一台带有很多媒体驱动器的服务器 ~43TB。一个 areca 1882ix-16 设置为在 30 分钟不活动后将驱​​动器降速,因为大多数日子甚至不使用单个驱动器。这可以很好地防止不必要的电力和热量。在这种情况下,驱动器仍会显示在 Windows 资源管理器中,但是当您单击访问它们时,文件夹列表需要大约 10 秒才能显示出来,因为它必须等待驱动器启动。

对于管理工作,我需要启动所有驱动器以便能够在它们之间进行搜索。在 Windows 资源管理器中单击每个驱动器,然后等待它启动后再单击下一个驱动器是非常乏味的。显然,多个资源管理器窗口使其速度更快,但仍然很乏味。我认为powershell脚本可以减轻痛苦。

所以我从以下开始:

这只是要求阵列中的每个驱动器都列出其根文件夹名称。这可以唤醒驱动器,但它又是一个线性函数。该脚本在打印前为每个驱动器暂停。寻找有关如何同时唤醒每个驱动器的解决方案。有没有办法多线程或其他?

0 投票
1 回答
962 浏览

fuse - 使用 RAID-0 和 FUSE 实现 RAID-i

假设我有 2 个磁盘设置使用 RAID-0(只是条带化)通过 RAID 控制器连接到 linux 机器。所以基本上我看到一个大分区。当我写一个包含两个块(A|B)的文件时,磁盘 1 将存储 A,磁盘 2 将存储 B。

现在,假设我想实现 RAID-1(镜像)以便在这两个磁盘上玩耍。我可以使用 FUSE 来执行此操作吗?我正在想象以下方式:假设我的 fuse 实现获得了要写入的三个块 (A|B) 的文件,我现在将改为写入 (A|A|B|B),这样 A 在磁盘 1 上被写入两次B 在磁盘 2 上被写入两次。

我想尝试一些纠删码和 RAID 方案,并且我想控制写入磁盘的内容。我不想修补软件 RAID,所以这看起来是一种更容易采用的方法。

这甚至会起作用吗,我应该对此有所了解吗?请注意,可以假设我会知道块大小,并且我会在适当的时候进行零填充。

0 投票
1 回答
2624 浏览

linux - 从 dd 映像设置 linux raid

您好,我有一个 terastation 死机(主板炸了)它需要 4 个 ide 驱动器,我只有带 2 个 ide 端口的计算机(1 个端口,我使用的是 2 个端口电缆)

我一次将这些驱动器连接成 2 个,并在一个更大的驱动器上创建了一个映像,所以现在我有 4 个驱动器的 dd 映像,我已将它们中的每一个安装为一个环回设备,并使用映射出的分区

然后我尝试通过这个命令创建 md0

哪个 /dev/md0 目前我们无法安装,但现在出现了,

我跑过的其他命令(信息越少越好)

任何帮助都会得到极大的帮助,我是一位经验丰富的 linux/unix 管理员,但是这次突袭正在踢我的尾巴,我敢肯定我错过了一些愚蠢的事情

0 投票
2 回答
5040 浏览

hadoop - hadoop中什么样的JBOD?和 COW 与 hadoop?

hadoop新手,只设置了3个debian服务器集群进行练习。

我正在研究 hadoop 的最佳实践并遇到:JBOD no RAID Filesystem: ext3, ext4, xfs - 你在 zfs 和 btrfs 中看到的那些花哨的 COW 东西都没有

所以我提出这些问题...


我在任何地方读到 JBOD 都比 hadoop 中的 RAID 好,最好的文件系统是 xfs 和 ext3 和 ext4。除了文件系统的东西,这完全有道理,为什么那些是最好的......你如何实现这个 JBOD?如果你自己进行谷歌搜索,你会看到我的困惑,JBOD 暗示了一个线性附件或只是一堆磁盘的组合,有点像逻辑卷,至少有些人是这样解释的,但 hadoop 似乎想要一个不结合的 JBOD。没有身体在上面展开……

  • 问题 1)hadoop 世界中的每个人都对 JBOD 意味着什么,你如何实现它?
  • 问题2)是否就像将每个磁盘安装到不同的目录一样简单?
  • 问题 3) 这是否意味着 hadoop 在 JBOD 上运行得最好,其中每个磁盘都简单地挂载到不同的目录?
  • 问题 4)然后您只需将 hadoop 指向那些 data.dirs 吗?

  • Question5) 我看到 JBODS 有两种方式,每个磁盘单独挂载,或者磁盘的线性连接,可以通过 mdadm --linear 模式完成,或者 lvm 我打赌也可以,所以我看不到大处理那个......如果是这种情况,可以使用 mdadm --linear 或 lvm 因为JBOD人们指的是磁盘的连接,那么这是“JBOD”或线性连接磁盘的最佳方式Hadoop?


这是题外话,但是有人可以验证这是否正确吗?使用cow,写时复制的文件系统,如zfs和btrfs只会减慢hadoop,但不仅cow实现对hadoop来说是浪费。

  • 问题 6) 为什么 COW 和 RAID 之类的东西在 hadoop 上是一种浪费?我认为好像您的系统崩溃了,并且您使用 if 来恢复它,当您恢复系统时,hdfs 已经发生了很多变化,它可能只会认为那台机器有故障,最好从头开始重新加入它(将它作为一个新的数据节点启动)......或者hadoop系统将如何看到旧的数据节点?我的猜测是它不会认为它是旧的或新的,甚至是数据节点,它只会将其视为垃圾...... Idk......

  • 问题 7)如果 hadoop 发现一个数据节点从集群中掉下来,然后数据节点又恢复在线,数据稍微旧一点,会发生什么?数据必须有多旧?这个题目怎么样?


重新提出问题 1 至 4

  • 我刚刚意识到我的问题很简单,但我很难解释它,我不得不把它分成 4 个问题,但我仍然没有从听起来很聪明的人那里得到我正在寻找的答案,所以我必须以不同的方式重新问..

  • 在纸上我可以很容易地或用图画...我会再次尝试用文字..

  • 如果对我在 JBOD 问题中所问的内容感到困惑......

  • ** 只是想知道大家在 hadoop 世界中一直提到的 JBOD 是什么 **

  • JBOD 与 hadoop 的定义不同,然后在正常世界中,我想知道如何实现 hadoop 的最佳方法是在 jbods 的 concat(sda+sdb+sdc+sdd) 上,或者只保留磁盘(sda,sdb,sdc ,sdd)

  • 我认为下面的图形表示解释了我最好的要求

(JBOD 方法 1)

  • 正常世界:jbod 是磁盘的串联 - 那么如果您要使用 hadoop,您会将 data.dir(其中 hdfs 虚拟站点)覆盖到此磁盘串联内的目录上,所有磁盘也将显示为 1.. . 所以如果你有 sda 和 sdb 和 sdc 作为你节点中的数据磁盘,你会让 em 显示为某个实体 1(使用主板的硬件或 mdadm 或 lvm),它是 sda 和 sdb 和 sdc 的线性连接. 然后,您可以将此 entity1 挂载到 Unix 命名空间中的文件夹,例如 /mnt/jbod/,然后设置 hadoop 以在其中运行。

  • 文本摘要:如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,那么这个 jbod 将是 600gb 大,并且来自这个节点的 hadoop 将获得 600gb 的容量

* TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD: * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * sda + sdb + sdc = jbod of name entity1 * JBOD MADE ANYWAY - WHO CARES - THATS NOT MY QUESTION: maybe we made the jbod of entity1 with lvm, or mdadm using linear concat, or hardware jbod drivers which combine disks and show them to the operating system as entity1, it doesn't matter, either way its still a jbod * This is the type of JBOD I am used to and I keep coming across when I google search JBOD * cat /proc/partitions would show sda,sdb,sdc and entity1 OR if we used hardware jbod maybe sda and sdb and sdc would not show and only entity1 would show, again who cares how it shows * mount entity1 to /mnt/entity1 * running "df" would show that entity1 is 100+200+300=600gb big * we then setup hadoop to run its datanodes on /mnt/entity1 so that datadir property points at /mnt/entity1 and the cluster just gained 600gb of capacity

..另一个观点是这个..

(JBOD 方法 2)

  • 在 hadoop 中,在我看来,他们希望每个磁盘都是分开的。因此,我会将 unix 命名空间中的磁盘 sda 和 sdb 和 sdc 挂载到 /mnt/a 和 /mnt/b 和 /mnt/c ......从网上阅读看来,许多 hadoop 专家将 jbods 归类为只是一个一堆磁盘,所以对于 unix,它们看起来像磁盘而不是磁盘的连接......然后当然我可以结合逻辑卷管理器(lvm)或 mdadm(以突袭或线性方式)成为一个实体, jbod 首选线性)......但是......不,我们不要将它们组合起来,因为在 hadoop 世界中,jbod 似乎只是它们自己坐在一堆磁盘......

  • 如果磁盘 1 和磁盘 2 和磁盘 3 分别为 100gb 和 200gb 和 300gb,则每个挂载 disk1->/mnt/a 和 disk2->/mnt/b 和 disk3->/mnt/c 将分别为 100gb 和 200gb 并且分别为 300gb 大,来自该节点的 hadoop 将获得 600gb 容量

TEXTO-GRAPHICAL OF LINEAR CONCAT OF DISKS BEING A JBOD * disk1 2 and 3 used for datanode for hadoop * disk1 is sda 100gb * disk2 is sdb 200gb * disk3 is sdc 300gb * WE DO NOT COMBINE THEM TO APPEAR AS ONE * sda mounted to /mnt/a * sdb mounted to /mnt/b * sdc mounted to /mnt/c * running a "df" would show that sda and sdb and sdc have the following sizes: 100,200,300 gb respectively * we then setup hadoop via its config files to lay its hdfs on this node on the following "datadirs": /mnt/a and /mnt/b and /mnt/c.. gaining 100gb to the cluster from a, 200gb from b and 300gb from c... for a total gain of 600gb from this node... nobody using the cluster would tell the difference..

问题摘要

** 大家指的哪种方法是hadoop这种组合jbod磁盘分离的最佳实践- 根据在线文档,这仍然是一个jbod?**

  • 这两种情况都会获得hadoop 600gb ...它只是1。看起来像一个concat或一个实体,它是所有磁盘的组合,我一直认为这是一个jbod ...或者它就像每个磁盘的2在系统被挂载到不同的目录时,最终结果与hadoop容量方面的结果都是一样的......只是想知道这是否是提高性能的最佳方式
0 投票
1 回答
1822 浏览

linux - Iostat 是否显示 linux md raid 的正确输出

我正在尝试更多地了解我的服务器的 iostat 输出,我需要帮助。我想看看我是否有瓶颈。

有一个 RAID-1 (md3) 的这两个磁盘(xvdn 和 xvdo)。我不同意这个输出。两个磁盘如何有一些“等待”而 md3 没有?我可以使用 iostat 来监控 RAID 阵列吗?

Raid 阵列是使用 Linux 的 MD 命令制作的。磁盘是ECS的EBS。没有 POISP。该发行版是 Oracle Linux 6.1。

和其他例子

0 投票
1 回答
11459 浏览

linux - 向 btrfs 卷添加新设备,但可用大小几乎没有增长

我有一个 btrfs 卷,它已经由两个不同的设备组成,并且安装在 /samples 上。据报道,其总大小为 194GB df

现在,我想从另一台设备向该卷添加另外 500GB。我做了

我的文件系统现在正确报告:

但是当我这样做时,我会错过一些空间:

我加了500GB!为什么我没有更多可用的?

为了调试,我运行了这个命令:

我的数据在 RAID0 中,没关系。那么我的 500GB 去了哪里,我该如何解决这个问题?

谢谢