November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Friday, August 18th, 2017 05:53 pm

Задачка по сути настолько элементарная, что я даже и ответ писать не буду, сами догадайтесь..
Но её как раз можно использовать для проверки квалификации сисадминов ;)

Условие:
Вы запустили в линуксе копирование большого объёма данных (скажем, с одного диска на другой) с помощью команды dd.
Чтобы данные на ходу не менялись, этот dd запустили в однопользовательском режиме, в котором у вас всего один терминал.
Данных много, поэтому dd копирует их довольно долго.

Вопрос:
Как посмотреть, сколько данных уже скопировалось, и с какой скоростью происходит копирование, чтоб можно было посчитать, сколько примерно времени ещё придётся подождать до конца?

Подсказка:
dd умеет выдавать текущее состояние — сколько блоков уже прочиталось, сколько записалось, какой у них общий объём, и какая выходит скорость копирования — если в него послать сигнал USR1.

Помнится, в древние времена во FreeBSD это можно было сделать, просто нажав Ctrl-T, но в нынешнем линуксе это не работает. Послать сигнал из другого терминала тоже нельзя, ибо терминал только один. Зайти в эту машинку по сети тоже невозможно, ибо однопользовательский режим, сеть не подключена.

Так как же послать этот сигнал, если единственный имеющийся терминал занят этим самым dd?

P.S. Я щас сам как раз это и делаю, копируя один большой диск на другой ;)

Оригинал этой записи в личном блоге.

Friday, August 18th, 2017 05:53 pm (UTC)
^Z
pkill -USR1 ^dd$

Это сходу, а вот что ответ будет после fg я сразу не сообразил.


Edited 2017-08-18 05:56 pm (UTC)
Friday, August 18th, 2017 06:08 pm (UTC)
Вот за что я ненавижу линух.
Юниксообразная система. Примерно то же, что сыроподобный продукт.
Тьфу!
Friday, August 18th, 2017 07:14 pm (UTC)
не ответ, но

pv source > target

pv source |dd of=target count ....
Friday, August 18th, 2017 09:06 pm (UTC)
я pv в основном использую не по назначению, я ограничиваю скорость ввода вывода.

$MYSQLDUMP $db |/usr/bin/pv -q --rate-limit 4M|gzip -4|
Saturday, August 19th, 2017 12:45 am (UTC)
иногда чтобы приложениям хоть какой-то диск доставался, в этом конретном случае этот сервер (ec2.micro) занимается примерно всем, а mysql это сервис амазона (RDS), забивалась сеть (выедались все network credits и сервер переставал вообще отзываться), потому что сервер одновремено сосал из rds, складывал бекап S3 (gzip -4|aws s3 cp - ), параллельно бекапил в s3 с помощью rsnapshot другие сервера, и сосал и бекапил jira и confluence и мониторил пару тыщ хостов nagios-м. Поэтому я всем бекапам задушил ввод/вывод, теперь они бекапят дольше, но друг другу не мешают и куча bandwidth свободна.
Friday, August 18th, 2017 09:53 pm (UTC)
Ну, да, разница в наличии и неналичии SIGINFO.
Saturday, August 19th, 2017 09:09 am (UTC)
dd status=progress до фри еще не добрался разве?
Saturday, August 19th, 2017 02:44 pm (UTC)
Ctrl-T кстати прекрасно работает в MacOS X, что не удивительно.
Saturday, August 19th, 2017 07:35 pm (UTC)
Это был британский VPN :) Сейчас в отпуске около Барселоны. В этих апартах интернет странный временами, а через VPN работает нормально.
Sunday, August 20th, 2017 09:07 pm (UTC)
всё там же, где и раньше.
надо бы валить, как все. в одном Лондоне вон уже десятки бывших коллег. да как-то всё не складывается пока.