Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
*** Ivan Shmakov  [2017-07-16 09:25]:
>   Что понимается под «vi-like клавишами для поиска»?  Поскольку
>   Screen вроде бы умеет как «наращиваемый» Emacs-like поиск
>   (C-r, C-s), так и «традиционный» (/, ?).  Равно как и hjkl.

В дополнении к "/", "?" ещё клавиши типа "%", "{", "}", "f", итд. Хотя
это уже скорее просто перемещение, а не поиск.

>   Я так понимаю, здесь запускается окно с Shell, в которое затем
>   вводится $ su -?  Честно говоря, я обычно $ screen 10 su -, без
>   каких-либо промежуточных интерпретаторов.

Плюс оно бъётся по pane-ам, переходит в директории. Когда-то я сразу и
mutt и mocp запускал.

>$ cat < setup-slogin.screen 

Тут вроде всё выглядит так, что запускается только ровно одна команда? В
tmux-е я делаю именно вставку каких-либо символов/клавиш и прочего? На
самом деле кроме "su -" ещё и его пароль вставляется (загруженный с
зашифрованного диска -- мол если диск подключен, то это уж точно
авторизованный пользователь).

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
*** Tim Sattarov  [2017-07-16 04:59]:
>У меня тоже был вопрос про разницу в предпочтениях, я в своё время начал
>пользоваться screen и как то с tmux после не пошло...

Я когда-то пользовался screen, но всегда, мягко говоря, ненавидел все их
сочетания клавиш и вообще подходы к конфигурации. А с tmux-ом вздохнул
спокойно. Но это личные предпочтения.

>На что только люди не идут, чтобы не пользоваться docker-compose
>(Продолжаю мощные вбросы :) )

Да уж, учитывая то, что я когда-то владел boycottdocker.org доменом :-)

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
Опять же, не знаю как в screen, но в tmux я активно использую штуку
когда по нажатию сочетания клавиш, он мне во временный файл сохраняет
содержимое текущего pane, открывает ещё один pane, а в нём команду
натравленную на временный файл:

bind-key u capture-pane -J \;
save-buffer /tmp/tmux-buffer \;
split-window 'urlview /tmp/tmux-buffer' \;
delete-buffer
bind-key y capture-pane -J \;
save-buffer /tmp/tmux-buffer \;
split-window 'vim /tmp/tmux-buffer' \;
delete-buffer

например я в терминале вижу ссылку и мне хочется её открыть в броузере.
Нажимаю Prefix-u и мне открывается новое окно (pane) в котором urlview
позволяет выбрать ссылку и нажать enter, закрыв это окно. Или хочется
как-то вырезать/обработать текст который вижу на экране, но удобно сразу
же в текстовом редакторе -- нажимаю Prefix-y и у меня новый pane, в
котором vim с уже вставленным содержанием pane на котором я нажал
сочетание.

Видел use-case у пользователя с Gvim-ом: обычно всякие сообщения об
ошибках компиляции в формате "filename:lineno:colno". Так вот, опять же,
простое сочетание запускает sed/whatever который готовит вывод для
диалога предлагающего открыть обнаруженные на экране строчки, выбрав
нужную, он посылает команду ":e filename +lineno" в Gvim (он же, как бы,
клиент-серверный).

У меня когда-то был use-case чтобы всякие "#666" открывать в броузере
как ссылку для Redmine.

Я точно знаю что выбор ссылок или вот что-то сделать с отпарсенными
значениями можно и в urxvt, в котором на Perl можно скриптовать, но я не
понимаю зачем. Наверняка в любой системе есть screen/tmux, так почему бы
это не сделать в них? Терминал может поменяться от системы к системе, а
tmux всегда будет точно такой же родной с собой. Лично я вот люблю не
монстров типа gnome-terminal, а что-то очень простое, suckless, типа st
(st.suckless.org). А без tmux/whatever все эти хотелки требуют
прожорливых огромных монстров терминалов.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине

2017-07-16 Thread Ivan Shmakov
> Sergey Matveev  writes:
> *** Ivan Shmakov  [2017-07-16 09:25]:

 >> Что понимается под «vi-like клавишами для поиска»?  Поскольку Screen
 >> вроде бы умеет как «наращиваемый» Emacs-like поиск (C-r, C-s), так и
 >> «традиционный» (/, ?).  Равно как и hjkl.

 > В дополнении к "/", "?" ещё клавиши типа "%", "{", "}", "f", итд.
 > Хотя это уже скорее просто перемещение, а не поиск.

Команды перемещения у Screen, разумеется, тоже есть; Less-like,
если угодно; % — в начало буфера; G — в конец; etc.

