Для повторного использования того же диска в ZFS, если вы уверены, что диск не неисправен, хорошим началом будет выполнение DD первых 10 ГБ диска, но это нужно делать и в конце привод. А вот DD 10 Гб не надо, думаю первого и последнего МБ хватит.
Я решил это так:
dd bs=512 if=/dev/zero of=/dev/sdk count=2048 seek=$(($(blockdev --getsz /dev/sdk) - 2048))
dd bs=512 if=/dev/zero of=/dev/sdk count=2048
Затем просто добавьте «новый» диск обратно в пул ZFS. Не нужно очищать этикетки, стирать, протирать диск. ДД - это все, что вам нужно. Вы также не должны разбивать диск после DD. ZFS не примет ранее разбитый на разделы диск.
Тогда простоzpool replace <pool-name> <old-device> <new-device>
обычно это диск -с идентификатором -и устройство, указанное в lsblk
.
$ awk -v t=34897 '/^\[/{f=($4=="T("t")")} f' file
[12] 03/31/21 08:33:30.080851 T(34897) _DBG message y 1
[12] 03/31/21 08:33:31.457612 T(34897) _DBG message y 2
test message line 2
test message line 3
test message line 4
[12] 03/31/21 08:33:32.56341 T(34897) _DBG message y 3
[12] 03/31/21 08:33:33.78123 T(34897) _DBG message y 3
test message line 2
[12] 03/31/21 08:33:34.56712 T(34897) _DBG message y 4
Приведенный выше код устанавливает флаг «найдено» f
каждый раз, когда видит строку, начинающуюся с [
. Если 4-е поле в этой строке равно T(<target value>)
, тогда f
устанавливается равным true (1 ), в противном случае — false (0 ). Когда читается каждая строка, если f
истинно в это время, то печатается текущая строка.
С любым скриптом awk, если вы хотите увидеть его с другим форматированием и меньше полагаться на значения по умолчанию, чтобы сделать его немного менее кратким и более понятным, вы можете -распечатать его с помощью GNU awk (примечание :это должен быть gawk, а не какой-то другой вариант awk ), какawk -o-...
:
$ awk -o- -v t=34897 '/^\[/{f=($4=="T("t")")} f' file
/^\[/ {
f = ($4 == "T(" t ")")
}
f {
print
}
Сначала мы определяем некоторые вспомогательные переменные, чтобы помочь в формулировании регулярных выражений на основе поля -.
# definition of a unit space
_s_='[:space:]'
# regex for a space char and nonspace char
s="[$_s_]" S="[^$_s_]"
# a field is a run of nonspaces followed by a run of spaces
F="$S\{1,\}$s\{1,\}"
id=34897
sed -ne ":top
/^\[$S*$s$s*\($F\)\{2\}T($id)$s/{
:nxt
p;n
/^$s/b nxt
b top
}
" file