btrfs raid1: Как проверить, нормально ли он работает?

В языке высокого -уровня вы бы использовали массив массивов, но в bash их нет. Проблемы, предполагающие многоуровневые структуры данных, как эта, обычно очень утомительны для решения в оболочке.

Но поскольку ваша цель — изучить обработку текста в Unix, а не в Python, давайте решим ее в оболочке.

В этом решении мы читаем файл один раз, чтобы получить заголовки строк, а затем снова столько раз, сколько потребуется, чтобы собрать необходимое количество элементов. Мы сохраняем два массива:outrow— это массив выходных строк, каждая из которых добавляется по мере продвижения; cursor— это массив целых чисел, в котором хранится наше место в каждой строке.

Обратите внимание, что этот скрипт будет бесконечно зацикливаться, если для удовлетворения запроса недостаточно элементов. Решение этого остается в качестве упражнения для читателя.

#!/bin/bash
k=$1
input=input.txt
declare -a outrow
declare -a cursor
K=0
n=0
while read line
do
    outrow[$n]=${line%% *}
    cursor[$n]=1
    (( n++ ))
done < $input

while [[ $K -lt $k ]]
do
    n=0
    while read line
    do
        declare -a col=( $line )
        if [[ ${#col[@]} -gt ${cursor[$n]} ]]
        then
            outrow[$n]+=" ${col[ ${cursor[$n]} ]}"
            (( cursor[$n]++ ))
            (( K++ ))
            [[ $K -lt $k ]] || break
        fi
        (( n++ ))
    done < $input
done

for row in "${outrow[@]}"
do
    echo "$row"
done
0
07.10.2019, 18:15
1 ответ

спасибо в cono. Он помогает мне. У меня пока нет RAID:

# btrfs fi df /mnt
Data, RAID1: total=1.00GiB, used=768.00KiB
Data, single: total=1.00GiB, used=0.00B
System, RAID1: total=8.00MiB, used=16.00KiB
System, single: total=32.00MiB, used=0.00B
Metadata, RAID1: total=1.00GiB, used=112.00KiB
Metadata, single: total=1.00GiB, used=0.00B
GlobalReserve, single: total=16.00MiB, used=0.00B

Команда , предложенная в статье , работает некорректно

Поэтому он предложил мне сделать ребаланс вручную:

# btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt

Теперь все работает как положено:

# btrfs fi df /mnt
Data, RAID1: total=1.00GiB, used=512.00KiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=1.00GiB, used=112.00KiB
GlobalReserve, single: total=16.00MiB, used=0.00B
0
28.01.2020, 03:13

Теги

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