是否可以在文件上创建 RAID 阵列用于测试目的?
假设我想创建一个 1 级 RAID,但我没有例如 10 个块设备来执行此操作,而是想使用文件而不是块设备来模拟它。
到目前为止我所做的是:
fallocate -l 1M disk1
fallocate -l 1M disk2
mkfs.ext4 disk1
mkfs.ext4 disk2
sudo mdadm --create --assume-clean --level=1 --raid-devices=2 /dev/md0 ./disk1 ./disk2
但之后我收到错误:
mdadm: ./disk1 is not a block device.
任何想法?
答案1
您正在寻找的称为循环设备。它使文件显示为设备等/dev/loop0
。然后它们可以作为文件系统安装,并且应该与 md 一起使用。从手册页loop(4)
:
循环设备是一种块设备,它不会将其数据块映射到硬盘或光盘驱动器等物理设备,而是映射到文件系统中常规文件的块或另一个块设备。
参见例如
- https://man7.org/linux/man-pages/man4/loop.4.html
- https://man7.org/linux/man-pages/man8/losetup.8.html
对于测试需要块设备的东西,LVM 也可能很有用。它允许您从单个物理分区创建多个逻辑卷(或相反),并且销毁/重新创建/调整卷大小也比磁盘分区简单得多。
答案2
你能行的。只需从文件创建一个循环设备并使用该设备来创建数组:
$ dd if=/dev/zero of=mydev count=80 bs=1M
$ sudo losetup -f mydev
您将准备好一个 80M 设备,并且可以在任何需要使用块设备的环境中使用它。
$ sudo losetup -l
会告诉你当前的映射。