我目前正在使用mdadm实用程序在 Linux 下构建软件 RAID ,我已经阅读了一些文章,这些文章描述了如何增加该 RAID 的 stripe_cache_size 值以及如何计算合适的 stripe_cache_size 值。
我已将我的速度提高到 16384,我当前在 /proc/mdstat 中的新 RAID5 上的同步速率已从 71065K/秒跃升至 143690K/秒(翻倍!),这是个好消息。我还看到 RAM 使用量的匹配和预期增加,但是我找不到任何关于此设置的作用及其工作原理的文档。
它似乎是存在于 RAM 中的 RAID 的某种缓存。这就是我从它的名字和改变它所看到的效果所能知道的。是否有任何关于此设置及其描述的官方“Linux”文档?
安装时:
sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual
Run Code Online (Sandbox Code Playgroud)
我正进入(状态:
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
Run Code Online (Sandbox Code Playgroud)
我发现其他人也有类似的问题:apt-get update mdadm 可怕的警告
所以我按照说明操作:
/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
Run Code Online (Sandbox Code Playgroud)
然后:
update-initramfs -u
Run Code Online (Sandbox Code Playgroud)
但输出是:
update-initramfs: Generating /boot/initrd.img-4.10.0-30-generic
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
Run Code Online (Sandbox Code Playgroud)
lsb_release -a
LSB Version: core-9.20160110ubuntu5-amd64:core-9.20160110ubuntu5-noarch:security-9.20160110ubuntu5-amd64:security-9.20160110ubuntu5-noarch
Distributor ID: Ubuntu
Description: Ubuntu 17.04
Release: 17.04
Codename: zesty
Run Code Online (Sandbox Code Playgroud)
vim /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# …Run Code Online (Sandbox Code Playgroud) 关于对齐 4k 扇区磁盘的 Serverfault 有很多问题,但有一件事对我来说还不是很清楚。
我成功地对齐了我的 RAID1+LVM。我所做的其中一件事是使用 mdadm superblock 1.0 版(将超级块存储在磁盘的末尾)。
手册页是这样说的:
不同的子版本将超级块存储在设备的不同位置,要么在末尾(对于 1.0),要么在开头(对于 1.1),要么从开头开始 4K(对于 1.2)。“1”相当于“1.0”。“默认”相当于“1.2”。
默认的 1.2 版本是为 4k 扇区驱动器制作的吗?在我看来,事实并非如此,因为从一开始的 4k + 超级块的长度并不是 4k 的众多(如果我没记错的话,超级块大约有 200 字节长)。
欢迎对此有任何见解。
编辑:
下面的回答是 mdadm superblock 1.1 和 1.2 用于 4k 对齐。我刚刚创建了一个全设备突袭:
mdadm --create /dev/md4 -l 1 -n 2 /dev/sdb /dev/sdd
Run Code Online (Sandbox Code Playgroud)
然后我给它添加了一个逻辑卷:
vgcreate universe2 /dev/md4
Run Code Online (Sandbox Code Playgroud)
阵列以 16 MB/s 的速度同步:
md4 : active raid1 sdd[1] sdb[0]
1465137424 blocks super 1.2 [2/2] [UU]
[>....................] resync = 0.8% (13100352/1465137424) finish=1471.6min speed=16443K/sec
Run Code Online (Sandbox Code Playgroud)
所以我怀疑它是否正确对齐。
(磁盘为 1.5 TB …
我最近在文件服务器中的 5 驱动器 RAID 上开始恢复,它说需要 691 分钟以上才能完成。我想知道如果机器断电 - 比如说停电,这个过程会发生什么?我是否需要再次重新启动恢复过程?我会丢失整个 RAID 数据吗?
另外,如果我在扩充 RAID 的过程中断电了会发生什么?
基本工作系统详细信息:
我使用 Ubuntu 12.04 服务器 CD 安装服务器。
我有 4 个磁盘。在所有磁盘上,我执行了以下操作,类似于此操作方法:
我将引导格式化为 ext3。我在根分区和大分区上设置了 RAID10。我将根目录格式化为 ext4。我在大卷上创建了一个逻辑卷,并将其格式化为 ext4。
生成的系统运行良好,启动正常。
问题详情:
然后我决定记录一个失败的过程。作为第一步,我决定重新安装 grub。
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use …Run Code Online (Sandbox Code Playgroud) 我在从单个磁盘转到 raid 10 时遇到问题
发出的命令是:
mdadm --create /dev/md0 --level=10 --raid-devices=8 /dev/sd[abcdefgh]1
Run Code Online (Sandbox Code Playgroud)
输出是:
mdadm mdadm: cannot open /dev/sda1: Device or resource busy
Run Code Online (Sandbox Code Playgroud)
我已经证实这与 DM 无关:
]# dmsetup status
No devices found
Run Code Online (Sandbox Code Playgroud)
文件系统是 GPT,我使用 sgdisk --backup=table /dev/sda 之后通过 sgdisk --load-backup=table /dev/sdb 到 sdh 复制分区表
该表看起来像:
Number Start End Size File system Name Flags
1 1049kB 525MB 524MB ext3 boot
2 525MB 86.4GB 85.9GB ext4
3 86.4GB 90.7GB 4295MB linux-swap(v1)
4 90.7GB 1000GB 909GB
Run Code Online (Sandbox Code Playgroud)
我已经很好地创建了其他阵列,但是我无法为第一个和第二个分区创建突袭。
当前状态:
]# cat /proc/mdstat
Personalities : [raid10]
md3 …Run Code Online (Sandbox Code Playgroud) 鉴于 RAID1 写入数据的两个副本,我的理解是读取应该接近单个磁盘的两倍。
我测试了不同技术(mdadm、zfs、btrfs)的读取性能,但收效甚微。
根据我的经验:
我已经使用 dd、iotop 和 iostat 验证了结果。
如何同时读取两个磁盘上的数据才能达到单个磁盘两倍的读取性能?
在我的本地文件服务器上,我在 7x HDD 驱动器上安装了 raid-6。
dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync
Run Code Online (Sandbox Code Playgroud)
本地速度测试给了我 349 MB/s 的写入速度。
从 SSD 远程写入 Samba(> 2Gb/s 读取速度)给了我 259 MB/s 的写入速度。但是远程写入 iSCSI 驱动器(在 Win10 iSCSI 启动器上)仅提供 151 Mb/s 的写入速度。
raid6 配置 - 128K 块大小,stripe_cache_size = 8191。写入意图位图在 SSD 上(三星 860 PRO,4096K 位图块)。
使用选项安装的阵列: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback
open-iscsi 设置:目标基于 4Tb 文件。
任何提示为什么 iSCSI 在写入时比 Samba 慢?关于如何提高 iSCSI 写入速度的任何提示?
我认为这与 open-iscsi 在每次操作后刷新写入磁盘的愿望有关,由于过多的奇偶校验重写,这增加了 raid6 上的写入放大。但我不知道如何解决它。在断电的情况下,速度比当前写入数据的安全更重要。
作为旁注,较旧的 ietd iSCSI 目标能够启用回写模式(使用 IOMode=wb),并且持续写入速度要快得多。不幸的是,它目前似乎没有维护。
我有一个使用 md 的 linux 软件 RAID。我想列出我所有的 RAID 阵列和连接到它们的每个硬盘驱动器。有没有简单的方法来做到这一点?
我今天早上刚检查了我的 RAID 阵列,我得到的是:
$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md1 : active raid1 sdc7[0]
238340224 blocks [2/1] [U_]
md0 : active raid1 sdc6[0]
244139648 blocks [2/1] [U_]
md127 : active raid1 sdc3[0]
390628416 blocks [2/1] [U_]
unused devices: <none>
$
Run Code Online (Sandbox Code Playgroud)
我相信这意味着我的阵列的一个磁盘已经死了,这是真的吗?
我如何进行正确的故障排除?我的/etc/mdadm/mdadm.conf样子:
$ cat /etc/mdadm/mdadm.conf
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# containers …Run Code Online (Sandbox Code Playgroud)