Мне не приходилось участвовать в разработке GNU Screen, но не
вижу причин считать, что предложения «добавить Vi-клавиш» будут
заведомо отвергнуты разработчиками.  Разве что из соображений
«обратной совместимости».

 >> Я так понимаю, здесь запускается окно с Shell, в которое затем
 >> вводится $ su -?  Честно говоря, я обычно $ screen 10 su -, без
 >> каких-либо промежуточных интерпретаторов.

 > Плюс оно бьётся по pane-ам,

Не вижу препятствий для неинтерактивного использования split и в
Screen.  Я, однако, редко использую «многооконность» самого
Screen (куда чаще — запущенного в нем Emacs.)

 > переходит в директории.

Я бы решил это так:

### my.screen

chdir /foo
screen -t foo 3

chdir /bar
screen -t bar 8

chdir /baz
screen -t baz 17 qux --quux

chdir

### my.screen ends here

 > Когда-то я сразу и mutt и mocp запускал.

Это может составить какую-либо проблему для Screen?

 >> $ cat < setup-slogin.screen

 > Тут вроде всё выглядит так, что запускается только ровно одна
 > команда?

Именно.  Никакой «имитации интерактивности» — исключительно
«штатные» интерфейсы.

В общем случае, это кажется куда как более надежным.  Мало ли о
чем запущенное приложение захочет спросить пользователя сразу
после запуска?  SSH-клиент, например, может предупреждение о
возможном MitM выдать — и попросить подтвердить доступ.  Или, в
отсутствие ключа у агента — пароль спросить.

 > В tmux-е я делаю именно вставку каких-либо символов/клавиш и прочего?

?  Это вопрос?

 > На самом деле кроме "su -" ещё и его пароль вставляется (загруженный
 > с зашифрованного диска — мол если диск подключен, то это уж точно
 > авторизованный пользователь).

… Любопытно, а умеет ли sudo(8) учитывать факт наличия
произвольных файлов при выполнении авторизации?

-- 
FSF associate member #7257  58F8 0F47 53F5 2EB2 F6A5  8916 3013 B6A0 230E 334A


Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
*** Ivan Shmakov  [2017-07-16 11:49]:
>   Команды перемещения у Screen, разумеется, тоже есть; Less-like,
>   если угодно; % — в начало буфера; G — в конец; etc.
>
>   Мне не приходилось участвовать в разработке GNU Screen, но не
>   вижу причин считать, что предложения «добавить Vi-клавиш» будут
>   заведомо отвергнуты разработчиками.  Разве что из соображений
>   «обратной совместимости».

Повторюсь: тут вопрос субъективный похоже. Я не вижу смысла (для себя)
что-то добавлять или как-то улучшать GNU screen когда есть Tmux. Как
минимум я наслышан о качестве кода последнего, но не о качестве первого.
Ища информация по поводу screen vs tmux, постоянно натыкался на то что в
tmux-е раньше стало всё хорошо с Unicode-ом, итд, итд. Я не считаю
screen плохим, он имеет право на существование, но если есть выбор то
мой падёт не на него чисто потому-что многое субъективное не нравится.

> > Когда-то я сразу и mutt и mocp запускал.
>   Это может составить какую-либо проблему для Screen?

Насколько понимаю, если запустить screen mutt, то после выхода из mutt-а
и screen завершит свою работу? Очень часто проще выйти из mutt чтобы
например зайти в default почтовый ящик. Поэтому тут нужно именно shell
запустить, а в нём как бы вызвать mutt команду, чтобы при выходе из неё
я снова попал в shell.

>chdir /foo
>screen -t foo 3
>[...]
>   Именно.  Никакой «имитации интерактивности» — исключительно
>   «штатные» интерфейсы.
>
>   В общем случае, это кажется куда как более надежным.  Мало ли о
>   чем запущенное приложение захочет спросить пользователя сразу
>   после запуска?  SSH-клиент, например, может предупреждение о
>   возможном MitM выдать — и попросить подтвердить доступ.  Или, в
>   отсутствие ключа у агента — пароль спросить.

Вот именно под этим я и подразумевал что tmux удобнее (субъективно).
Отчасти я согласен что это *потенциально* менее безопаснее -- но я
считаю что нечего запускать ПО которому не доверяете, от которого ждёте
такого подвоха. И когда речь заходит о "человеческом" удобстве, то тут
не всегда до безопасности. Я хочу *именно*, как вы выразились, имитации
интерактивности -- я хочу буквально заменить себя, причём меньшей болью.
Я согласен что многое можно заменить shell-скриптами, то если я вот
каждый раз когда занимаюсь проектом XXX делаю:
cd ~/work/xxx
venv
workon xxx
cat todo.txt
export PS="..."
то исключительно удобно вот как всё написано -- взять и обернуть в tmux
команды, без создания shell-скрипта который правильно включит
virtualenv-ы, выставит переменные окружения, итд.

