Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

среда, 26 июня 2024 г.

Rosa Linux: docker не запускает контейнеры с ошибкой Error: OCI runtime error: writing file `/sys/fs/cgroup/cgroup.subtree_control`: Invalid argument

 Перекопал много и потратил времени. Странно это всё, полечилось так:

vi /etc/systemd/system/user@.service.d/cgroups.conf 
[Service]
Delegate=cpu cpuset memory io pids
Рестарт сессии или просто перезагрузка. 
Без этого 
#echo +cpuset > /sys/fs/cgroup/cgroup.subtree_control 
выдавало Invalid argument
При условии, что в cgroup.controllers cpuset был...

вторник, 23 апреля 2019 г.

Узнать времена файла (c/a/m/cr - time)

у меня есть файловая система /data:
/dev/nvme1n1    197G   22G  166G  12% /data

был утром запущен процесс с перенаправлением логов в /data/app.log
И вот требуется к вечеру узнать а когда файл создан был и когда закончилась работа с ним и вообще :):

debugfs -R "stat app.log" /dev/nvme1n1

debugfs 1.42.9 (28-Dec-2013)
Inode: 12   Type: regular    Mode:  0644   Flags: 0x80000
Generation: 4055614765    Version: 0x00000000:00000001
User:     0   Group:     0   Size: 6998
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 16
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x5cbea383:49dde7a8 -- Tue Apr 23 05:32:51 2019
 atime: 0x5cbed417:35f4ba48 -- Tue Apr 23 09:00:07 2019
 mtime: 0x5cbea383:49dde7a8 -- Tue Apr 23 05:32:51 2019
crtime: 0x5cbe9143:03bb2b94 -- Tue Apr 23 04:14:59 2019
Size of extra inode fields: 32
EXTENTS:
(0):34306, (1):99840

Как то так получается что:
- файл создан в 04:14 (crtime)
- последний раз модифицирован в 05:32:51 (mtime)
- смотрел я его 09:00 (atime)


понедельник, 24 сентября 2018 г.

bash autocompleters on Amazon Linux

AWS:
which aws_completer
complete -C '/usr/bin/aws_completer' aws

K8S:
yum install --enablerepo=epel bash-completion
source /etc/bash-completion
source <(kubectl completion bash)

суббота, 27 января 2018 г.

Amazon Linux. Service scripts

На примере pgbouncer:
/usr/lib/systemd/system/pgbouncer-rw.service
[Unit]
Description=pgbouncer-rw
After=network.target remote-fs.target nss-lookup.target

[Service]
LimitNOFILE=100000
Type=forking
PIDFile=/var/run/pgbouncer/pgbouncer-rw.pid
ExecStart=/bin/pgbouncer -d /etc/pgbouncer/pgbouncer-rw.ini
ExecStop=/bin/kill -s HUP $MAINPID
ExecReload=/bin/kill -s 1 $MAINPID
Signal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl enable pgbouncer-rw
service start/stop/reload/restart pgbouncer-rw

пятница, 1 декабря 2017 г.

InstallAnywhere. Ставим из скриптов

Есть дистрибутивы,которые подготовлены как бандл InstallAnywhere.
Он интерактивен но есть режимы у него:
-i console/gui/silent

мне бы хотелось молча и без вопросов поставить ПО. Передавать параметры можно и нужно для молчаливой и параметризованной установки.
Можно пойти вот таким путём:
1. запускаем бандл с ключиком -r имя_файла_параметров
2. отвечаем итеркативно на вопросы как нам надо
3. по завершению на выходе имеем файл с параметрами нашего ввода
4. запускаем установку молчаливую с параметрами: -i silent -f имя_файла_параметров

Но не всё так гладко. Смотрим в лог установки и там видим набор параметров - умолчаний.
И там не все такие, что имеют нужные умолчания.
Вичитываем нужные параметры и запускаться будем так:
-i silent -f имя_файла_параметров -Dкакой_то_параметр

например такой
-DCONTINUE_ON_DB_CONNECTION_ERROR=Y


