#linux #ubuntu #dd
Уважаемые коллеги, я столкнулся с такой странностью. В виртуальной машине 2Gb ram, 25Gb диск, 1 ядро запущена Ubuntu 16.04 и установлен GitLab. Чтобы исключить потерю данных за большое время, я ночью выключаю виртуалку и архивирую образ диска целиком. И я вижу, что архивы какие то большие получаются. (больше, чем показывает команда df как использованный объем диска) "Ага!" - подумал я. Значит, на диске есть какие то данные, которые лежат на неиспользованной области, дай ка я заполню ее нулями. Решаю создать один большой заполненный нулями файл при помощи команды sudo dd if=/dev/zero of=file0 bs=1G count=18 Объем файла совершенно точно меньше свободного места на диске. Но сколько я ни пробовал - команда ни разу команда не доработала до конца, где то в процессе появляется надпись "Killed", и ее выполнение прекращается. Смотрите скриншот. Я подозреваю, что где то в убунте есть монитор, который отстреливает процессы, которые жрут слишком много ресурсов (думаю, в моём случае - памяти он много жрет). Но где про это прочитать? Особенно - про настройку системы, чтобы она была более терпимой к превышению памяти и просто позволяла процессу уйти в своп. Это актуально и для других процессов, не только dd Спасибо.
Ответы
Ответ 1
Возможно dd попало под OOMkiller. http://shtsh.blogspot.com/2012/04/oom-killer.htmlОтвет 2
Господа, спасибо за советы. Вы мне очень помогли. Привожу результат для полноты картины. В /var/log/syslog я нашел такую запись: Jun 16 21:36:12 GitLab0 kernel: [70913.827774] dd invoked oom-killer: gfp_mask=0x24280ca, order=0, oom_score_adj=0 ... Jun 16 21:36:13 GitLab0 kernel: [70913.828116] Killed process 13674 (dd) total-vm:1055920kB, anon-rss:638888kB, file-rss:1280kB После отключения oom-killer путём записи строки vm.overcommit_memory=2 в конец файла /etc/sysctl.conf oom-killer приходить перестал. Но... GitLab тоже перестал работать: web-морда показывала ошибку 502, а команда top показывала пару команд bundle, запущенных от пользователя git. Как я прочитал, причиной такого поведения системы может быть то, что при отключенном oom новые процессы не могут запуститься, потому что ядро не даёт им памяти (наверное, это звучит безграмотно, но здесь написано лучше: https://superuser.com/questions/1150215/disabling-oom-killer-on-ubuntu-14-04/1150229) Еще полезное описание на русском языке: здесь (только нужно пропустить абсолютно бессмысленное начало и читать тот кусок текста, который на сером фоне)Ответ 3
Следует испльзовать меньший размер блока. OOM убивает dd из-за недостатка памяти. Для файла в 18ГБ вот такая команда более правильная. sudo dd if=/dev/zero of=file0 bs=64М count=288 Размер блока лучше выбать сопоставимы с размером кеша диска, на который ведется запись. На старых дисках лучшая производительность достикалась при блоке 20М. На raid аппаратном имеет смысл использовать блок с размер кеша раид, но нужно учитывать ограниченное количество оперативной памяти.
Комментариев нет:
Отправить комментарий