> > В tmux-е я делаю именно вставку каких-либо символов/клавиш и прочего?
>   ?  Это вопрос?

Не, это я нечаянно поставил вопросительный знак.

> > На самом деле кроме "su -" ещё и его пароль вставляется (загруженный
> > с зашифрованного диска — мол если диск подключен, то это уж точно
> > авторизованный пользователь).
>
>   … Любопытно, а умеет ли sudo(8) учитывать факт наличия
>   произвольных файлов при выполнении авторизации?

Хочу заметить что пароль вставляется "имитацией интерактивности" -- то
есть tmux туда пихает сам пароль, прочитанный из файла, дальше лупит enter.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине

2017-07-16 Thread Ivan Shmakov
> Sergey Matveev  writes:
> *** Ivan Shmakov  [2017-07-16 11:49]:

 >> Команды перемещения у Screen, разумеется, тоже есть; Less-like, если
 >> угодно; % — в начало буфера; G — в конец; etc.

 >> Мне не приходилось участвовать в разработке GNU Screen, но не вижу
 >> причин считать, что предложения «добавить Vi-клавиш» будут заведомо
 >> отвергнуты разработчиками.  Разве что из соображений «обратной
 >> совместимости».

 > Повторюсь: тут вопрос субъективный похоже.  Я не вижу смысла (для
 > себя) что-то добавлять или как-то улучшать GNU screen когда есть
 > Tmux.

Не исключено, что кто-то из читающих рассылку заинтересуется.

Вопрос подписчиков был ведь в том, чтобы сравнить Screen и Tmux?
Вот мы этим и занимаемся, не так ли?  Сам я, единолично,
сравнить их не могу, коль скоро имею опыт использования лишь
одного, и ознакомление с другим не является для меня, на текущий
момент, приоритетной задачей.

 > Как минимум я наслышан о качестве кода последнего, но не о качестве
 > первого.

Вполне возможно.  AIUI, GNU Screen в этом году празднует свое
тридцатилетие.  За такой срок в коде имеют свойство
накапливаться «особенности.»  Если этому активно не
противодействовать, во всяком случае.

 > Ища информация по поводу screen vs tmux, постоянно натыкался на то
 > что в tmux-е раньше стало всё хорошо с Unicode-ом, итд, итд.

А вот это слегка сомнительно.  Tmux появился в 2007 г., и на тот
момент, IIRC, GNU Screen у меня с UTF-8 работал вполне
адекватно.

Впрочем, те же символы двойной ширины мне были без особой
надобности, так что…

[…]

 > Насколько понимаю, если запустить screen mutt, то после выхода из
 > mutt-а и screen завершит свою работу?

Если запустить Screen и в нем создать ($ screen mutt) окно с
Mutt, то по завершению Mutt окно действительно будет закрыто.
Или станет «зомби» — в зависимости от настроек.

 > Очень часто проще выйти из mutt чтобы например зайти в default
 > почтовый ящик.  Поэтому тут нужно именно shell запустить, а в нём как
 > бы вызвать mutt команду, чтобы при выходе из неё я снова попал в
 > shell.

Э, нет, мне проще запустить два Mutt — каждый в своем окне.

$ ps -o pid,lstart,cmd -C mutt 
  PID  STARTED CMD
12148 Wed Jul  5 04:40:13 2017 mutt XXX
15184 Sun Jul  2 12:26:51 2017 mutt YYY

[…]

 >> Никакой «имитации интерактивности» — исключительно «штатные»
 >> интерфейсы.

 >> В общем случае, это кажется куда как более надежным.  Мало ли о чем
 >> запущенное приложение захочет спросить пользователя сразу после
 >> запуска?  SSH-клиент, например, может предупреждение о возможном
 >> MitM выдать — и попросить подтвердить доступ.  Или, в отсутствие
 >> ключа у агента — пароль спросить.

 > Вот именно под этим я и подразумевал что tmux удобнее (субъективно).

На самом деле, здесь нет различия между Screen и Tmux: первый
также имеет команду (stuff) для имитации ввода в окно.  E. g.:

### my.screen

## Usage: $ screen -X source my.screen

screen -t mutt 27
stuff mutt\n

### my.screen ends here

Другое дело, что я этой возможностью пользуюсь крайне редко
(если вообще пользуюсь), и если у Screen есть дефекты в ее
реализации — я с ними не сталкивался.

 > Отчасти я согласен что это *потенциально* менее безопаснее — но я
 > считаю что нечего запускать ПО которому не доверяете, от которого
 > ждёте такого подвоха.