воскресенье, 23 октября 2016 г.

Установить переменную по умолчанию если забыли ее указать

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

#cat 1.sh

#/bin/sh
output=${1-значение_по_умолчанию)
echo $utput

#./1.sh
значение_по умолчанию

#./1.sh qwe
qwe




пятница, 7 ноября 2014 г.

Linux. Нумерация сетевых интерфейсов.

Переносил виртуалку. Получилось так, что нумерация интерфейсов получилась не такая, как мне хотелось бы. Задача была сделать два сервера БД одинаковые. А тут на одном сервере eth0, а на втором eth1. Не красивенько, как гласит один анекдот:).
Привязка сетевых интерфейсов по именам делается в правилах UDEV.
Алгоритм такой:
смотрим список интерфейсов - тут важно найти MAC
- ip a

а здесь как раз правила и описаны. Правим строчку, где наш MAC есть или его туда запишем, и привязка по имени. В моем случае я привязывал MAC и потребовалось сменить NAME="eth0".
- vi /etc/udev/rules.d/70-persistent-net.rules

четверг, 16 октября 2014 г.

Oracle Linux UEK. Smart Flash Cache

Источник - документ oracle-linux-with-flash-2004731.pdf

В сервере должна быть карта F40 или F80. Oracle 11gR2 minimum.

Как файловая система:

файловая система не должна начинаться с нулевого сектора. Более того, отступаем по рекомендациям 1М:
#fdisk -lu /dev/sda
#echo "2048,," |sfdisk -uS /dev/sda
#fdisk -lu /dev/sda или sfdisk -l -uS /dev/sda

2048 * 512 bytes = 1M
#mkfs -t ext4 /dev/sda1
#mount -t ext4 -o noatime,nodiratime,max_batch_time=0,nobarrier /dev/sda1 /mnt

Проверим что шедулер DeadLine активен (он по умолчанию):
#more /sys/block/sda/queue/sheduler
noop anticipatory [deadline] cfq

Запишем в /etc/fstab:
/dev/sda1 /mnt ext4 defaults,noatime,nodiratime,max_batch_time=0,nobarrier 1 2

Настроим глубину очереди:
#echo "512" > /sys/block/sda/queue/nr_requests
#echo "512" > /sys/block/sda/device/queue_depth

Эти строчки добавить в скрипт загрузки /etc/rc.local также.

Конфигурация для работы с ASM:

Возьмем пример двух карт  F40.
 - установить Oracle Grid 11gR2
 - сделаем все как при настройке файловой системы (см. выше) но до момента mkfs. Файловую систему делать не надо.
- Создаем ASM диски:
#/usr/bin/oracleasm createdisk D1 /dev/sda1
#/usr/bin/oracleasm createdisk D2 /dev/sdb1
- Создаём дисковую группу как external redundancy:
SQL> create diskgroup FLASH disk 'ORCL:D1', 'ORCL:D2' external redundancy;
ну либо через графику.

Осталось подружить СУБД и флеши. Но это уже работа ДБА. А я не он:)





среда, 10 сентября 2014 г.

Oracle Linux. Конвертировать ext3 в ext4

Oracle linux с ext3 для ЦФТ банка был стандартом. Тестируем переход на ext4. Зачастую требуется сделать конвертацию ext3->ext4 с сохранение данных.

 Пусть это будет /db1, ext3
#umount /db1
#fsck.ext3 -pf /dev/mapper/db1
#tune2fs -o extents,uninit_bg,dir_index  /dev/mapper/db1
#fsck.ext4 -yfD /dev/mapper/db1

и переделаем в экстенты: (сначала файлы, потом каталоги)
#find /db1 -xdev -type f -print0 |xargs -0 chattr +e
#find /db1 -xdev -type d -print0 |xargs -0 chattr +e
Этот вариант быстро работает. Есть и другой конечно, но его окончания я не дождался, не выдержал.
#e4defrag -c /dev/mapper/db1

