Има ли по-удобен от bash?!
# passwd -e
Old shell: /sbin/sh
New shell: /usr/bin/bash
Още една халба с акъл…
Има ли по-удобен от bash?!
# passwd -e
Old shell: /sbin/sh
New shell: /usr/bin/bash
Сигурно сте видели много статии насам-натам за това, че производителите на хард дискове вече напират с новите серии от производството си да наложат ползването на сектори от по 4kb. Така де, сегашното 512b не е мръднало от както 20MB диск е бил с размера на акумулираща печка.
Всичко хубаво, обаче въпреки твърденията на Western Digital, че само WindowsXP и по-стари уиндоуси не са подготвени за това не е особено вярно. Същото се отнася и за кой да е линукс (до момента).
Ефекта е, че скоростта на работа на диска и особено при записване е многократно по-ниска. Така е, понеже операционната система си работи със сектори от по 512b, които се “преподреждат” от контролера на самия хард диск.
Май първи WD направиха диск с 4k сектори – Caviar Green 1TB 64MB cache. На самия етикет на диска си пише, че WinXP и по-стари трябва да закопчаят джъмпер 7-8 или да ползват Western Digital Alignment Tool, което може да се свали от сайта им.
Проблемът е, че всички операционни системи по подразбиране правят първият партишън на 63-тият сектор на диска, което никак не е кратно на 4. Alignment Tool-а намества дяловете както трябва.
Но той е само за Windows ![]()
Ами линукс?
Там гимнастиката е следната:
След като диска се раздели на дялове поред инсталацията, трябва да се корегира началото на първият дял с fdisk.
# fdisk /dev/sda
Отиваме в разширените му възможности с x
С p може да се изведат на екран наличните дялове на диска
Това, което трябва да се направи е, с опция b да се корегира началото на дяла от 63 на 64, след което записвате промените с w и след форматиране дяла е готов за ползване.
Това не е научен труд или писано някъде в дебелите книги, не твърдя и че е най-правилният начин. При мен резултатът беше нормализиране на скоростта на работа с диска (около 4-5 пъти по-бърза работа).
Понякога се налага да разполагаме с някакъв голям или малък файл за някаква проба или тест или каквото и да е. В случая ни трябва файл с размер 1GB, не ни интересува какво има в него и какъв е този файл, единствено размера има значение!
dd if=/dev/zero of=testfile bs=1MB count=1024
Това ще снесе файл с име testfile в текущата директория, ще бъде с размер точно 1GB.
Целта на упражнението е да се закачим с putty към *nix машина и да стартираме графична програма, която да ползваме локално.
Задачата е доста проста и няма нищо сложно в изпълнението.
Нужни са ни Xming и PuTTY. Ще ги атачна, за да не ги търсите.
Инсталират се Xming и Xming-fonts. Стартира се. Долу в дясно (където е часовника) трябва да се появи един X.
Следващата настройка е в putty – Connection>SSH>X11 – слага се отметка на “Enable X11 forwarding” и в полето “X display location” се попълва “localhost:0:0″. Показал съм снимка на това.
След като сте въвели всичко се закачате към желаната машина и всяко графично приложение, което изпълните ще се появи на вашия десктоп.
#firefox &
Това ще зареди браузъра Firefox изпълнен на отдалечената машина, но с прозорче на вашия екран. Символа & се слага на края за да го изпълни във фонов режим и да освободи конзолата на putty за по-нататъшно използване.
Затворите ли сесията на putty – всички стартирани приложения ще умрат.
Успех
Конфигурирането на RAID1 по време на инсталацията е лесно и бързо, но има нещо важно, което лесно може да се пропусне – конфигурирането на Grub да зарежда от двата диска в масива:
Спира се Grub менюто с c и пишем горе долу това:
grub> root (hd1,0)
grub> setup (hd1)
grub> root (hd0,0)
grub> setup (hd0)
След това ESC и зареждането продължава нормално.
Другият вариант на същото е за случаите, в които нямаме достъп “на живо” до компютъра:
# grub
grub> device (hd0) /dev/sda
grub> device (hd1) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
Палите свещичка и рестартирате.
Ето и най-бързия начин да погубите информацията на диска си:
dd if=/dev/zero of=/dev/sda bs=1M
Ще покрие целия диск с нули, включително boot-сектор, всички налични тялове и т.н.
Като вариант може вместо /dev/zero да се ползва /dev/random, което ще напълни диска с произволно генерирана информация вместо “нули”.
Как ползвате fsck на ZFS файлова система? Май никак. Или поне никога не се е налагало да пишете root паролата преди зареждането на операционната система, за да може диска да бъде сканиран. ZFS е винаги чиста дори след спиране на тока. Информацията е винаги непокътната. За хората, които се притесняват, все пак има каква команда да изпълните и да се уверите, че всичко е наред с файловата система.
За разлика от fsck, която трябва да се пуска само на немонтиран дял, тази работи и на монтирани и работещи дялове:
# zpool scrub mypool
Ще провери чексумите на всичката съхранена информация и ще възстанови, ако има какво.
Лошото обаче е, че предизвиква доста сериозна дискова активност, така че внимавайте с това.
В случай на нужда, сканирането може да се прекрати с:
# zpool scrub -s mypool
Ако някой има нужда да забрани Google Talk покаквато и да е причина, ето как става:
Прави се DNS запис за chatenabled.mail.google.com, който сочи примерно към 127.0.0.1.
Сега когато си отворите пощата, Gtalk аплетчето няма да се свързва.
Arris Cornerstone 1000/1100/1500 са бриджове и могат да работят само като такива.
Пускам конфигурацията на една такава машинка заедно с решението на проблем, който срещнах по време на експлоатация:
[Cornerstone] remote1> putmng display
$ box
name "Cornerstone"
high-temp-threshold 55
$ admin
sw-server-ip-addr 172.16.1.2
provisioning-control use-nvram
$ ip-level
config-ip-address 10.10.255.254
config-ip-subnet 255.255.0.0
config-ip-gateway 10.10.0.1
$ admin
config-tftp-ip-addr 172.16.1.2
time-rfc868-addr 172.16.1.2
time-offset 7200
time-sntp-addr 172.16.1.2
$ downstream
frequency 400000000
modulation qam256
power 530
$ upstream-specific/4
frequency 32000000
power 0
$ upstream-specific/5
frequency 27000000
power 20
$ upstream-specific/6
frequency 27000000
power 0
$ upstream-specific/7
frequency 27000000
power 0
$ cable-level
admin-status up
$ forwarder
proxy-arp enable
$ admin
bootp-relay-control relay-tagging-enabled
$ bootp-modify/1
server-ip-addr 172.16.1.2
status active
$ ip-level
dns-control enabled
$ dns-modify/1
server-ip-addr 172.16.1.10
status active
$ dns-modify/2
server-ip-addr 172.16.1.20
status active
$ ip-level
dns-domain-name "cornerstone.kamenitza.org"
$ accounts
inactivity-timer 60
$ cable-level
concatenation-control disabled
$ admin
ssh-control enabled
ssh-host-key-bits 1024
ssh-server-key-bits 2048
$ cable-level
cpe-active-default enabled
172.16.1.2 – DHCP, TFTP, NTP, DAYTIME сървър
10.10.255.254 – IP адреса на CMTS-а
10.10.1.1 – IP адреса на аксес рутера, към който е закачен CMTS-a
Топологията е горе долу такава:
DHCP--->ROUTER--->CMTS--->Cable Modems
Доста странен проблем се получи в тази ситуация – клиентите (CPE-тата) получаваха коректни настройки от DHCP сървъра, но нямаха мрежова свързаност?!
WTF!? ще си кажете…
Щом получават настройките – те ги получават по мрежата, значи няма как да не работи!
При всеки мрежовата свързаност се възстановяваше веднага след като напиша:
# arping 1.2.3.4
на рутера към който е закачен CMTS-a. Това е ИП адреса на мрежовата карта на клиента, не на кабелния модем.
Значи нещо се дъни най-вероятно на второ ниво!?
Какво ли не правих – пускане и спиране на proxyarp на CMTS-a, пускане и спиране на dhcprelay на рутера – никаква промяна.
Реших проблема по възможно най-простия и дървен начин:
#!/bin/bash
i=2
while [ $i -lt 255 ]
do
/sbin/arping -q -c 1 10.20.30.$i &
let i=$i+1
done
Това скриптче се изпълнява през 2 минути от cron.
Ако някой с подобна топология няма такива проблеми – ще се радвам да сподели по-елегантно решение
Ще дам пример със статистика на мрежов интерфейс на линукс компютър.
Какво е необходимо:
1. Инсталиран и конфигуриран SNMP демон – пример.
2. Инсталиран и работещ RRDTool.
3. Добре охладена халба бира и кофа с чипс.
SNMP ще ни предостави достъп до всички системни “броячи”, ако мога така да ги нареча:
# snmpwalk -v2c -c public localhost
Ще видите доста дълъг списък.
Като начало ни трябват само мрежовите интерфейси, с които разполага машината:
# snmpwalk -v2c -c public localhost IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: eth2
IF-MIB::ifDescr.5 = STRING: eth3
От тук ни трябва само индекса на мрежовата карта, която ще следим – да кажем eth0, която е с индекс 2.
За да получим изпратените от интерфейса байтове:
# snmpwalk -v2c -c public localhost IF-MIB::ifHCOutOctets.2
IF-MIB::ifHCOutOctets.2 = Counter64: 6377552360
За да получим приетите от интерфейса байтове:
# snmpwalk -v2c -c public localhost IF-MIB::ifHCInOctets.2
IF-MIB::ifHCInOctets.2 = Counter64: 135903877111
Да, но на нас ни трябват само цифрите от брояча, и вместо да парсваме целия този стринг, който получаваме от snmpwalk, добавяме параметрите -Oqv:
# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCOutOctets.2
6377552360
и
# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCInOctets.2
135903877111
Малко по-добре нали
Така, вече имаме данните от броячите. Сега трябва да подготвим RRD базата данни за съхранението им:
/opt/rrdtool/bin/rrdtool create eth0.rrd --step 300 --start N \
DS:in:DERIVE:600:0:U \
DS:out:DERIVE:600:0:U \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:6:2016 \
RRA:AVERAGE:0.5:24:8640
Като съответно корегирате пътя до rrdtool с този на вашата инсталация. Не би трябвало да се налага корекция на която и да е от цифрите, които виждате тук. Изпълнението на тази команда ще създаде файл eth0.rrd, в който ще съхраняваме отчитанията на броячите на мрежовия интерфейс.
Примерен скрипт, който проверява броячите и ги съхранява в базата данни:
#!/bin/bash
out=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCOutOctets.2`
in=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCInOctets.2`
/opt/rrdtool/bin/rrdtool update eth0.rrd -t in:out N:$in:$out
Това кодче трявба да се изпълнява на всеки 5 минути.
Добавяме го в cron:
# crontab -e
И добавяме следния ред:
*/5 * * * * /rrd/updaterrd >> /rrd/rrd.log
Изхода от всяко изпълнение ще се записва във файла /rrd/rrd.log – помага при търсене на грешки.
Настроихме компютъра да отчита и събира статистиките за интерфейса, остана да ги изрисуваме:
/opt/rrdtool/bin/rrdtool graph -a PNG eth0.png \
--title "Daily stats" --start -1day \
DEF:i=eth0.rrd:in:AVERAGE DEF:o=eth0.rrd:out:AVERAGE \
-h 80 -w 250 \
AREA:o#0903FF:"Out" LINE1:i#00ff00:"In\n"
Това ще изрисува статистиката за последният ден. Можете да я генерирате директно в директория достъпна от уеб сървъра, за да може да бъде поставена по-късно в уеб сайт.

