Преобразование сценария Bash

Примечание. :это работает только для RAID 1, который представляет собой простое линейное зеркало.

Удаление одного диска из массива RAID:

mdadm /dev/md0 --fail /dev/sdb1
mdadm /dev/md0 --remove /dev/sdb1
mdadm --zero-superblock /dev/sdb1

То же самое соответственно для всех остальных разделов md/sdb. Затем вы можете делать с /dev/sdbвсе, что хотите.

Что касается RAID, то он ухудшился (1 из 2 дисков ). Можно сделать не деградировавшим (1 из 1 диска):

mdadm --grow /dev/md0 --raid-devices=1 --force

Таким образом, уровень RAID по-прежнему существует, фактически ничего не делая. Но это оставляет вам возможность легко добавить второй диск в будущем, тем самым возобновив операции RAID. И нет необходимости изменять какие-либо другие конфигурации.


Если вы хотите полностью избавиться от RAID 1, вам придется определить смещение данных, а затем соответствующим образом изменить смещение раздела.

# mdadm --examine /dev/sda1
Data Offset : 2048 sectors
$ cat /sys/block/sda/sda1/start
2048
$ cat /sys/block/sda/sda1/size
268613632

В этом примере у вас есть смещение данных 2048, сам раздел начинается с 2048и имеет размер 268613632.

Вы должны удалить этот раздел и создать новый 2048+2048-268613632-2048. т.е. увеличьте начало по смещенным секторам и уменьшите размер по смещенным секторам, поэтому конечный сектор раздела останется неизменным.

Вы можете сделать это с любым разделителем по вашему выбору, в partedэто будет:

# parted /dev/sda
) unit s
) print free
) rm 1
) print free
) mkpart primary 4096s 268611583s
) name 1 mynonraidroot

После перезагрузки новый раздел теперь должен указывать непосредственно на файловую систему, а сам RAID перестанет существовать. (Если вы выполняете этот шаг из аварийной системы, вам также не потребуется перезагрузка, и вы также можете mdadm --zero-superblock /dev/sda1перед изменением раздела, предполагая, что вы уже остановили RAID ).


На последнем этапе вам придется удалить mdadm.conf, обновить загрузчик и initramfs, чтобы избавиться от любых оставшихся ссылок на настройку RAID.

0
19.11.2019, 02:35
3 ответа

С GNU awk:

awk -v FIELDWIDTHS='2 2 2 1 2 2' '{ print $1 "/" $2 "/" $3 " " $5 ":" $6 }'
3
28.01.2020, 02:14

Традиционным решением было бы сделать что-нибудь сsed

sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'

Например:

% echo 111319 2036 | sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'
11/13/19 20:36

Существует также возможность получения чистого bashраствора.

Если, например, у вас есть значение в $a, тогда

${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}

Например:

$ a="111319 2036"
$ echo ${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}
11/13/19 20:03
2
28.01.2020, 02:14
echo "111319 2036"| awk '{print substr($1,1,2)"/"substr($1,3,2)"/"substr($1,5,2) " " substr($NF,1,2)":"substr($NF,3,4)}'

выход

11/13/19 20:36
1
28.01.2020, 02:14

Теги

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