проверить (здесь пример с именем моей базы)
#lsattr /db1/oradata/STREM/datafile/EXPRESS01.dbf
-------------e--- /db1/oradata/STREM/datafile/EXPRESS01.dbf

если буковки "e" нет, значит у вас остался вариант от ext3.

Я не стал описывать подробности и смыслы - это заметки что бы просто помнить ход действий. Смыслы и описания нужно читать в документации!

Oracle Linux. Ext4 - опции монтирования для работы СУБД Оракл с приложением ЦФТ Банк

строчка из /etc/fstab

/dev/mapper/db1         /db1    ext4    barrier=0,data=writeback,noatime,commit=60      0 2

разница на пару порядков по ожиданиям ввода-вывода в AWR прослеживается
Но имейте ввиду, что особенно про параметр barrier=0 или nobarrier читать вдумчиво и понять её смысл! Если у вас система для этого параметра не готова - не ставьте! Надежность и безопасность я бы поставил выше чем производительность для боевой системы. В то же время для тестовой среды запросто сделайте barrier=0.

Doc ID 1476869.1

вторник, 9 сентября 2014 г.

Oracle Linux. Удалить SCSI диск

Вот ситуация - OL6.5, подключено два массива - STK6180 и USP100. С каждого массива отдано по паре томов. Работаем. Тут умирает USP100, вот реально умирает частями - сначала выходят из строя два диска подряд в группах, реакция USP100 странная для сисадмина а именно - переключаем пути но линукс подавился переключением и остановил ввод-вывод, оракл падает - всё плохо. Перезагрузка не проходит - висим на сбросе SCSI.
Состояние ОС:
#multipath -l
mpathe (360060e80058de90000008de900000006) dm-5 HITACHI,OPEN-V
size=200G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=0 status=enabled
  |- 1:0:1:1 sde 8:64  failed undef running
  |- 1:0:2:1 sdg 8:96  failed undef running
  |- 2:0:0:1 sdk 8:160 failed undef running
  `- 2:0:1:1 sdm 8:192 failed undef running
mpathd (360060e80058de90000008de900000005) dm-4 HITACHI,OPEN-V
size=800G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=0 status=active
  |- 1:0:1:0 sdd 8:48  active undef running
  |- 1:0:2:0 sdf 8:80  active undef running
  |- 2:0:0:0 sdj 8:144 active undef running
  `- 2:0:1:0 sdl 8:176 active undef running

#tail -f /var/log/messages 
завален ошибками по доступности устройств.

Удаляем диски из ОС, что бы не мешать работе хотя бы.
#echo 1 > /sys/block/sde/device/delete

делаем так 8 раз для каждого устройства из списка вывода multipath -l

#blockdev --flushbufs /dev/mapper/mpathe
#blockdev --flushbufs /dev/mapper/mpathd

или если не помогает
#multipath -f mpathe

или 
#dmsetup remove dm-5



пятница, 5 сентября 2014 г.

CISCO UCS. Oracle Linux. fNIC qdepth, IO Throttle Count

CISCO UCS. B200M3.
Посмотреть параметр max_qdepth :
#cat /sys/module/fnic/parameters/fnic_max_qdepth
32
или
#lsscsi -l (поставьте этот пакет - хорошая штучка - yum install lsscsi)
[0:2:0:0]    disk    LSI      MRSASRoMB-4i     2.12  /dev/sda
  state=running queue_depth=256 scsi_level=6 type=0 device_blocked=0 timeout=90
[1:0:0:0]    disk    SUN      CSM200_R         0660  /dev/sdb
  state=running queue_depth=32 scsi_level=6 type=0 device_blocked=0 timeout=30
[1:0:0:1]    disk    SUN      CSM200_R         0660  /dev/sdc
  state=running queue_depth=32 scsi_level=6 type=0 device_blocked=0 timeout=30
[1:0:1:0]    disk    SUN      CSM200_R         0660  /dev/sdd


Что бы изменить параметр на постоянной основе, придётся добавить параметр в строку загрузки в файл /etc/grub.conf в конец строки
 fnic.fnic_max_qdepth=128

