Я не уверен, что вы получите, используя <(...)
вместо простого трубопровода:
journalctl... |
jq -r... |
while read LOG_FACILITY LOG_SEVERITY LOG_TAG LOG_MESSAGE
do logmessage...
done
Конечно, обе версии имеют одинаковую проблему с буферизацией.
Однако в любом случае, если вы хотите использовать socat
для запуска команды jq
, вы можете сделать это, заменив jq -r...
на
socat -u EXEC:'jq -r...',pty,ctty STDIO
, но есть большая проблема с необходимостью заключать аргументы jq
в кавычки, так как socat
немного искажает их, и сложно правильно передать строку. Один из способов обойти это — сохранить команду в переменной оболочки, а затем использовать ее позже :
export cmd="$(cat <<\!
jq -r '"\(.SYSLOG_FACILITY // 3) \(.PRIORITY // 6 ) \(.SYSLOG_IDENTIFIER // "journald") \(.MESSAGE | sub("\\n";" ";"g") // "no message")"'
!
)"
socat -u SYSTEM:'eval $cmd',pty,ctty STDIO
Но, наконец, ни в чем из этого не должно быть необходимости, так как jq
принимает вариант --unbuffered
, который позволит достичь желаемого эффекта.
Похоже, что все ваши /media/*
монтирования используют диск ->часть ->raid1 ->слои шифрования.
Обратите внимание: если ваши существующие диски емкостью 2 ТБ разбиты на разделы в стиле MBR, вы не сможете сделать это с новыми большими дисками, так как вы достигнете предела максимальной емкости MBR. К счастью, программный RAID для Linux не требует, чтобы вы имели один и тот же тип разбиения на отдельные половины набора RAID (или, фактически, с загрузочными дисками, отличными от -, у вас будет возможность не использовать какую-либо схему разбиения. вообще ).
Итак, предположим, что md2
— это набор RAID, который вы хотите перенести на большие диски, и сначала вы захотите поменять местами sdh
:
sdh1
как неисправный компонент RAID1:mdadm --manage /dev/md2 --fail /dev/sdh1
md2
RAID-набора:mdadm --manage /dev/md2 --remove /dev/sdh1
echo 1 > /sys/block/sdh/device/delete
. В зависимости от контроллера и модели диска, диск может фактически останавливаться, а может и не останавливаться, когда вы это делаете. sdh
диск новым. /dev/sdh
;назовем этоsdX
). A19D880F-05FC-4D3B-A006-743F0F84911E
; большинство инструментов разметки GPT имеют более удобный для пользователя -способ указать это. )Этот раздел будет больше, чем существующая половина этого набора RAID; это совершенно нормально на данный момент. mdadm
будет использовать столько, сколько необходимо для зеркального отображения раздела sdi1
, пока вы не дадите ему разрешение на использование полной емкости на шаге #10 позже. (Если вы используете разбиение на разделы, вы можете захотеть использовать какой-то конкретный размер вместо того, чтобы просто использовать весь диск, чтобы предотвратить возможность того, что вам может понадобиться заменить диск в будущем, и вы не сможете получить исходный код. замена дисков с точно таким же количеством блоков. Опять же, будущие диски, вероятно, будут больше, чем текущие, что сделает эту проблему не -.)
mdadm --manage /dev/md2 --add /dev/sdX1
; если вы решили использовать весь диск в качестве неразделенного RAID-устройства, используйте mdadm --manage /dev/md2 --add /dev/sdX
. /proc/mdstat
, чтобы увидеть, когда синхронизация завершена. sdj
. mdadm --grow /dev/md2 --size=max
, чтобы md2
RAID-устройство могло полностью использовать увеличенную емкость. (Если вы решили не использовать разделение на шаге #6 выше, вы также можете использовать определенный размер вместо --size=max
здесь по той же причине, что и на шаге #6.)
md2
используйте cryptsetup resize /dev/mapper/backup
для изменения размера зашифрованного устройства поверх набора RAID md2
. fsadm resize /dev/mapper/backup
,или с помощью специального инструмента файловой системы -(resize2fs /dev/mapper/backup
для типов файловых систем ext2/ext3/ext4, xfs_growfs /media/backup
для XFS и т. д.)