Причем здесь доверие?  Я уже привел один пример: $ ssh REMOTE
может дать доступ к Shell на удаленной машине; а может —
предупреждение о том, что ключ REMOTE не соответствует
сохраненному в ~/.ssh/known_hosts.  Ни stuff, ни set-buffer +
paste-buffer адекватно эту ситуацию обработать, IIUC, не
позволяют.

Еще одна возможная ситуация — «внезапное» изменение умолчаний.
Так, традиционно, Home и End в Emacs перемещали точку в начало и
конец буфера, соответственно.  Затем разработчики решили «быть
как все» и с выходом 21.1 в 2001 г. эти клавиши были по
умолчанию переназначены на перемещение в начало и конец /строки./

При непосредственном взаимодействии с программой я могу
надеяться уследить за отличной от ожидаемой реакцией и либо
начать выяснять причины, либо «подстроиться».

Из кода?  Я определенно предпочту более стабильные «командные»
интерфейсы.  Вроде $ emacs --eval='(beginning-of-buffer)', или
$ bash --rcfile=XXX.

 > И когда речь заходит о «человеческом» удобстве, то тут не всегда до
 > безопасности.  Я хочу *именно*, как вы выразились, имитации
 > интерактивности — я хочу буквально заменить себя, причём меньшей
 > болью.  Я согласен что многое можно заменить shell-скриптами, то если
 > я вот каждый раз когда занимаюсь проектом XXX делаю:

 > cd ~/work/xxx
 > venv
 > workon xxx
 > cat todo.txt
 > export PS="..."

 > то исключительно удобно

Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
*** Ivan Shmakov  [2017-07-16 18:04]:
>   Причем здесь доверие?  Я уже привел один пример: $ ssh REMOTE
>   может дать доступ к Shell на удаленной машине; а может —
>   предупреждение о том, что ключ REMOTE не соответствует
>   сохраненному в ~/.ssh/known_hosts.  Ни stuff, ни set-buffer +
>   paste-buffer адекватно эту ситуацию обработать, IIUC, не
>   позволяют.

Тогда я не так понял что вы имели в виду прежде. Да, хороший пример.
Просто никогда такие "опасные" команды в tmux не автоматизировал.

>   Еще одна возможная ситуация — «внезапное» изменение умолчаний.

Ну для меня это "болезнь" людей которые любят bleeding edge. Обновляться
надо аккуратно, читая changelog-и софта. Хотя по ним не всегда понятно
затронет ли оно "меня" или нет. В любом случае всё это настолько редкие
для меня ситуации, что о них даже не собираюсь думать.

>   А если так, то в чем преимущество set-buffer + paste-buffer
>   перед, например, $ bash --rcfile=?  (Предполагая, что
>   используется именно Bash.  Думаю, иные реализации Shell
>   предоставляют схожие возможности.)

(bash не использую, но это мелочи) Тут rcfile будет для одного
интерпретатора. Если мне нужно открыть несколько окон (pane-ов в tmux) и
в каждом из них что-то сделать своё, не одинаковое для всех окон, то
тогда нужно написать несколько rc-файлов. Вместо ровно одного, где всё
сконсолидировано -- нужно иметь и скрипт с tmux/screen обёрткой и
отдельные rc-файлы. Да, можно их поместить и в один, который их сохранит
во временные файлы, натравливая на них shell, но... это уже не удобно,
это уже костыли. Мне надо думать как делать --rcfile, а мне хочется
просто ручные действия "заскриптовать".

>   /Цель/ работы данного кода, как я ее понял, — дать пользователю
>   root-доступ, если «подключен зашифрованный диск».

Нет, просто ввести "su -" и пароль взятый с диска. Если пароля нет, то
он введёт пустоту и su меня пошлёт. Просто ввести su и пароль -- мне не
надо никаких проверок.

>   Я не вижу причины, по которой некий «шлюз привилегий» не может
>   проверить факт /наличия/ файла — и дать root-доступ без
>   необходимости ввода какого-либо пароля.  (Или хранения оного.)

Для этого мне надо открыть документацию su/sudo/doas/whatever и смотреть
может ли он это сделать. Мне этого не надо -- мне надо просто повторить
мои ручные действия.

Есть разница между "делать всё правильно" и сделать всё очень быстро,
наколеночные макросы и простые скрипты которые экономят время, пускай
даже которые упадут или не сработают. Время настройки автоматически
запускаемого рабочего окружения с "правильными" подходами в виде
rc-файлов, проверок на ошибки и прочего существенно больше чем просто
сказать что надо интерактивно ввести. Если что-то пошло не так, то проще
поправить скрипт.