Если нужно здесь и сейчас изменить параметр:
#echo 128 > /sys/module/fnic/parameters/fnic_max_qdepth


IO Throttle Count - общее количество запросов ввода-вывода для каждого vHBA.
Значение может быть от 1 до 1024. Меняется только при загрузке и только через UCS Manager:
Servers->Policies->Adapter Policies->FC Adapter Policy Linux
Параметр стоит в значении 256.


вторник, 21 мая 2013 г.

Linux FC commands

Работая с Linux, мне как и в любой другой ОС нужно знать множество вещей об оптике, что снаружи - SAN. Для этого я ставлю пакеты:
1. device-mapper-multipath
2. sg3_utils
3. sysfsutils

Эти пакеты дают мне набор важных инструментов, которые позволят мне увидеть множество важных данных.
1. Смотрим на состояние линков, WWN: #systool -vc fc_host
2. Смотрим информацию о FC HBA Qlogic: #systool -m qla2xxx -v
3. Смотрим информацию о FC HBA Emulex: #systool -m lpfc -v
4. Смотрим карту SCSI: #sg_map -x
5. WWN: #systool -c fc_host -A port_name

понедельник, 27 августа 2012 г.

SLES 11, быстрый шлюз с маскарадом на время инсталяций

На инсталляциях часто клиент дает тебе провод и адрес для доступа в интернет. А нужно сделать так, что бы твои устройства и ОС обновились через инет с сайтов производителей. Так просто быстрее и удобно. НЕ всегда так делать можно и нужно. Но иногда это нужно. Вот для памятки быстрый вариант. В линуксовую машинку на базе SLES втыкается шнур, что дал клиент. На eth0 вешаем IP/Mask/GW. Пишем DNS. Было бы конечно здорово поднять локальный DNS что бы машинкам не прописывать DNS каждому. Это на любителя.
Eth1 - во внутреннюю сетку смотрит (192.168.230.0/24).
Идем в /etc/sysconfig и правим файлик SuSEfirewall2. 

FW_DEV-EXT="any eth0"
FW_DEV_INT="eth1"
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_MASQ_NET="192.168.230.0/24"

и стартуем/рестартуем
/etc/init.d/SuSEfirewall2_setup restart

Optionals: Если надо DNS:
- ставим Bind
#vi  /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.230.1; };
listen-on-v6 { none; };
logging {
channel syslog_errors {
syslog user;
severity error;
};
category default { syslog_errors; };
};


#chkconfig named on
#chown -R named:named /var/lib/named/
#/etc/init.d/named start

Optionals: Если надо DHCP:
- ставим пакет dhcp-server
vi /etc/dhcp.conf
option domain-name-servers 192.168.230.1;
ddns-update-style none;
ddns-updates off;
log-facility local7;
subnet 192.168.230.0 netmask 255.255.255.0 {
  range 192.168.230.100 192.168.230.200;
  option routers 192.168.230.1;
  default-lease-time 43200;
  max-lease-time 86400;
}

vi /etc/sysconfig/dhcpd
DHCP_INTERFACE="eth1"

стартуем

вторник, 18 октября 2011 г.

SLES 11. HP P2000 SAS. Multipathing

SLES 11 SP1. Две карты SAS, внешний массив HP P2000 SAS.
На массиве делаем Vdisk, тома, отдаем хостам.
На хосте надо установить ПО HPDmultipath.
Настройка сводится к :
1. В файл /etc/modprobe.conf.local добавить строку:
options mptsas mpt_cmd_retry_count=10 mpt_disable_hotplug_remove=1

2. /etc/multipath.conf
Поправить описание массива P2000 на
product                 "P2000 G3 SAS"

3. Запустить multipath без ключей для создания устройств mapper
4. Запустить multipath -l
это покажет ID тома
5. в файл /etc/multipath.conf внести секцию

multipaths {
multipath {
        wwid 3600c0ff000122866c1ff9b4e0100000 - < это тот самый ID
        alias db1
        path_grouping_policy failover
}
}

6. делаем файловую систему
mkfs.ext3 /dev/mapper/db1

