LINUX.ORG.RU

Избранные сообщения Gintoki

Подготовка к интервью на sre

 , ,

ЛОР, буквально через три недели еду на онсайт интервью на sre. Как можно подготовиться? Что почитать?

Уже читаю SRE book, linux kernel development и cracking the coding interview.

Перемещено leave из development

redvicka
()

Подскажите, пожалуйста, хорошие книги по полному курсу элементарной математики.

 

Подскажите, пожалуйста, хорошие книги по полному курсу элементарной математики. Учусь в школе, да математику подзабыл. Так ещё я в 9-ом классе, а нужен мне весь курс. Я читал о серии книг М.М.Медынского - «Полный курс элементарной математики в задачах и упражнениях». Там 11 томов чистых знаний, но на практике 4. При этом 1-ый, 2-ой, 3-ей и… 5-ый. Никто не знает причину подобных урезаний? Книги-то хорошие. Нужна математика мне для личных увлечений. Чем больше информации, тем лучше. Желательно, ещё задачник посоветуйте, пожалуйста.

Smorodich
()

Требуется Linux Инженер (NOC) в Qrator Labs

 

Привет! Мы Qrator Labs (https://qrator.net/ru/) и мы ищем инженера в отдел эксплуатации.

Предстоящие задачи:

  1. Внедрение CI/CD для основных и служебных сервисов компании
  2. Обеспечение круглосуточной доступности сервисов
  3. Мониторинг различных систем и сервисов компании
  4. Реагирование на инциденты
  5. Capacity planning
  6. Проведение регламентных работ, работ с поставщиками, работ с заказчиками
  7. Документирование результатов своей работы и написание инструкций для дежурных инженеров

Что нужно знать:

  1. Знание и понимание того, как работает Linux (в идеале Gentoo и Alpine)
  2. Знание и понимание того, как работает виртуализация (KVM/Qemu, oVirt)
  3. Знание и понимание того, как работают контейнеры (LXC, Docker)
  4. Знание и понимание того, как работают распределенные системы
  5. Знание и понимание того, как работают системы развертывания конфигураций, их плюсы и минусы (Ansible, Salt, Puppet, Chef)
  6. Знание и понимание того, как работают реляционные и нереляционные БД в том числе и TSDB (MySQL, PostgreSQL, Clickhouse, InfluxDB)
  7. Имеете опыт устранения неисправностей и профилирования ОС под различные задачи
  8. Имеете опыт внедрения систем мониторинга и мониторинга как процесса
  9. Имеете опыт работы с бэкапами как с процессом
  10. Имеете опыт работы с git
  11. Любовь к автоматизации

Будет плюсом:

  1. Знание и понимание того, как работает Интернет.
  2. Навыки программирования на Python, Ruby или Perl

Что предлагаем:

  1. Полностью белая заработная плата
  2. Уровень дохода от 1800000 до 2400000 в год
  3. Офис г. Москва, м. Беговая/Шелепиха
  4. Оплачиваемые обеды, английский язык, ДМС, обучение.
  5. Отсутствие бюрократии и возможность развиваться, внедрять. Мы очень ценим инициативу
  6. Классный коллектив, который работает много лет вместе и безумно любит, то что делает

Контакты для связи: 8(926)456-75-73 E-mail: jk@qrator.net

Jobfor
()

sed, работать только в одной [секции] ini-файла

 ,

Привет, $LOR_USER! Есть две команды на баше:

1. отключение вуфайнда из скрипта:

sed -i "/^available\\s*=/s/=.*/= false/" /usr/local/vufind/local/config/vufind/config.ini
2. включение вуфайнда из скрипта:
sed -i "/^available\\s*=/s/=.*/= true/" /usr/local/vufind/local/config/vufind/config.ini

Теперь надо доработать их, чтобы они не по всему ini-файлу искали и редактировали, а только в секции [System], то есть редактировать после строки [System], но до [следующей-секции]. Как это сделать?

Infra_HDC
()

Пропадает сеть

 , ,

Временами бывает что сервер(Debian 9.4) недоступен по сети, не знаю то ли у провайдера (сапорт пока молчит), то ли на сервере проблемы.

Симптомы
* Zabbix(на этом же сервере) показывает падение трафика почти до 0
* PPS тоже 0
* Пинг с другого сервера FAIL
* Нагрузка на проц падает
* netstat -na | grep SYN_RECV | wc -l = 502
* dropped\missed\fifo по нулям (network-top)
* В syslog пусто

Единственная аномалия это возросшие записи conntrack c ~7000 до 441 389 записей с флагом SYN_SENT UNREPLIED. Но переполнения таблицы не регистрируется.
/etc/sysctl.conf

net.core.somaxconn = 65535
net.core.netdev_max_backlog = 10000
net.core.netdev_budget = 600
net.netfilter.nf_conntrack_max=1048576
net.netfilter.nf_conntrack_tcp_loose = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies = 1
net.netfilter.nf_conntrack_tcp_timeout_established = 7200


Что может быть? Похоже на syn flood, но в syslog пусто и нагрузки на проц нет

gobot
()

Установка FreeBSD на раздел реального диска из-под другой ОС

 , ,

Небольшой HOWTO, как быстро установить FreeBSD из-под GNU/Linux без лишних действий. Записал по ходу установки, возможно, кому-нибудь пригодится.

Входные данные в моём случае:

  • Есть неиспользуемый раздел на диске, разбитом через MBR. (Большая часть места на накопителях занята LVM-ом с кучей томов.)
  • Весь раздел целиком буду монтировать в корень, не используя разбивку bsdlabel. Система ставится больше для экспериментов, чем для реальной работы, так что нет смысла заморачиваться с точной разметкой.
  • По той же причине в качестве файловой системы использую UFS, а не ZFS.
  • Хочется весь процесс провести из-под основной ОС, не тратя время на создание загрузочной флешки.
  • В роли первичного загрузчика буду использовать grub, поэтому BSD-специфичный boot loader нас не интересует.

На одном из дисков я заранее зарезервировал четыре 20-гигабайтных раздела под эксперименты с разными ОС. На один из таких разделов установлю FreeBSD:

[root@aquila ~]# fdisk -l /dev/sda
Диск /dev/sda: 698,7 GiB, 750156374016 байт, 1465149168 секторов
Disk model: Hitachi HTS54757
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер I/O (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: dos
Идентификатор диска: 0xa33b6c03

Устр-во    Загрузочный    начало      Конец    Секторы Размер Идентификатор Тип
/dev/sda1  *                2048    6146047    6144000     3G            83 Linux
/dev/sda2                6146048  105357311   99211264  47,3G             7 HPFS/NTFS/exFAT
/dev/sda3              105357312 1465147391 1359790080 648,4G             5 Расширенный
/dev/sda5              105359360  146319359   40960000  19,5G            83 Linux
/dev/sda6              146321408  187281407   40960000  19,5G            83 Linux
/dev/sda7              187283456  228243455   40960000  19,5G            83 Linux
/dev/sda8              228245504  269205503   40960000  19,5G            83 Linux
/dev/sda9              269207552 1465147391 1195939840 570,3G            8e Linux LVM

Скачиваем установочный образ:

$ axel -a 'https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz'
$ xz -d FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz

Установку будем проводить из-под qemu, работающему от имени пользователя. Чтобы сможно было подключить физический диск к qemu, нужно сменить владельца /dev/sda:

# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 апр 15 14:20 /dev/sda
# chown vadim:disk /dev/sda
# ls -l /dev/sda
brw-rw---- 1 vadim disk 8, 0 апр 15 16:12 /dev/sda
Я знаю, что идеологически правильно было бы добавить пользователя в группу disk, но мне как-то пофиг. После перезагрузки система забудет, что права на /dev/sda были отданы пользователю, а из группы пользователя надо удалять вручную.

Запускаем виртуальную машину с установочным образом и нужным физическим диском:

$ qemu-system-x86_64 -m 2048 -hda /dev/sda -cdrom FreeBSD-12.0-RELEASE-amd64-disc1.iso -boot menu=on

Выбираем CDROM в качестве загрузочного устройства. Ждем появления Welcome Menu, выбираем <Shell>. Инсталлятор нам не понадобится.

Посмотрим, какие разделы увидела система:

# ls /dev/ad*

И более подробно:

# gpart list | less

Виртуальная машина имеет прямой доступ к реальному /dev/sda, так что нужно внимательно перепроверять все свои действия по поводу разделов диска.

Выяснили, как в гостевой ОС называется нужный раздел, создаем на нём файловую систему:

# newfs -U -L anjalifbsd /dev/ada0s5

  • Опция -U указывает задействовать механизм Soft Updates.
  • Опция -L задаёт имя тома ФС.

Монтируем созданную ФС:

# mkdir /tmp/new_root
# mount /dev/ada0s5 /tmp/new_root

Теперь нужно распаковать операционную систему на новый раздел:

# cd /tmp/new_root
# tar xvf /usr/freebsd-dist/base.txz
# tar xvf /usr/freebsd-dist/kernel.txz

Система занимает меньше гигабайта:

# df -h .
Filesystem      Size     Used    Avail  Capacity  Mounted on
/dev/ada0s5      19G     930M      16G      5%    /tmp/new_root

Правим fstab. Честно говоря, я не знаю деталей о процессе инициализации FreeBSD и не уверен, что это обязательно:

echo '/dev/ada0s5 / ufs rw 1 1' > etc/fstab
echo 'tmpfs /tmp tmpfs rw 0 0' >> etc/fstab

Выключаем виртуальную машину:

# poweroff

На реальной машине правим конфиг grub.

У меня grub установлен на отдельном разделе таким образом, что установка любого нового слишком умного дистрибутива, перезаписывающего конфиг grub-а, не повлияет на этот загрузчик. В загрузочном меню этого отдельного grub-а указано, как грузить установленные ОС, внутри которых может работать уже собственный загрузчик дающий выбрать версию ядра и т.п. Например:

menuentry "Artix Sonata" {
	configfile (lvm/aq-aq_artix)/boot/grub/grub.cfg
}

menuentry "Archlinux Aquila" {
	configfile (lvm/aq-aq_archlinux)/boot/grub/grub.cfg
}

menuentry "Voidlinux Epsilon" {
	multiboot (lvm/aq-aq_voidlinux)/boot/grub/i386-pc/core.img
}

Загрузчик FreeBSD я не задействовал, так что в моём случае достаточно добавить menuentry для прямой загрузки ядра FreeBSD:

menuentry "FreeBSD Anjali" {
	insmod part_msdos
	insmod ufs2
	set root=(hd0,5)
	kfreebsd /boot/kernel/kernel
	kfreebsd_loadenv /boot/device.hints
	set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s5
	set kFreeBSD.vfs.root.mountfrom.options=rw
	boot
}

На этом всё. Установка сводится к распаковке архива с системой и запуску ядра любым подходящим загрузчиком. Даже проще, чем установить Арч.

Первые шаги в системе:

  • Имя хоста задаётся через hostname(1).
  • Управление пользователями и группами осуществляется при помощи pw(8).
  • Про настройку локали см. login.conf(5). В конфиге уже прописан вариант для русской локали, так что достаточно указать login class пользователя равным russian.
  • wpa_supplicant настраивается стандартно через конфиг, плюс надо указать пару строчек в rc.conf.
  • Пакеты ставятся при помощи pkg(8).
Deleted
()

SELinux (создание модуля)

 , , ,

Доброго времени суток. Нужна помощь. Создаю SELinux модуль для ПО, доступ к которому сможет получить обычный пользователь.Я перечитал уже много мануалов, применял на практике, собирал Франкенштейна из audit2allow (для извлечения опыта из ошибок). Но по ходу работы вылезают крутые «фичи». В общем буду говорить за себя, и мне кажется, что я где то заблуждаюсь в написании модуля. Взял 2 статьи на Хабре (ссылочки ниже) и по ним пробовал собрать модуль. И как то безуспешно, а об этом расскажу ниже. Тупик возник на втором гайде, когда сделал все строго по пунктам, а результат получился совсем другой.

Первый гайд - https://habr.com/ru/post/320100/ Второй гайд - https://habr.com/ru/post/322476/

Введение: Необходимо наложить контексты на ПО, создать пользователя (login=ovdcoadm; seuser=ovdcoadm_u), выделить ему роль (ovdcoadm_r) и в модуле объявить тип (ovdco_t) позволив ему управлять нашим ПО, ходить по SSH, да и вообще работать на сервере напрямую.

Что я собираю:

#ovdco.te

policy_module(ovdco, 1.0.0)

# объявляем новую роль
role ovdcoadm_r;
# тип для процесса
type ovdco_t;
# тип для исполняемого файла
type ovdco_exec_t;
# тип для конфиг-файлов
type ovdco_conf_t;
# тип для лог-файла
type ovdco_log_t;
# тип для временных файлов
type ovdco_tmp_t;
# тип для порта, который слушает ovdco ( протокол binkp )
type binkp_port_t;





# стандартный шаблон для НЕ-админа
userdom_unpriv_user_template(ovdcoadm)
#userdom_restricted_user_template(myguest)
# разрешаем dac_override
allow ovdco_t self:capability { dac_override dac_read_search };
# разрешаем sudo
sudo_role_template(ovdcoadm, ovdcoadm_r, ovdco_t)

# Макрос приложения: добавляет тип ovdco_t в список приложений
# и разрешает ему стартовать из типа  ovdco_exec_t
application_domain(ovdco_t, ovdco_exec_t)
# Макрос демона: добавляет тип ovdco_t в список демонов,
# разрешает его запускать через systemd
# и назначает переход: если systemd запустит файл с типом ovdco_exec_t,
# то процесс получит тип ovdco_t
init_daemon_domain(ovdco_t, ovdco_exec_t)
# разрешает типу ovdco_t исполнять стандартные бинарники ( /bin, /usr/bin )
corecmd_exec_bin(ovdco_t)
# разрешает типу ovdco_t подключать библиотеки
libs_use_ld_so(ovdco_t)
# разрешает типу ovdco_t читать состояние системы ( cpu, memory )
kernel_read_system_state(ovdco_t)
# разрешает типу ovdco_t писать в /tmp
files_rw_generic_tmp_dir(ovdco_t)
# разрешает типу ovdco_t читать конфиг сети ( /etc/resolv.conf итд )
sysnet_read_config(ovdco_t)
# разрешает типу ovdco_t получать случайные числа из /dev/(u)random
dev_read_rand(ovdco_t)
# разрешает типу ovdco_t получать аттрибуты файловой системы ( свободное место )
fs_getattr_xattr_fs(ovdco_t)
# разрешает типу ovdco_t делать dns resolve
sysnet_dns_name_resolve(ovdco_t)
# разрешает типу ovdco_t ходить в /var/log ( r/o )
logging_search_logs(ovdco_t)
# назначает правило: логи, которые создает процесс ovdco_t, 
# будут иметь тип ovdco_log_t
logging_log_filetrans(ovdco_t, ovdco_log_t, file)
# назначает правило: tmp-файлы, которые создает процесс ovdco_t, 
# будут иметь тип ovdco_tmp_t
files_poly_member_tmp(ovdco_t, ovdco_tmp_t)
# разрешает ovdco_t делать bind() на любой адрес
corenet_tcp_bind_generic_node(ovdco_t)
# разрешает ovdco_t общаться с postgresql по unix-сокету
postgresql_stream_connect(ovdco_t)
# разрешает ovdco_t общаться с postgresql по сети
corenet_tcp_connect_postgresql_port(ovdco_t)


# макрос gen_user создает пользователя так-же, как semanage user -a
# он всегда должен быть в самом конце файла
gen_user(ovdcoadm_u, ovdcoadm, ovdcoadm_r, s0, s0)

Как мы видим - он должен создавать se-пользователя, роль, и несколько типов. И да! Он компилируется, все создает!

semanage * -l

[root@localhost ~]# semanage login -l

Login Name SELinux User MLS/MCS Range Service

__default__ user_u s0 * ovdcoadm ovdcoadm_u s0 * root root s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 *

Local customization in /etc/selinux/targeted/logins ovdcoadm ovdcoadm_u s0 xdm sshd

В файле /etc/selinux/targeted/logins/ovdcoadm

cat /etc/selinux/targeted/logins/ovdcoadm sshd:ovdcoadm_u:s0 xdm:ovdcoadm_u:s0 ovdco:ovdcoadm_u:s0

[root@localhost ~]# semanage user -l

Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux Roles

guest_u user s0 s0 guest_r ovdcoadm_u user s0 s0 ovdcoadm_r root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r sysadm_u user s0 s0-s0:c0.c1023 sysadm_r system_u user s0 s0-s0:c0.c1023 system_r unconfined_r unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r user_u user s0 s0 user_r ovdcoadm_r xguest_u user s0 s0 xguest_r

В файле /etc/selinux/targeted/contexts/users/ovdcoadm_u

[root@localhost ~]# cat /etc/selinux/targeted/contexts/users/ovdcoadm_u system_r:local_login_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:remote_login_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:sshd_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:crond_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:xdm_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_su_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_sudo_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:initrc_su_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_t:s0 ovdcoadm_r:ovdco_t:s0 sysadm_r:sysadm_su_t:s0 ovdcoadm_r:ovdco_t:s0 sysadm_r:sysadm_sudo_t:s0 ovdcoadm_r:ovdco_t:s0

По идее все ровно встало, доступ к SSH есть и не только к нему.

Но на выходе когда мы заходим под этим пользователем, то его не пускает, a2a ничего не показывает по этой проблеме. Чтобы ничего не сломалось я работаю в permissive режиме. Вот как меня определяет машина, когда авторизуюсь через SSH:

id

[ovdcoadm@localhost ~]$ whoami ovdcoadm [ovdcoadm@localhost ~]$ id uid=1003(ovdcoadm) gid=1003(ovdcoadm) groups=1003(ovdcoadm) context=system_u:system_r:unconfined_t:s0-s0:c0.c1023

Как мы видим - она не может меня определить и выкидывает в unconfined_t. Вроде бы все объявлено, все делал строго по гайдами. А почему так - я не знаю. И это один из важных вопросов. Если есть предложения, то пишите. Если нужна дополнительная информация, то с удовольствием ее предоставлю!

PirateTM
()

Запуск qemu виртуалки в отдельной tty консоли

 

На ноуте установлен Debian 9 и virt-manager. Интересует следующий вопрос: возможно ли работать с виртуалкой в отдельной X-сессии ? Собственно для чего нужно: на хост системе у меня только виртуалки, для работы и учебы отдельные системы, не совсем удобно между ними переключаться, особенно при работе в полноэкранном режиме. Хочу сделать так чтобы на хосте залочил экран, нажал ctrl+alt+f4 и попал в гостевую систему.

Тут http://dmzik.blogspot.com/2013/05/virtualbox-tty.html автор проделал то что мне нужно с virtualbox-ом , как такое реализовать в qemu/virt-manager ?

Krab228
()

Через 332 дня аптайма затупил NGinx. В чем может быть причина?

 ,

Сайт на Nginx + PHP5.6, в последние пару месяцев было ~5000 уникумов в день, ~7000 страниц.

# uptime
 10:31:36 up 332 days, 21:49,  1 user,  load average: 2.12, 2.12, 2.09


Сегодня Nginx выдал ошибку:

504 Gateway Time-out nginx/1.6.2


По htop вижу, что память выжрал php-fpm. Всего на сервере 1Gb, использовано:

# free -h
             total       used       free     shared    buffers     cached
Mem:          1.0G       923M        83M        68M        65M       713M
-/+ buffers/cache:       145M       862M
Swap:           0B         0B         0B


У php-fpm вижу 1 процесс со статусом D. Процесс, имеющий статус S может получить статус D спустя некоторое время. Пример с процессом 23265:

# ps aux | grep php-fpm
root       460  0.0  1.3 105288 14024 ?        Ss    2018  33:25 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 23232  0.6  3.3 116828 34536 ?        S    09:20   0:33 php-fpm: pool www                                 
www-data 23237  0.6  3.3 116860 34648 ?        S    09:21   0:29 php-fpm: pool www                                 
www-data 23240  0.7  3.2 116780 33752 ?        S    09:22   0:32 php-fpm: pool www                                 
www-data 23264  0.5  3.3 116568 34312 ?        D    09:27   0:23 php-fpm: pool www                                 
www-data 23265  0.6  3.3 116816 34748 ?        S    09:27   0:26 php-fpm: pool www                                 
root     23992  0.0  0.2   4556  2108 pts/0    S+   10:39   0:00 grep php-fpm

# ps aux | grep php-fpm
root       460  0.0  1.3 105288 14024 ?        Ss    2018  33:25 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 23232  0.7  3.3 116828 34536 ?        S    09:20   0:35 php-fpm: pool www                                 
www-data 23237  0.6  3.3 116676 34464 ?        S    09:21   0:31 php-fpm: pool www                                 
www-data 23240  0.7  3.2 116700 33816 ?        S    09:22   0:35 php-fpm: pool www                                 
www-data 23264  0.5  3.3 116568 34396 ?        S    09:27   0:26 php-fpm: pool www                                 
www-data 23265  0.6  3.3 116816 34748 ?        D    09:27   0:29 php-fpm: pool www                                 
root     24029  0.0  0.2   4556  2152 pts/0    S+   10:44   0:00 grep php-fpm


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

Хотя, перед ребутом я попробую перезапустить php-fpm, может и ребутиться ненадо. Но хотелось бы понять в чем причина 504-й ошибки.



Перемещено leave из web-development

Xintrea
()

UDP ddos

 ,

На сервер debian приходит udp ~100-600mbps входящий в связи с этим идут потери пакетов, увеличиваются задержки и прочие радости. В iptables добавлено

INPUT -p udp -j DROP

По последним счетчикам навалило 301K\734M(пакетов\трафика) за пару минут. Иногда доходило до 160Gb, в обычное время UDP кроме как от dns сервера нет.
Растет overruns:
flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
ether 0c:c4:7a:0c:70:8c  txqueuelen 1000  (Ethernet)
RX packets 157283928333  bytes 38784725568569 (35.2 TiB)
RX errors 0  dropped 0  overruns 13182248  frame 0
TX packets 269997924596  bytes 355284328974259 (323.1 TiB)
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



ethtool -S eno1 | grep err
rx_crc_errors: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_window_errors: 0
tx_deferred_ok: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
rx_errors: 0
tx_errors: 0
rx_length_errors: 0
rx_over_errors: 0
rx_frame_errors: 0
rx_fifo_errors: 13182248
tx_fifo_errors: 0
tx_heartbeat_errors: 0
rx_queue_0_csum_err: 5051
rx_queue_1_csum_err: 5119
rx_queue_2_csum_err: 4784
rx_queue_3_csum_err: 6293
rx_queue_4_csum_err: 4666
rx_queue_5_csum_err: 3269
rx_queue_6_csum_err: 4681
rx_queue_7_csum_err: 5341

tcpdump пишет
UDP, bad length 3010 > 1472

На сервере 1gpbs unlim, весь канал не забивается, но дропы идут огромные 60-70%, хотя iptables блочит весь UDP. Куда смотреть?

gobot
()

Bash: как прикрутить к read автодополнение (autocompletion) текста (команд) по нажатию TAB?

 ,

Есть bash скрипт который ожидает ввод с клавиатуры используя встроенную в bash команду «read». Вопрос в том как научить этот скрипт автодополнениям вводимого текста, например, по аналогии с таковым для функций в bash:

cdp() {
  local proj=~/dev/projects/
  builtin cd "$proj$1"
}

_my_cdp() {
    local proj=~/dev/projects/
    local i p
    COMPREPLY=()
    while IFS= read -r i; do
        printf -v p '%q' "${i#"$proj"}"
        COMPREPLY+=( "$p" )
    done < <(compgen -d -- "$proj$2")
}

complete -o nospace -F _my_cdp  cdp

Только автодополняться должны не пути в файловой системе, как в этом коде, а именно определенные произвольные слова (команды) прописанные в скрипте.

kilzhlik
()

Как удалить коммит в удаленном репозитории?

 

Сделал коммит. Не заметил как в него попала пара сотен МБт дерьмища. Потом запушил и тут я обнаружил свой косяк. Подскажите, как в удаленном и локальном репозитории удалить последний коммит с сохранением изменений в рабочей дирректории?

git reset --hard HEAD~1 неподходит, т.к. возвращает меня к комиту 3х месячной давности! Нужно удалить коммит, но чтобы все изменения в рабочей директории сохранились! Спасибо!

NkDev
()

Как правильно удалить диски из LVM

 

Добрый день.

Имею в системе 3 диска 2Тб, и два по 500 Гб.

root@htc:/home/sergvic# pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb6
  VG Name               root
  PV Size               27,94 GiB / not usable 0
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              7152
  Free PE               0
  Allocated PE          7152
  PV UUID               pugZVQ-I1oG-sUmt-NVqJ-JVFc-XGfL-yjtceQ

  --- Physical volume ---
  PV Name               /dev/sdb7
  VG Name               home
  PV Size               1,79 TiB / not usable 3,00 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              469718
  Free PE               0
  Allocated PE          469718
  PV UUID               0sU4ct-oR0t-6zKr-LqW9-cWNE-G2De-VGfiDW

  --- Physical volume ---
  PV Name               /dev/sda
  VG Name               home
  PV Size               465,76 GiB / not usable 4,02 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              119234
  Free PE               0
  Allocated PE          119234
  PV UUID               VffGme-lf7x-EdIk-ayeH-l9oF-R08D-VUbXWn

  --- Physical volume ---
  PV Name               /dev/sdc
  VG Name               home
  PV Size               465,76 GiB / not usable 4,02 MiB
  Allocatable           yes (but full)
  PE Size               4,00 MiB
  Total PE              119234
  Free PE               0
  Allocated PE          119234
  PV UUID               whC90V-qGlq-bCr2-QX2A-Ge3P-DbGd-GQWONL

root@htc:/home/sergvic# lvdisplay
  --- Logical volume ---
  LV Path                /dev/root/root
  LV Name                root
  VG Name                root
  LV UUID                RsLwt1-eAqf-3dp1-hx8W-SEfH-KQ0B-z98LcO
  LV Write Access        read/write
  LV Creation host, time htc, 2013-06-21 20:58:31 +0400
  LV Status              available
  # open                 1
  LV Size                23,28 GiB
  Current LE             5960
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/root/swap_2
  LV Name                swap_2
  VG Name                root
  LV UUID                5p2ulm-TtuW-6Rsl-1IxR-NHog-AImR-sWQo0t
  LV Write Access        read/write
  LV Creation host, time htc, 2013-06-21 20:59:28 +0400
  LV Status              available
  # open                 2
  LV Size                4,66 GiB
  Current LE             1192
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2

  --- Logical volume ---
  LV Path                /dev/home/home
  LV Name                home
  VG Name                home
  LV UUID                nnJ6tN-TDys-GFHf-CA3n-rmCd-aR5X-3YBLkI
  LV Write Access        read/write
  LV Creation host, time htc, 2013-06-21 21:04:14 +0400
  LV Status              available
  # open                 1
  LV Size                2,70 TiB
  Current LE             708186
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

root@htc:/home/sergvic# vgdisplay
  --- Volume group ---
  VG Name               root
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               27,94 GiB
  PE Size               4,00 MiB
  Total PE              7152
  Alloc PE / Size       7152 / 27,94 GiB
  Free  PE / Size       0 / 0
  VG UUID               lSWaRx-PRBI-qSgp-mzMO-0QGv-7OKw-xT7wOC

  --- Volume group ---
  VG Name               home
  System ID
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               2,70 TiB
  PE Size               4,00 MiB
  Total PE              708186
  Alloc PE / Size       708186 / 2,70 TiB
  Free  PE / Size       0 / 0
  VG UUID               3Ssnsi-wJtZ-5tnQ-E01F-9zCk-yItK-wVsAJa

root@htc:/home/sergvic#
root@htc:/home/sergvic# df -h
Файл.система          Размер Использовано  Дост Использовано% Cмонтировано в
udev                    420M            0  420M            0% /dev
tmpfs                    88M         4,2M   83M            5% /run
/dev/mapper/root-root    23G         4,2G   18G           20% /
tmpfs                   436M         4,0K  436M            1% /dev/shm
tmpfs                   5,0M         4,0K  5,0M            1% /run/lock
tmpfs                   436M            0  436M            0% /sys/fs/cgroup
/dev/sdb5               231M         131M   84M           62% /boot
/dev/mapper/home-home   2,7T         1,6T 1002G           62% /home
cgmfs                   100K            0  100K            0% /run/cgmanager/fs
tmpfs                    88M            0   88M            0% /run/user/1001
tmpfs                    88M            0   88M            0% /run/user/0
/dev/sdd1               2,7T         1,6T  1,1T           61% /media
tmpfs                    88M            0   88M            0% /run/user/1000

Хочу удалить два диска которые по 500 Гб (sda,sdc) из LVM. Как правильно это сделать ? Нужно ли уменьшать размер LVM и файловой системы (resize2fs, lvresize) или достаточно сделать vgreduce home /dev/sdc vgreduce home /dev/sda. Как узнать есть ли на этих дисках данные? Вроде используется 1,6 Тб, возможно на этих дисках нет данных.

sergvic
()

Релиз LFS 8.2

 

Группа Linux General

Linux From Scratch (LFS) это проект, предоставляющий пошаговые инструкции по сборке собственной системы Linux из исходных текстов. На текущий момент в проект входят:

  • LFS :: Linux From Scratch главная книга, описывающая установку базовой системы
  • BLFS :: Beyond Linux From Scratch расширяет основную книгу, позволяя создать на основе LFS полноценную рабочую среду путем доустановки компонентов
  • ALFS :: Automated Linux From Scratch предоставляет инструменты для автоматизации работы с LFS и BLFS.
  • Hints :: Набор советов по улучшению работы существующей LFS или BLFS системы
  • Patches :: Набор патчей, которые могут оказаться полезными пользователям LFS


Новый релиз включает обновление версий основных компонентов glibc-2.27, binutils-2.30, gcc-7.3.0. В общем итоге, обновилось 34 пакета, а также 5 пакетов перенесены из BLFS в LFS, среди которых: libffi, openssl, Python3, ninja и meson. Версия ядра Linux обновилась до 4.15.3.
Внесены изменения также в версию LFS, которая описывает установку с использованием systemd.

>>> Прочитать книгу

>>> Подробности (linuxfromscratch.org)

Gu4
()

Выбор hardware

 , ,

Суп.

Пришло время обновить свой сервант.
Хочу прикупить рыжень, но вот беда, нет материнок mini-itx.

Посоветуйте материнок нужного форм-фактора с поддержкой рыженя.

Или не мастурбировать и взять Штеуд?

itn
()

Где смотреть совместимость SSD с Linux?

 , ,

Сабж. Подскажите, пожалуйста. Хочу выбрать такой диск, чтобы подключить — и он подружился с линуксом без лишних телодвижений. В идеале даже с относительно стареньким ядром. Это возможно? Как выбрать / найти такой диск?

nightingale
()