Тут точно так же как при работе в Vim редакторе: не всегда "делать
правильно" эффективно по времени -- иногда надо делать менее эффективно,
но зато с меньшими усилиями, если что, если например макрос "испорчен",
то с нуля его повторить.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине

2017-07-16 Thread Victor Wagner
On Sun, 16 Jul 2017 18:24:27 +0300
Sergey Matveev  wrote:

> *** Ivan Shmakov  [2017-07-16 18:04]:
> > Причем здесь доверие?  Я уже привел один пример: $ ssh REMOTE
> > может дать доступ к Shell на удаленной машине; а может —
> > предупреждение о том, что ключ REMOTE не соответствует
> > сохраненному в ~/.ssh/known_hosts.  Ни stuff, ни set-buffer +
> > paste-buffer адекватно эту ситуацию обработать, IIUC, не
> > позволяют.  
> 
> Тогда я не так понял что вы имели в виду прежде. Да, хороший пример.
> Просто никогда такие "опасные" команды в tmux не автоматизировал.
>

Опасной может быть даже команда cd.

Когда-то давно один мой знакоймый налетел на такую ситуацию:

У него был некоторый скрипт, который перегенерировал некоторое дерево
каталогов.  Скрипт начиланся с 

cd something; rm -rf *

Вот это something было расположено в его $HOME и являлось симлинком на
каталог на втором физическом диске (не помню уж куда этот диск был
смонтирован. На /srv какой-нибудь). Скрипт запускался по крону.

И вот однажды этот большой диск немножко умер. Поскольку это был
сервер, на нем как могли переконфигуировали сервисы и подняли с одним
диском. Про этот скрипт, бывший частным делом одного из сотрудников
компании, который в офисе в  момент неприятности не случился,
естественно забыли.

Скрипт запустился, перейти по висячему симлинку не смог и выполнил

rm -rf прямо в $HOME этого товарища.

Мораль - всегда проверяйте exit code команды cd, а лучше
в начале любого скрипта пишите set -e.

> Ну для меня это "болезнь" людей которые любят bleeding edge.
> Обновляться надо аккуратно, читая changelog-и софта. Хотя по ним не
> всегда понятно затронет ли оно "меня" или нет. В любом случае всё это
> настолько редкие для меня ситуации, что о них даже не собираюсь
> думать.

Вот делаешь dist-upgrade, обновляются пара тысяч пакетов, а ты потом
разбирайся, где оно поехало, а где нет. 

 
> Есть разница между "делать всё правильно" и сделать всё очень быстро,
> наколеночные макросы и простые скрипты которые экономят время, пускай
> даже которые упадут или не сработают. Время настройки автоматически

Вот нужно делать даже наколеночные скрипты правильно. Чтобы они упали,
не успев навредить.





зеркальный бэкап ZFS

2017-07-16 Thread Alex Kicelew
Hi

Вопрос адресован к тем, кто давно работает с ZFS (наверное, неважно, на
какой платформе) и хорошо в ней разбирается.

Просьба оценить (не)жизнеспособность такого экстравагантного способа
бэкапа пула, состоящего из одного диска:

1) в первый раз подсоединяем бэкапный диск по USB и говорим zpool
attach, в результате чего пул становится зеркальным и начинается
ресилверинг основного диска на резервный;

2) дожидаемся окончания ресилвера, однократно делаем этот диск
загрузочным, говорим ему zpool offline и отсоединяем его; пул остается в
degraded state, но полностью работоспособный (в этом моменте я уверен не
до конца, и хотелось бы выслушать его подтверждение или опровержение);

3) с определенной периодичностью подключаем резервный диск, говорим ему
zpool online, дожидаемся окончания ресилвера, говорим zpool offline и
отключаем обратно.

Цель этих нетривиальных действий: если в процессе эксплуатации основного
диска (когда резервный отключен) на нем возникнет checksum error, есть
предположение (в котором я как раз совершенно не уверен), что когда
вечером будет подключен резервный и окажется, что поврежденные данные
есть в неповрежденном виде на резервном, zfs поправит их на основном,
как он поступает в случае, если в момент обнаружения ошибки доступны оба
зеркала. Если мое предположение неправильно, то, разумеется, такие
неочевидные действия совершенно не нужны, достаточно zfs send (-I) -R.
Но вдруг?..



Re: tmux на локальной машине

2017-07-16 Thread Sergey Matveev
*** Victor Wagner  [2017-07-16 21:00]:
>Опасной может быть даже команда cd.
>cd something; rm -rf *
>Мораль - всегда проверяйте exit code команды cd, а лучше
>в начале любого скрипта пишите set -e.

Если делать скрипт, то я всеми руками за set -e. Опасна в вашем примере
не команда cd, а rm -rf, а дальше уже действительно аккуратная проверка
всего вокруг неё.

