我遇到了大多数人遇到的相同问题:如何创建可靠的个人存储解决方案,因为:
因此,在将我的头撞到这个问题上几天之后(并且在我的脑后多年),我提出了以下解决方案。我将描述一个基于本地 linux ZFS 测试过的解决方案,它在 Ubuntu PPA 中可用,但 LVM、MD 和 btrfs 可用于实现相同的目标。为此,我将使用 RAID1(ZFS 镜像 vdevs)。
例如,考虑一组新的 2TB 驱动器、一个旧的 750GB 驱动器、2 个旧的 400GB 驱动器和一个旧的 500GB 驱动器。最佳镜像分区有 2TB 的可用空间,如下图所示,其中“:”分隔分区,“|”分隔 分离磁盘:
+------------------------------------------------------------------+
| 2TB (sda1) : (sda2) : (sda3) : (sda4) |
+------------------------------------------------------------------+--+
| 750 GB (sdb) | 400 GB (sdc) | 400 GB (sdd) | 500 GB (sde1) :XX|
+---------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
创建您的 zpool 作为
zpool create archive mirror /dev/sda1 …Run Code Online (Sandbox Code Playgroud) 我正在使用 mdadm 将一些 RAID5 磁盘重新创建为 RAID6。我关心的驱动器上没有数据。
设置 RAID 需要一段时间来设置形状 - 我接受当有数据需要条带化并计算奇偶校验时,但是对于这些驱动器,它们是空的 - 或者至少我希望它们被视为空。
那么有没有一种方法可以跳过奇偶校验计算并告诉 mdadm 只设置超级块并完成,否则,当没有数据可以移动时,它到底花费了这么多时间吗?
md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
[>....................] resync = 1.3% (6790144/488278528) finish=409.3min speed=19604K/sec
Run Code Online (Sandbox Code Playgroud)
请注意,我不是在谈论--assume-clean从包含您知道正确的 RAID 阵列的预先存在的一组磁盘重建阵列的位置。我说的是一个应该被认为是空的数组,而不是被认为是正确的条带化。
因此,为了这个问题,让我们说设备已经预先填充了零。
这听起来可能很愚蠢,但是有没有办法有意降低 Linux 软件 RAID 中的重建速度?(基本上减少所有磁盘的吞吐量,使其不会最大化。)
RAID 本身只是一堆驱动器,通过外部 SATA 连接到运行软件 RAID 的 Slackware 13.37 机器(一切由 控制mdadm)。驱动器不是最高质量的(它是一个预算家庭系统),我只是希望我不会过度推动它们,让我高枕无忧。
也许有一种方法可以暂停和取消暂停重建,我可以编写脚本不时发生这种情况?
好吧,这个故事比标题暗示的要多一些。
背景和环境:我正在通过 SMB 从较旧的 Ubuntu 服务器复制几个 TB 到较新的 Windows 2012 服务器。(从技术上讲,它是商品硬件,但它们是这里的服务器。)每个人都在千兆局域网上,而较旧的 Ubuntu 机器有一个绑定接口。我相信 Ubuntu 服务器有两个 Rosewill PCI-e 1x 以太网卡,Windows 服务器有一个相当不错的 PCI Intel 以太网卡。
目标计算机(Windows 服务器)正在运行具有超过 4 个 2TB 驱动器的奇偶校验的存储池。它正在运行微软的新 ReFS。源计算机(Ubuntu 服务器)正在运行软件 RAID 镜像。它运行良好 ol' EXT4。
两台服务器通过一个千兆交换机运行。我已经尝试在没有任何改进的情况下打破源 (Ubuntu) 计算机上的绑定。
问题:我可以以合理的速度从其他计算机传输到 Windows 服务器。其他计算机可以毫不费力地保持 50-80MB/s,但从该 Ubuntu 服务器传输最高不超过 20MB/s。20MB/s 的 4+TB 需要很长时间(大约 2.3 天),我想知道我能做些什么来找出瓶颈所在。
症状:两台计算机上的 CPU 都很小,当然也不会太忙。两台计算机上的硬盘驱动器都处于活动状态但没有被淹没,至少在 Ubuntu 服务器上,CPU IOwait 几乎为 0%。
我做了 35 秒的 Wireshark 跟踪(大概足够长以确保所有 ACK 都是针对新数据包的),并注意到有很多我没想到的事情。(1) 从 Windows 到 Ubuntu 的 ACK(和一些 SMB 数据包)没有任何校验和。但是,Wireshark 声称这可能是由于“IP 校验和卸载”所致。好的,我有一张非常漂亮的卡片。我想网卡有可能进行校验和计算。美好的。继续......(2)“TCP ACKed unseen …
就像标题所说的那样,指定正在使用哪些磁盘、什么顺序等的实际信息在哪里?
我在安装 linux 发行版时注意到它正在检测没有 RAID 控制器的 RAID 阵列,这必须表明信息不在操作系统的某个文件中,而是在磁盘的某个地方。我对吗?
另外,第二个问题:如果我使用 2 个磁盘创建软件 RAID0,将该新设备格式化为 ext2,然后获取磁盘并将它们放在不同的盒子中,第二个盒子是否能够看到由 2 个磁盘创建的设备作为 RAID 阵列(md0 或其他东西)并且能够安装它?
我正在构建一个新服务器 (Small Business Server 2008),但我无法让内置 RAID 控制器 (AMD SB700) 工作,并且基本上已经放弃使用 Server 2008。很好。
但我的问题是...... RAID 1 的硬件(例如这个)和软件(Window 的内置驱动器镜像)之间有什么真正的区别吗?
假设驱动器是相同的型号等,仅基于我的猜测/一厢情愿,似乎差异可以忽略不计。
我刚刚在我的家庭服务器上安装了两个磁盘。我正在尝试格式化然后突袭它们,但我遇到了一个问题,即数小时的谷歌搜索没有解决这个问题。
我得到的错误是:
# mkfs.ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006)
/dev/sdb1 is apparently in use by the system; will not make a filesystem here!
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 4.0G 1.9G 2.0G 49% /
none 380M 0 380M 0% /dev/shm
/opt/xensource/packages/iso/XenCenter.iso
51M 51M 0 100% /var/xen/xc-install
# mount -t ext3 /dev/sdb1 /mnt/b
mount: /dev/sdb1 already mounted or /mnt/b busy
Run Code Online (Sandbox Code Playgroud)
我是新手,这让我很受打击。如果我没有先做研究,我不会问。谢谢。
# mount
/dev/sda1 on / type ext3 (rw)
none on /proc type proc (rw)
none on …Run Code Online (Sandbox Code Playgroud) 我在 SATA SSD 上出售我的下一台 PC,但由于它们的价格与其尺寸不成比例地增长,我想知道对它们(操作系统和程序)来说最好的配置是什么:
操作系统将是 x64 Windows 7(和/或 Ubuntu)。较大的媒体文件(如音频/视频)在未处理时将位于不同的驱动器上。
我计划将新 PC 用于:游戏、转码高清视频 (m2ts)、Web 开发、看电影。
我的 Ubuntu 系统(10.04 LTS、2.6.32-24-server 以防万一)上的 RAID1 软件 raid 分区遇到以下问题。
我的一个磁盘 (sdb5) 报告了 I/O 错误,因此在阵列中被标记为故障。该阵列随后被一个有源器件降级。因此,我更换了硬盘,克隆了分区表并将所有新分区添加到我的 raid 阵列中。同步所有分区后,结果很好,有 2 个活动设备 - 除了其中一个。然而,之前报告故障磁盘的分区没有将新分区作为活动设备,而是作为备用磁盘:
md3 : active raid1 sdb5[2] sda5[1]
4881344 blocks [2/1] [_U]
Run Code Online (Sandbox Code Playgroud)
详细的外观显示:
root@server:~# mdadm --detail /dev/md3
[...]
Number Major Minor RaidDevice State
2 8 21 0 spare rebuilding /dev/sdb5
1 8 5 1 active sync /dev/sda5
Run Code Online (Sandbox Code Playgroud)
那么问题来了:我如何告诉我的raid 将备用磁盘变成活动磁盘?为什么将其添加为备用设备?重新创建或重新组装阵列不是一种选择,因为它是我的根分区。而且我在 Software Raid HOWTO 中找不到有关该主题的任何提示。
任何帮助,将不胜感激。
当前解决方案
我找到了解决问题的方法,但我不确定这是否是解决问题的实际方法。仔细查看我的突袭,我发现 sdb5 始终被列为备用设备:
mdadm --examine /dev/sdb5
[...]
Number Major Minor RaidDevice State
this 2 8 21 2 …Run Code Online (Sandbox Code Playgroud) 我可以使用/dev/sda和/dev/sdb用于我的 RADI1 配置吗?
还是我首先必须用一个 Linux raid 分区对两者进行分区?