lvm的raid是基于linux md raid。
如果你拿几个空白盘新建一个raid5或raid6.
Linux md raid的文档中写:raid 6可以skip initial sync, raid 5不能。
到了LVM这边,成了反过来:raid 5可以skip initial sync, raid 6不能。而且文档还写的有模有样头头是道。不信你去看看,写的特别有道理。
实际我测了一下:
1. 先组一个raid 5
2. 然后写入一个文件,并计算md5。把md5结果存在额外别的硬盘上。
3. 然后拔掉一个盘,重启。尝试读取原来的文件,并计算md5,没有问题。
然后,高潮来了。当我把丢失的盘加回来之后,数据全没了。
dmesg显示:
[ 84.372238] EXT4-fs (dm-12): mounted filesystem with ordered data mode. Opts: (null). Quota mode: none.
[ 88.627275] EXT4-fs error (device dm-12): ext4_validate_block_bitmap:390: comm rm: bg 37: bad block bitmap checksum
[ 88.629128] EXT4-fs error (device dm-12) in ext4_free_blocks:6109: Filesystem failed CRC
[ 89.149337] EXT4-fs error (device dm-12): ext4_validate_block_bitmap:390: comm rm: bg 36: bad block bitmap checksum
[ 89.151233] EXT4-fs error (device dm-12) in ext4_free_blocks:6109: Filesystem failed CRC
[ 89.713979] EXT4-fs error (device dm-12): ext4_validate_block_bitmap:390: comm rm: bg 35: bad block bitmap checksum
[ 89.715873] EXT4-fs error (device dm-12) in ext4_free_blocks:6109: Filesystem failed CRC
[ 90.226810] EXT4-fs error (device dm-12): ext4_validate_block_bitmap:390: comm rm: bg 34: bad block bitmap checksum
[ 90.228705] EXT4-fs error (device dm-12) in ext4_free_blocks:6109: Filesystem failed CRC
[ 90.733677] EXT4-fs error (device dm-12): ext4_validate_block_bitmap:390: comm rm: bg 33: bad block bitmap checksum
[ 90.735654] EXT4-fs error (device dm-12) in ext4_free_blocks:6109: Filesystem failed CRC
我猜测可能是它用错误的parity bit去做恢复了。
至于为什么我要skip initial sync: 我6个8TB的硬盘你猜它要花多久sync? 20天! 我吃了饭回来,一个小时sync了0.2%。为什么?因为我启用了integrity check。integrity这个feature需要把整个硬盘先读写一遍,一般来说大约是200MB/s的速度,还可。应该是这个昨晚之后再开始组raid。但是LVM不管啊,两个操作一起搞。好好的顺序读写变成了4k大小的随机读写。而机械硬盘的4k随机读写的性能就跟屎一样。
--
FROM 107.139.34.*