>Вот нужно делать даже наколеночные скрипты правильно. Чтобы они упали,
>не успев навредить.

Если речь про tmux и screen, то повторюсь: нужно думать что писать,
думать что автоматизируется путём интерактивного ввода. Не нужно делать
из мухи слона и страдать из-за тучи shell файлов. Не нужно делать то,
что может навредить. Если в tmux скриптах только cd, workon (virtualenv
для python), export, su, запуск mutt/mocp/cmus/dnetc/whatever -- они не
навредят, даже если что-то пошло не так. Не нужно сравнивать general
purpose скрипты, и особые простые для запуска сред в tmux.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Vasiliy P. Melnik
Уравнение со слишком многими неизвестными и слишком большим количеством
если.

так с данными лучше не поступать - проще использовать рсинк, и лучше
складывать на ехт4, ибо инструментов рекавери с зфс-а нет, а один раз я уже
был в ситуации, когда очень бы они пригодились

16 июля 2017 г., 21:00 пользователь Alex Kicelew 
написал:

> Hi
>
> Вопрос адресован к тем, кто давно работает с ZFS (наверное, неважно, на
> какой платформе) и хорошо в ней разбирается.
>
> Просьба оценить (не)жизнеспособность такого экстравагантного способа
> бэкапа пула, состоящего из одного диска:
>
> 1) в первый раз подсоединяем бэкапный диск по USB и говорим zpool
> attach, в результате чего пул становится зеркальным и начинается
> ресилверинг основного диска на резервный;
>
> 2) дожидаемся окончания ресилвера, однократно делаем этот диск
> загрузочным, говорим ему zpool offline и отсоединяем его; пул остается в
> degraded state, но полностью работоспособный (в этом моменте я уверен не
> до конца, и хотелось бы выслушать его подтверждение или опровержение);
>
> 3) с определенной периодичностью подключаем резервный диск, говорим ему
> zpool online, дожидаемся окончания ресилвера, говорим zpool offline и
> отключаем обратно.
>
> Цель этих нетривиальных действий: если в процессе эксплуатации основного
> диска (когда резервный отключен) на нем возникнет checksum error, есть
> предположение (в котором я как раз совершенно не уверен), что когда
> вечером будет подключен резервный и окажется, что поврежденные данные
> есть в неповрежденном виде на резервном, zfs поправит их на основном,
> как он поступает в случае, если в момент обнаружения ошибки доступны оба
> зеркала. Если мое предположение неправильно, то, разумеется, такие
> неочевидные действия совершенно не нужны, достаточно zfs send (-I) -R.
> Но вдруг?..
>
>


Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Alex Kicelew  [2017-07-16 21:02]:
>2) дожидаемся окончания ресилвера, однократно делаем этот диск
>загрузочным, говорим ему zpool offline и отсоединяем его; пул остается в
>degraded state, но полностью работоспособный (в этом моменте я уверен не
>до конца, и хотелось бы выслушать его подтверждение или опровержение);

Да, всё верно.

>Цель этих нетривиальных действий: если в процессе эксплуатации основного
>диска (когда резервный отключен) на нем возникнет checksum error, есть
>предположение (в котором я как раз совершенно не уверен), что когда
>вечером будет подключен резервный и окажется, что поврежденные данные
>есть в неповрежденном виде на резервном, zfs поправит их на основном,
>как он поступает в случае, если в момент обнаружения ошибки доступны оба
>зеркала.

Тоже всё верно. Но есть засада. Время от времени ZFS делает checkpoint
-- обновляет überblock ссылающийся на самое свежее дерево метаданных. У
этого checkpoint есть, грубо говоря, timestamp, который только
увеличивается. Во время вставки диска для resilvering он пытается понять
не был ли он частью этого пула и если был, то он понимает насколько
checkpoint-ов он "отстал" от основного. Найдя в основном поле старый
checkpoint, он может создать "diff", который будет заresilverен. Но если
прошло достаточно большое время, то настолько старого checkpoint-а не
будет и он вынужден будет делать resilvering полностью всех данных с
нуля, ведь он же не может "вечно" хранить все прошлые известные ему
checkpoint-ы/überblock-и. Я точно не уверен, но вот терзают смутные
сомнения что он будет хоть как-то смотреть на данные которые там всё же
были -- поэтому такой старый диск для него будет как пустой.

Кол-во checkpoint-ов на пуле вроде как фиксировано и что-то порядка
полутысячи (где-то слышал). То есть минуты отключенного состояния он
конечно переживёт спокойно, но вот часы уже навряд ли.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Alex Kicelew  [2017-07-16 21:02]:
>2) дожидаемся окончания ресилвера, однократно делаем этот диск
>загрузочным, говорим ему zpool offline и отсоединяем его; пул остается в
>degraded state, но полностью работоспособный (в этом моменте я уверен не
>до конца, и хотелось бы выслушать его подтверждение или опровержение);