Графиката показва скоростта на натоварване в MB/s мегабайти в секунда (не мегабити).
RRDTool е много мощен инструмент, и ако се зачетете в документацията му ще откриете куп параметри, с които да направите вашите графики максимално удобни за четене и с външен вид, който ви допада.
Сега докато си изпиете бирата и си изхрупате чипса ще са се събрали достатъчно данни, за да проверите какво сте направили.
Очаквайте продължение…
На този линк е много добро описание с примерчета как се работи с awk. Ако намеря време ще го преведа.
Най-прост пример ще дам.
Създайте /etc/rsyncd.conf със следното съдържание:
max connections = 10
log file = /var/log/rsync.log
timeout = 300
[share]
comment = Shared folder
path = /share
read only = yes
list = yes
uid = nobody
gid = nobody
auth users = gosho
secrets file = /etc/rsyncd.secrets
Тазки конфигурация ще направи “споделен обект” с име share, който ще е самата директория /share (не е нужно двете да са с еднакви имена). Достъпът до тази директория ще бъде само за четене и ще се осъществява от името на потребител nobody, така че той трябва да има поне права за четене. Права за достъп през rsync ще има gosho, като паролата му ще бъде в /etc/rsyncd.secrets.
Съдържанието на /etc/rsyncd.secrets:
gosho:goshoto
Т.е. паролата на gosho е goshoto.
Следва бърза предпазна мярка:
# chmod 600 /etc/rsyncd.secrets
Така никой друг няма да може да чете файла с паролите.
За дистрибуциите, които ползват xinetd редактирате /etc/xinetd.d/rsync, така че:
disable = yes
да стане:
disable = no
xinetd трябва да бъде рестартиран след това:
# /etc/init.d/xinetd restart
Остана само да се разреши порт TCP/873 през firewall-a и всичко е готово.
Ето няколко примера за употребата:
# rsync rsync://gosho@server.address/
Ще покаже списъка със споделените директории.
# rsync -aPv rsync://gosho@server.address/share .
Ще изкопира всичко от посоченият път рекурсивно в текущата директория.
За да се избегне ръчното писане на паролата и ползването на rsync в скрипт може да се сетне променливата:
# export RSYNC_PASSWORD=goshoto
Приятно синхронизиране, бекъпване, копиране и т.н!
За достъп до всякакви допълнителни настройки създайте папка с името:
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
И тази папка вече не е тази папка
По начало CentOS 5.4 идва с Postgresql версия 8.1.
За да инсталирате по-нова е необходимо това:
# rpm -Uvh http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-1.noarch.rpm
Следва стандартното:
# yum install postgresql-server
Последни коментари