mdadm недостаточно для запуска массива -/dev/sdc2 нет суперблока

Да, потому что подстановка команд выполняется оболочкой еще до запуска xargs. echoв подстановке печатает литеральную строку {}для sedдля манипулирования. sedне вносит в него никаких изменений, и в результате xargsвидит

echo {} {}

Вместо:

echo 'abc' | xargs -I{} bash -c 'echo "$(sed "s/b/f/g" <<<"$1")" "$1"' bash {}

Здесь мы не позволяем оболочке оценивать подстановку команд, встраивая ее в -строчный скрипт. Скрипт получает аргумент командной строки(abc)из xargsи обрабатывает его как "$1".

Было бы еще лучше использовать printf, если у вас возникла идея заменить aтире, а другие символы на что-то, что будет интерпретироваться как опцияecho:

echo 'abc' | xargs -I{} bash -c 'printf "%s %s\n" "$(sed "s/b/f/g" <<<"$1")" "$1"' bash {}

Или безsed:

echo 'abc' | xargs -I{} bash -c 'printf "%s %s\n" "${1//b/f}" "$1"' bash {}

Или вы можете просто сделать это только с sed(, по крайней мере, в этом простом примере):

echo 'abc' | sed 'h; s/b/f/g; G; s/\n/ /'
0
31.07.2020, 19:10
1 ответ

Хорошо, у меня все получилось (Думаю, )выполнив:

mdadm --assemble --scan --force
mdadm: Marking array /dev/md/1 as 'clean'
mdadm: /dev/md/1 has been started with 3 drives (out of 4).
>: cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid6 sdb2[0] sdd2[2] sdc2[1]
  5735270400 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [UUU_]
  [>....................]  resync =  0.0% (765440/2867635200) finish=561.7min speed=85048K/sec
  bitmap: 4/22 pages [16KB], 65536KB chunk

md0 : active (auto-read-only) raid6 sdb1[0] sde1[3] sdd1[2] sdc1[1]
  124932096 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]
unused devices: <none>

Теперь я подожду повторной -синхронизации и попытаюсь перезагрузить компьютер. Тем временем объем увеличивается, и я вернул свои данные!

0
18.03.2021, 23:16

Теги

Похожие вопросы