Но похожий хак можно например использовать для дефрагментации диска.
Вообще с ней проблем быть не должно если всегда имеется запас
достаточного количества свободного места (которое можно зарезервировать
например как-то так: zfs set reservation=XXXG mypool/reserved), но
всякое может быть. Так вот resilvering делается не как в RAID-е
байт-в-байт, а записывая на диск сериализованное представление
diff-а/данных: поэтому в зеркале на дисках данные могут лежать очень по
разному и с очень разной степень фрагментации. Добавляем диск-зеркало:
zpool attach mypool mydisk-first mydisk-second, ждём resilvering, потом
делаем *detach* основного диска: zpool detach mypool mydisk-first --
массив не будет в degraded состоянии и в нём будет хорошо
дефрагментированный диск. Процедуру можно повторить чтобы всё же
оригинальный диск был в pool-е. В отличии от zfs send/recv -- не нужно
систему переводить в offline, всё прозрачно работает.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Vasiliy P. Melnik  [2017-07-16 21:45]:
>так с данными лучше не поступать - проще использовать рсинк

Как минимум, zpool scrub может сообщить какие именно файлы повреждены и
из бэкапа их взять можно будет. Один раз у меня, когда внешний жёсткий
диск начал сыпаться, как-раз scrub показал что вот такой и такой файлы
биты -- взял из прошлого бэкапа.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Vasiliy P. Melnik
>
> Но похожий хак можно например использовать для дефрагментации диска.


далась вам эта фрагментация, сказали держать 20% свободного места и все
будет хорошо.


Re: зеркальный бэкап ZFS

2017-07-16 Thread Alex Kicelew
On 07/16/17 21:43, Vasiliy P. Melnik wrote:
> Уравнение со слишком многими неизвестными и слишком большим количеством
> если.
> 
> так с данными лучше не поступать - проще использовать рсинк, и лучше
> складывать на ехт4, ибо инструментов рекавери с зфс-а нет, а один раз я уже
> был в ситуации, когда очень бы они пригодились

А что имеется в виду под инструментами рекавери? Боюсь, что в случае
одновременной смерти как основного, так и бэкапного дисков я навряд ли
смогу что-либо сделать, даже если они оба будут под extN.

Что касается риска... Я допускаю, что у zfs он выше. Но раз уж я в
качестве эксперимента на нее перешел, то хотелось бы получить от этого
эксперимента максимум экспириенса. :) Все же бОльшая часть (хотя и не
все) данных у меня автоматически синхронизируется между всеми доступными
машинами (две домашние и две рабочие), а бэкап нужен в 75% для того,
чтобы не возиться с ручным сбором этих данных со всех машин. И как раз в
случае ноута -- чтобы было можно просто загрузиться с бэкапного винта, и
все.



Re: зеркальный бэкап ZFS

2017-07-16 Thread Vasiliy P. Melnik
>
> Как минимум, zpool scrub может сообщить какие именно файлы повреждены и
> из бэкапа их взять можно будет. Один раз у меня, когда внешний жёсткий
> диск начал сыпаться, как-раз scrub показал что вот такой и такой файлы
> биты -- взял из прошлого бэкапа.
>

У нас наверное просто разный подход к резервированию критично важных
данных: как показала недавняя у нас ситуация с шифровальщиком - бекапов
много не бывает. И лучше разных и в разных местах


Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Vasiliy P. Melnik  [2017-07-16 21:59]:
>> Как минимум, zpool scrub может сообщить какие именно файлы повреждены и
>> из бэкапа их взять можно будет. Один раз у меня, когда внешний жёсткий
>> диск начал сыпаться, как-раз scrub показал что вот такой и такой файлы
>> биты -- взял из прошлого бэкапа.
>
>У нас наверное просто разный подход к резервированию критично важных
>данных: как показала недавняя у нас ситуация с шифровальщиком - бекапов
>много не бывает. И лучше разных и в разных местах

