05.10.2019 18:19
OlegON
 
Мне тут донесли интересную мысль, что, оказывается, рейды в BIOS не только непереносимы при порче материнской платы, но еще и глючны, тормозны и т.п., в общем, обладают массой недостатков при отсутствии достоинств, если сравнивать их с софтовым рейдом в операционной системе. Прошу высказывать мнение. Я же пока разберу свой BIOS-рейд в софтовый на mdadm.

Пока устрою замеры, fio, конечно, и с таким ini
Код:
[readtest]
blocksize=4k
filename=/dev/md126
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32
[writetest]
blocksize=4k
filename=/dev/md126
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32
Вот с BIOS (возьму все данные на всякий случай), это два винта в страйпе
Код:
Jobs: 1 (f=1): [r(1),_(1)][0.0%][eta 500d:01h:51m:31s]                                        
readtest: (groupid=0, jobs=1): err= 0: pid=3528: Sat Oct  5 18:18:21 2019
  read: IOPS=34, BW=136KiB/s (139kB/s)(41.1MiB/308889msec)
    slat (usec): min=2, max=112, avg=27.47, stdev= 9.85
    clat (msec): min=3, max=3905, avg=940.30, stdev=1009.47
     lat (msec): min=3, max=3905, avg=940.33, stdev=1009.46
    clat percentiles (msec):
     |  1.00th=[    9],  5.00th=[   12], 10.00th=[   14], 20.00th=[   18],
     | 30.00th=[   21], 40.00th=[   27], 50.00th=[   75], 60.00th=[ 1720],
     | 70.00th=[ 2072], 80.00th=[ 2123], 90.00th=[ 2165], 95.00th=[ 2198],
     | 99.00th=[ 2265], 99.50th=[ 2333], 99.90th=[ 3138], 99.95th=[ 3473],
     | 99.99th=[ 3842]
   bw (  KiB/s): min=    8, max=  344, per=100.00%, avg=136.26, stdev=41.48, samples=615
   iops        : min=    2, max=   86, avg=34.04, stdev=10.37, samples=615
  lat (msec)   : 4=0.02%, 10=2.89%, 20=25.18%, 50=20.85%, 100=1.48%
  lat (msec)   : 250=1.22%, 500=1.83%, 750=1.72%, 1000=1.27%
  cpu          : usr=0.06%, sys=0.12%, ctx=10560, majf=0, minf=41
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=99.7%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
     issued rwts: total=10509,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=32
writetest: (groupid=0, jobs=1): err= 0: pid=3529: Sat Oct  5 18:18:21 2019
  write: IOPS=153, BW=615KiB/s (629kB/s)(185MiB/307423msec); 0 zone resets
    slat (nsec): min=1269, max=126700, avg=21310.39, stdev=10412.22
    clat (usec): min=50, max=1707.5k, avg=208210.65, stdev=299103.50
     lat (usec): min=63, max=1707.5k, avg=208232.51, stdev=299102.20
    clat percentiles (usec):
     |  1.00th=[     81],  5.00th=[    101], 10.00th=[    118],
     | 20.00th=[    141], 30.00th=[    165], 40.00th=[    233],
     | 50.00th=[  26084], 60.00th=[ 145753], 70.00th=[ 252707],
     | 80.00th=[ 425722], 90.00th=[ 683672], 95.00th=[ 876610],
     | 99.00th=[1166017], 99.50th=[1249903], 99.90th=[1451230],
     | 99.95th=[1501561], 99.99th=[1635779]
   bw (  KiB/s): min=  272, max= 1728, per=100.00%, avg=614.88, stdev=118.72, samples=614
   iops        : min=   68, max=  432, avg=153.67, stdev=29.68, samples=614
  lat (usec)   : 100=4.64%, 250=36.09%, 500=5.09%, 750=1.38%, 1000=0.41%
  lat (msec)   : 2=0.43%, 4=0.41%, 10=0.72%, 20=0.65%, 50=1.55%
  lat (msec)   : 100=4.16%, 250=14.25%, 500=13.69%, 750=8.57%, 1000=5.23%
  cpu          : usr=0.19%, sys=0.50%, ctx=42960, majf=0, minf=11
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.9%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,47237,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=32

