嘿嘿,
losetup在 Linux 中使用文件来模拟块设备相对容易:
如果我想根据我从中获取内容的多个文件对自己的块设备进行编程,任何人都可以给我一个提示,告诉我要寻找什么吗?为了您的理解,我想说从 file1 中取出字节 1-500 和 1.000-3.000,从 file2 中取出字节 501-999 和字节 3.001 到 5.000,将它们作为组合块设备提供。我最喜欢的编程语言是 Python,我希望尽可能在用户空间中编写程序。
对于Windows我找到了这样的实现。它称为 FileDisk 和 HttpDisk,可以在此处找到:
预先致谢并致以问候,雷纳
如果对故事不感兴趣,请跳过问题
在一个4磁盘raid 5阵列上不幸丢失了2个磁盘后,我进入了一些伏都教,尽可能多地收回数据.
第一个带有弱点迹象的驱动器被替换,并且在重建期间(约80%通过),第二个驱动器在一些死区域上失败.
长话短说,现在我有两个驱动器(2和4)处于一致状态.一(3)个同步,但中间有坏扇区.由于重建过程,最后一个(1)仅部分同步.对于总共4.1 Tb阵列,磁盘为1.5 Tb.
在234,124和1234配置上尝试了所有只读伏都教之后,我已经能够获得大部分重要数据.(4.1 Tb整体上只有100 Gb.)
现在下一步是尝试一些文件系统(reiserfs)重建,看看我是否能够获得更多数据.这些操作具有破坏性.我有三个工作磁盘设置在不同的状态尝试.
所以问题
有没有办法制作任何类型的md块设备的快照,并在不改变md设备的情况下处理这个问题?
一些要点:
无论性能如何,非常慢是可以接受的.
我在外部临时驱动器上有2*2 Tb的存储空间,可用于快照的"更改日志".
我没有足够的存储空间将整个设备(md)复制到另一个地方并用它制作一个lvm卷.(也不是分别为每个驱动器成像的空间)
无需及时可靠,快照将在数据恢复后删除(如果有).
嗯,我认为很清楚:我只需要读取只读md然后抛弃更改.
有任何想法吗?
谢谢!
我需要定期从我的Windows应用程序检查Intel控制器上RAID阵列的状态(或者通知状态更改).具体来说,我需要的是找出RAID 5阵列是否正常或其中一个磁盘丢失.
我尝试解析输出raidcfg32(可从英特尔网站获得,请参阅本自述文件),但它仅适用于我的应用程序需要监视的服务器之一.在其他服务器上raidcfg32报告"不支持的硬件"错误.我也尝试了CmdTool2,但它无法完全找到控制器.
英特尔提供的唯一剩余的RAID阵列监控选项是一系列GUI应用程序(英特尔矩阵存储管理控制台,英特尔快速存储技术).
有问题的控制器是:ESB2,631xESB/632xESB.
我相信我已经阅读了Stack Overflow上与我的问题相关的几个帖子,但没有一个包含答案.在回答问题' 我可以使用PS获取Raid磁盘状态吗?',例如,建议实际上允许检查控制器,而不是数组,是否健康(它始终是).
我在寻找的是一种自动访问状态信息的方式(从.NET应用程序来看,具体而言).任何选项都是好的,无论是通过WMI,.NET还是本机API,控制台输出解析等等.
我发现建议的监控RAID状态的方法是通过GUI应用程序让我感到困惑.在具有数十台服务器的企业部署中使用哪些方法来以编程方式执行此操作?
我有一个 btrfs 卷,它已经包含两个不同的设备,并且安装在 /samples 上。据报道,其总大小为 194GB df。
$ df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/sdc1 194G 165G 20G 90% /samples
Run Code Online (Sandbox Code Playgroud)
现在,我想从另一台设备向该卷添加另外 500GB。我做了
$ sudo mkfs.btrfs -m raid0 -d raid0 /dev/sdb
$ sudo btrfs device add /dev/sdb /samples
Run Code Online (Sandbox Code Playgroud)
我的文件系统现在正确报告:
$ sudo btrfs filesystem show
Label: none uuid: 545e95c6-d347-4a8c-8a49-38b9f9cb9add
Total devices 3 FS bytes used 161.98GB
devid 3 size 465.76GB used 0.00 path /dev/sdb
devid 2 size 93.13GB used 84.51GB path /dev/sdc1
devid 1 size 100.61GB used …Run Code Online (Sandbox Code Playgroud) 我最近有一块主板死了,并使用板载RAID控制器使用两个硬盘驱动器进行RAID 1。我想知道是否可以在非RAID设置中使用其中一个驱动器并正常访问它。
编辑:如果有帮助,它是一个Intel D975XBX2。
当我解释 RAID 5 时,我经常看到图片显示 4 个光盘,其中包含 3 个数据块和 1 个奇偶校验块。作为计算示例(有时在同一站点上),我总是只看到 3 张光盘。最有可能的是因为它更有意义:我可以对两个块进行异或并创建奇偶校验,因此需要三张光盘。在所有这些图片上,奇偶校验块具有与三个数据块相同的大小。
怎么会这样?当我有 4 个磁盘(因此需要构建奇偶校验的三个大小均匀的块)时,如何计算 RAID 5 奇偶校验?
(PS。即使将奇偶校验大小加倍(每个块两个块)也无助于理解这一点。因为这将是 RAID 6,不是吗?)
我正在编写我的亚马逊部署脚本,但我还没有设法自动化其中的步骤。
该步骤是设置 RAID(通过 mdadm),然后在新安装的目录上安装我的 db (mongo)。这是因为我必须等待 mdadm 在后台完成才能安装 mongo。我通过运行以下命令知道 mdadm 何时完成:
sudo mdadm --detail /dev/md0
Run Code Online (Sandbox Code Playgroud)
当 mdadm 仍在进行时,此命令将生成一个进度指示器,例如:
Rebuild Status : 2% complete
Run Code Online (Sandbox Code Playgroud)
mdadm 完成后,此状态将消失。
有没有人有一个干净的解决方案能够告诉 mdadm 何时完成,以便脚本可以完全独立运行,然后在 mdadm 完成后继续安装 mongo?
目前,我正在考虑使用 boto 在盒子上放置一个脚本,从 boto 运行脚本,并在脚本解析并读取 mdadm 完成后退出......
非常感谢你的帮助!
我正在编写一个安装阵列 raid5 的脚本。当脚本询问:是否要继续创建数组时,我在插入 auto=yes 时遇到问题。我尝试了 --auto=yes (http://www.linuxmanpages.com/man8/mdadm.8.php),但非常不确定将其放置在哪里。
#!/bin/bash
mdadm mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1
if [ $? -eq 0 ]; then
echo OK
else
echo FAIL
fi
Run Code Online (Sandbox Code Playgroud) raid ×8
linux ×3
amazon-ec2 ×1
bash ×1
block-device ×1
boto ×1
command ×1
deployment ×1
file ×1
filesystems ×1
hardware ×1
intel ×1
mdadm ×1
parity ×1
portability ×1
snapshot ×1
ubuntu-12.04 ×1
windows ×1