Я не понял в чём она у нас разная и какой у вас подход.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Alex Kicelew
On 07/16/17 21:43, Sergey Matveev wrote:
> Тоже всё верно. Но есть засада. Время от времени ZFS делает checkpoint
> -- обновляет überblock ссылающийся на самое свежее дерево метаданных. У
> этого checkpoint есть, грубо говоря, timestamp, который только
> увеличивается. Во время вставки диска для resilvering он пытается понять
> не был ли он частью этого пула и если был, то он понимает насколько
> checkpoint-ов он "отстал" от основного. Найдя в основном поле старый
> checkpoint, он может создать "diff", который будет заresilverен. Но если
> прошло достаточно большое время, то настолько старого checkpoint-а не
> будет и он вынужден будет делать resilvering полностью всех данных с
> нуля, ведь он же не может "вечно" хранить все прошлые известные ему
> checkpoint-ы/überblock-и. Я точно не уверен, но вот терзают смутные
> сомнения что он будет хоть как-то смотреть на данные которые там всё же
> были -- поэтому такой старый диск для него будет как пустой.
> 
> Кол-во checkpoint-ов на пуле вроде как фиксировано и что-то порядка
> полутысячи (где-то слышал). То есть минуты отключенного состояния он
> конечно переживёт спокойно, но вот часы уже навряд ли.
> 

Ага, спасибо. Об этом я не знал. На самом деле такой способ уже был
проверен (перед тем, как спрашивать о его безопасности я хотел убедиться
хотя бы в том, что он осуществим физически), и на сутки чекпойнтов явно
хватает (первичный ресилверинг был около 4х часов, последующие -- 5-10
минут), но правильно ли я понимаю, что худшее, что я получу при
превышении количества имеющихся чекпойнтов -- это необходимость снова
ресилверить 4 часа вместо 5 минут?



Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Alex Kicelew  [2017-07-16 22:11]:
>правильно ли я понимаю, что худшее, что я получу при
>превышении количества имеющихся чекпойнтов -- это необходимость снова
>ресилверить 4 часа вместо 5 минут?

Да, всё верно.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: зеркальный бэкап ZFS

2017-07-16 Thread Sergey Matveev
*** Vasiliy P. Melnik  [2017-07-16 21:55]:
>далась вам эта фрагментация, сказали держать 20% свободного места и все будет 
>хорошо.

В ZFS её легко можно получить просто медленно записывая файл. Да, можно
потом сделать cp file file_ && mv file_ file, но а если файлов много и
мало ли какие ещё режимы работы будут? Всякое может быть, и медленная
запись файла не позволит его быстро прочитать это факт.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



Re: tmux на локальной машине (was Xfce Terminal Emulator)

2017-07-16 Thread Jurgen V. Uzbekoff
On Fri, Jul 14, 2017 at 12:02:21PM -0400, Tim Sattarov wrote:
> On 14/07/17 01:15 AM, Jurgen V. Uzbekoff wrote:
> > Свои пять копеек. Про screen, но не суть:
> Привет ! давно тебя здесь не видел :)

Ну так я в режиме Read-Only обычно :)

Тут за выходные умные люди столько всего написали хорошего, чем я никогда
даже и не думал пользоваться… Но ты спросил — я рассказываю про личный
опыт.

> > 1. Есть несколько конкретных табов с конкретными задачами — переключаюсь в
> > нужный на автопилоте;
> > 2. Очень полезен большой scrollback и поиск/копирование в нём;
> А разве в эмуляторе этого нет ? Зачем screen ?

Может в каком-то эмуляторе это и есть. В моём текущем я не обнаружил (а до
сегодняшнего дня даже и не пытался искать). И то, что я не пытался искать
эту функцию не только в этом terminal-emulator, но и в других, в которых я
запускал screen, мне очень нравится — мне в любом эмуляторе было
достаточно привычного функционала screen.

> > 3. В terminal-emulator есть и свои табы — их по числу постоянных удалённых
> > соединений, плюс один локальный; а в каждом из них свой набор
> > мультиплексированных терминалов (не совсем локальный сценарий, каюсь);
> я в своих скриптах, когда нужно заходить на машину(ы) за бастионом
> (jump-server, bastion) открываю локальную сессию screen с подключением к
> бастиону и подключением к остальным серверам из списка. Удобно да. Плюс
> журналированине сессии в файл и портирование скрипта на другие платформы
> становится немного легче.
> Ну и стандартное использование: открыть screen для критичной/долгой
> операции на удалённом сервере, "штоб не порвалось посередине"
> 
> Мой вопрос больше, про: какая разница
> - запустить терминал с кучей вкладок и перейти в нужные папки/запустить
> нужную программу
> или
> - запустить локальный screen/tmux всё с теми же программами ?

В screen автомагически имеешь набор табов, где за меня уже перешли в нужные
папки и запустили нужные программы. Кроме того, всё-таки, очень полезно
иметь возможность подключиться к этому набору откуда угодно и чувствовать
себя как дома :)

> (это наверное подразумевает, графический терминал, в то же время
> tmux/screen менее требовательны)

И это тоже. Тут даже бОльшее преимущество в том, что собственно от
терминала не требуется практически ничего — он всего лишь должен иметь
возможность запустить screen.

-- 
IOpuk.