Run status group 0 (all jobs):
   READ: bw=136KiB/s (139kB/s), 136KiB/s-136KiB/s (139kB/s-139kB/s), io=41.1MiB (43.0MB), run=308889-308889msec
  WRITE: bw=615KiB/s (629kB/s), 615KiB/s-615KiB/s (629kB/s-629kB/s), io=185MiB (193MB), run=307423-307423msec

Disk stats (read/write):
    md126: ios=10562/47237, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=5282/23618, aggrmerge=0/0, aggrticks=4926292/4914031, aggrin_queue=9829577, aggrutil=9.17%
  sdd: ios=5383/23585, merge=1/0, ticks=164624/112145, in_queue=269541, util=6.65%
  sdc: ios=5182/23652, merge=0/0, ticks=9687960/9715917, in_queue=19389614, util=9.17%
05.10.2019 20:44
OlegON
 
по дороге один диск стал глючить, вешая биос, пока не переставил их местами :(

собрал софтовый

Код:
Jobs: 1 (f=1): [r(1),_(1)][0.0%][w=124KiB/s][w=31 IOPS][eta 492d:15h:52m:52s]                 
readtest: (groupid=0, jobs=1): err= 0: pid=4889: Sat Oct  5 19:29:40 2019
  read: IOPS=34, BW=138KiB/s (141kB/s)(36.4MiB/270355msec)
    slat (usec): min=2, max=353109, avg=195.00, stdev=6993.06
    clat (msec): min=3, max=3720, avg=927.40, stdev=1004.82
     lat (msec): min=3, max=3720, avg=927.60, stdev=1004.91
    clat percentiles (msec):
     |  1.00th=[    8],  5.00th=[   12], 10.00th=[   14], 20.00th=[   18],
     | 30.00th=[   22], 40.00th=[   27], 50.00th=[   94], 60.00th=[ 1502],
     | 70.00th=[ 2072], 80.00th=[ 2123], 90.00th=[ 2165], 95.00th=[ 2198],
     | 99.00th=[ 2333], 99.50th=[ 2467], 99.90th=[ 3171], 99.95th=[ 3440],
     | 99.99th=[ 3708]
   bw (  KiB/s): min=    8, max=  496, per=100.00%, avg=138.40, stdev=50.27, samples=537
   iops        : min=    2, max=  124, avg=34.57, stdev=12.57, samples=537
  lat (msec)   : 4=0.02%, 10=2.94%, 20=24.32%, 50=21.18%, 100=1.61%
  lat (msec)   : 250=1.69%, 500=2.11%, 750=1.92%, 1000=1.60%
  cpu          : usr=0.06%, sys=0.14%, ctx=9456, majf=0, minf=43
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.2%, 32=99.7%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
     issued rwts: total=9324,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=32
writetest: (groupid=0, jobs=1): err= 0: pid=4890: Sat Oct  5 19:29:40 2019
  write: IOPS=154, BW=619KiB/s (634kB/s)(163MiB/269055msec); 0 zone resets
    slat (nsec): min=1560, max=78365k, avg=27116.61, stdev=384192.04
    clat (usec): min=58, max=2993.4k, avg=206811.42, stdev=301295.54
     lat (usec): min=61, max=2993.4k, avg=206839.19, stdev=301294.04
    clat percentiles (usec):
     |  1.00th=[     89],  5.00th=[    120], 10.00th=[    143],
     | 20.00th=[    172], 30.00th=[    198], 40.00th=[    285],
     | 50.00th=[  28705], 60.00th=[ 143655], 70.00th=[ 248513],
     | 80.00th=[ 417334], 90.00th=[ 675283], 95.00th=[ 868221],
     | 99.00th=[1182794], 99.50th=[1283458], 99.90th=[1568670],
     | 99.95th=[1719665], 99.99th=[3003122]
   bw (  KiB/s): min=   40, max= 1936, per=100.00%, avg=620.65, stdev=145.67, samples=536
   iops        : min=   10, max=  484, avg=155.14, stdev=36.43, samples=536
  lat (usec)   : 100=1.92%, 250=36.14%, 500=7.03%, 750=1.68%, 1000=0.47%
  lat (msec)   : 2=0.52%, 4=0.46%, 10=0.74%, 20=0.71%, 50=1.78%
  lat (msec)   : 100=4.25%, 250=14.39%, 500=13.57%, 750=8.52%, 1000=5.25%
  cpu          : usr=0.24%, sys=0.62%, ctx=37206, majf=0, minf=14
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.9%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,41619,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=32

Run status group 0 (all jobs):
   READ: bw=138KiB/s (141kB/s), 138KiB/s-138KiB/s (141kB/s-141kB/s), io=36.4MiB (38.2MB), run=270355-270355msec
  WRITE: bw=619KiB/s (634kB/s), 619KiB/s-619KiB/s (634kB/s-634kB/s), io=163MiB (170MB), run=269055-269055msec

Disk stats (read/write):
    md0: ios=9375/41619, merge=0/0, ticks=0/0, in_queue=0, util=0.00%, aggrios=4688/20809, aggrmerge=0/0, aggrticks=4307599/4300263, aggrin_queue=8598136, aggrutil=9.52%
  sdd: ios=4584/20757, merge=0/0, ticks=8448447/8420846, in_queue=16856748, util=9.52%
  sdc: ios=4793/20862, merge=0/0, ticks=166751/179681, in_queue=339524, util=6.97%
06.10.2019 22:30
OlegON
 
тестом, как тут описано (на 10Гб)

10737418240 bytes (11 GB, 10 GiB) copied, 65,2314 s, 165 MB/s
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 109,486 s, 98,1 MB/s

в принципе, все осталось так же, как и было, только вот почему-то iostat перестал нормально %util показывать, оно все время не больше 20%, хотя отклик растет

сделал в sysctl
dev.raid.speed_limit_max=3000000
dev.raid.speed_limit_min=3000000

10737418240 bytes (11 GB, 10 GiB) copied, 29,8722 s, 359 MB/s
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 37,5962 s, 286 MB/s

хех... Но это за счет откладывания синхронизации и достаточного количества памяти... Опять же, помним о том, что теперь появились рычажки, которые можно дергать...
07.10.2019 10:02
OlegON
 
В общем, какие я для себя выводы сделал.

Буду пользоваться софтовым рейдом, а не в BIOS. Основная причина - последствия сбоя рейда. После того, как я зашел в BIOS и разобрал рейд, мне пришлось вытаскивать и форматировать один из дисков через USB-переходник. Почему-то машина без этого отказывалась загружаться, подвисая еще на старте BIOS.

Не могу сказать, что софтовый рейд собрался с полпинка и без глюков. Я его собрал через mdadm, попробовал, записал пару файликов, ребут - рейд разобран, один из дисков со старой файловой системой и не считает себя частью рейда. Хз вообще, почему так. Раза два повторилось, причем, я старательно убивал следы старого на отваливающемся диске. Самое смешное, что после создания рейда заново, на нем опять появлялась файловая система с данными. Но это никуда не годилось, поэтому я оба диска прямо целиковыми устройствами, без партиций, форматнул в BTRFS, после чего снова создал рейд. И он разваливаться перестал. Скажу вам, что в таком виде ковыряться с ним куда легче, чем с ребутами всего компа и, матерясь, выколупывать SATA-кабели.

Общее впечатление по скорости - особой разницы нет, к сожалению, тесты на BIOS-варианте были не слишком охватывающими. Очень сильно подкосило то, что теперь iostat не показывает нормальный %util. Но остальное все, можно сказать, как работало, так и работает.
08.10.2019 16:38
twix
 
Я как-то всегда считал, что биос рейд - тот же софтовый. Создаётся и менеджится, правда, через другую жоп дырку.
08.10.2019 16:43
OlegON
 
Цитата:
twix Я как-то всегда считал, что биос рейд - тот же софтовый.
Ну так и есть, если железка собственных мозгов и проца не имеет, то она думает софтом. В BIOS никаких мозгов отдельно не ставят.
Только разница в том, что BIOS берет диски и выдает RAID наружу, для которого должен быть драйвер. И они есть, но разной степени глючности.
В случае софтового рейда операционки (говорю про Linux). Операционка получает доступ к винтам, что значительно более традиционно и обкатано. И сама, работая с винтами, создает RAID. Т.е. все более нативно для самой операционки и более свежее и фичастое, поскольку операционка значительно чаще обновляется, чем BIOS.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.