четверг, 5 марта 2009 г.

Linux и ленточный привод

Будучи у клиента с настройкой ПО EMC Networker под SLES 9 sp3 x86_64, получил ситуацию, когда для нормальной работы привода требуется его настройка как в solaris st.conf.
Только в отличие от солярис тут нет в поставке этого механизма для настройки. Что делать:
1. искать и ставить пакет mt-st (ftp://metalab.unc.edu/pub/Linux/system/backup/). Там даже не пакет (под слес я не нашел сходу пакет), собрать его из исходников дело нескольких секунд.
2. В пакете будет файлик stinit. Но сам по себе он пока бесполезен. Нужна база настроек для конкретного устройства.
3. Создаём базу настроек: /etc/stinit.def
Я сделал так:
# LTO Generation 3
#
# TVM: here's what Sun/STK recommended:
#
# manufacturer=HP model="Ultrium 3-SCSI" {
# can-bsr scsi2logical drive-buffering auto-lock
# timeout=800
# long-timeout=14400
# mode=1
# blocksize=0
# density=0x00
# fast-eom=1
# }

manufacturer="HP" model = "Ultrium 3-SCSI" {
scsi2logical=1
can-bsr=1
auto-lock=0
two-fms=0
drive-buffering=1
buffer-writes
read-ahead=1
async-writes=1
can-partitions=0
fast-eom=1
#
# If your stinit supports the timeouts:
timeout=3600 # 1 hour
long-timeout=14400 # 4 hours

# 400 GB + compression
mode1 blocksize=0 density=0x44 compression=1

# 400 GB, no compression
mode2 blocksize=0 density=0x44 compression=0

# LTO2 ~= 220 GB + compression
mode3 blocksize=0 density=0x42 compression=1

# LTO2 ~= 220 GB, no compression
mode4 blocksize=0 density=0x42 compression=0
}
# end of LTO-3

}

4. Теперь запускаем stinit /dev/nst0. Кстати, если подключен привод был без перезагрузки, сделать стоит сначала rescan-scsi-bus.sh, что бы устройство нашлось.
5. Далее запускаем Networker и всё работает.

Если stinit не делать, то у меня было так - при попытке записать метку на ленту, делается 90% операции а далее зависает. Так же в журналах можно увидеть ошибки по невозможности позиционирования головки и неправильного блока.

МОжно кстати говоря обойтись попробовать только этим:
mt -f /dev/nst0 setblk 0
Это установит variable block size что вообщем то нам и надо.

Не забыть поставить на выполнение эти операции при загрузке сервера! Например прописать сценарий запуска stinit и поставить его в rc3.d ДО запуска Networker.

пятница, 6 февраля 2009 г.

Windows под Ubuntu: qemu

Взято здесь: https://help.ubuntu.com/community/WindowsXPUnderQemuHowTo

#sudo apt-get install qemu
#sudo apt-get install qemu-launcher
#sudo apt-get install module-assistant kqemu-common kqemu-source
#sudo module-assistant prepare
#sudo module-assistant auto-install kqemu-source
#sudo modprobe kqemu
#sudo chmod 666 /dev/kqemu
#qemu-img create -f qcow windows.img 2G
#qemu -localtime -cdrom /dev/cdrom -m 384 -boot d windows.img
или
#qemu -localtime -cdrom cdimagefile.iso -m 384 -boot d windows.img

#qemu -boot c -hda /path/to/hdd_image -m 384 -net user -net nic

вторник, 3 февраля 2009 г.

Ubuntu. ID3 по-русски

Поставил EasyTag. В настройках :
- Настройки тэгов ID3:
--> Автоматически преобразовывать старые тэги
--> Записывать тег ID3v2 charset Unicode UTF-8
--> Character Set for reading ID3 tags: Non-standart Windows-1251
--> ID3v1 tags: записывать тег ID3v1.x charset: UTF-8. Additional setting for iconv = No
Далее выбираю каталог с музыкой. После появления списка песен - выделить все и нажать записать. Всё.