Thursday, 28 November 2013
Wednesday, 27 November 2013
Установка OpenVSwitch 1.9 на CentOS 6
Зависимости:
yum install -y rpm-build
yum groupinstall -y "Development Tools"
yum install -y openssl-devel
Стягиваем код и собираем окружение:
cd /usr/src
wget http://openvswitch.org/releases/openvswitch-1.9.0.tar.gz
mkdir -p /root/rpmbuild/SOURCES
cp openvswitch-1.9.0.tar.gz /root/rpmbuild/SOURCES
cd /root/rpmbuild/SOURCES
tar -xvf openvswitch-1.9.0.tar.gz
Далее нужно удалить одну зависимость на строке Requires удаляем openvswitch-kmod:
vim ./openvswitch-1.9.0/rhel/openvswitch.spec
Собираем:
cd openvswitch-1.9.0Устанавливаем:
rpmbuild -bb -D `uname -r` rhel/openvswitch.spec
yum localinstall /root/rpmbuild/RPMS/x86_64/openvswitch-1.9.0-1.x86_64.rpmЗапускаем (в автозагрузку он добавился уже сам):
/etc/init.d/openvswitch startИсточник: http://fvtool.wordpress.com/2013/04/24/install-kvm-on-centos-6-3-installing-open-vswitch/
/etc/openvswitch/conf.db does not exist ... (warning).
Creating empty database /etc/openvswitch/conf.db [ OK ]
Starting ovsdb-server [ OK ]
Configuring Open vSwitch system IDs [ OK ]
Starting ovs-vswitchd [ OK ]
Enabling gre with iptables [ OK ]
Открытая вакцина против ВИЧ - Immunity Project
Настоящая попытка изменить мир http://www.immunityproject.org/ !!! Чудесный проект, чудесная идея и потрясающие люди!
Tuesday, 26 November 2013
Monday, 25 November 2013
Sunday, 24 November 2013
Saturday, 23 November 2013
Thursday, 21 November 2013
Как выглядит блок Anycast в RIPE?
Вот примерно так:
whois 31.131.255.10|tail -n 10
route: 31.131.255.0/24
descr: Selectel Anycast
origin: AS49505
mnt-by: MNT-SELECTEL
source: RIPE # Filtered
Честно говоря, не понятно одно - везде поднимать свою AS и нельзя использовать AS апстримов/провайдеров? Как тогда завернуть один блок IP в несколько разных ASN, причем, одновременно.
How to build rpm package for RHEL5 on RHEL6 system?
# emulate: "/usr/bin/rpmbuild-md5" from fedora-packager
rpmbuild --define "_source_filedigest_algorithm 1" --define "_binary_filedigest_algorithm 1" --define "_binary_payload w9.gzdio" --define "_source_payload w9.gzdio" --define "_default_patch_fuzz 2"-bb e2fsprogs.spec
Wednesday, 20 November 2013
How I can mount one file (not an folder) to another?
Create file with content:
Check it content:
Create blank file, it will be mount point, it content can be any (we need only inode, right):
This file instantly blank:
echo "my important data" > /tmp/shadow
Check it content:
cat /tmp/shadow
my important data
Create blank file, it will be mount point, it content can be any (we need only inode, right):
rm -f /tmp/shadowcopy
touch /tmp/shadowcopy
This file instantly blank:
cat /tmp/shadowcopy|wc -l
0
Mount file /tmp/shadow to /tmp/shadowcopy:
mount --bind /tmp/shadow /tmp/shadowcopy
Welcome, all forks fine:
cat /tmp/shadow
my important data
cat /tmp/shadowcopy
my important data
You can add line into source file:
echo "new line" >> /tmp/shadow
And this line can be found in both files (source and mounted):
cat /tmp/shadow
my important data
new line
cat /tmp/shadowcopyIf you add any content to destination file, it will show in source. This mechanic looks like hard links.
my important data
new line
At finish you MUST unmount destination file:
umount /tmp/shadowcopy
Tuesday, 19 November 2013
Installing actual Gentoo from stage3 on OpenVZ withou any strange templates, only from stage3
0. Set our container number for preventing hardcoding in my commands:
1. Download stage3 into OpenVZ template folder (you can get actual link from here http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64.txt). Be careful - you must set downloaded file name to gento-bla-bla-bla:
2. Create container using stage3 template.
6. First steps in Gentoo - getting portage tree!
export CTID=19484
1. Download stage3 into OpenVZ template folder (you can get actual link from here http://distfiles.gentoo.org/releases/amd64/autobuilds/latest-stage3-amd64.txt). Be careful - you must set downloaded file name to gento-bla-bla-bla:
cd /vz/template/cache
wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3/stage3-amd64-20131031.tar.bz2 -Ogentoo-stage3-amd64-20131031.tar.bz2
2. Create container using stage3 template.
vzctl create $CTID --hostname gentoo-forever.com --ipadd 78.47.xx.xx --ostemplate gentoo-stage3-amd64-20131031 --layout ploop --disk 10G
3. Start container for removing udev (udev and openvz are natural enemies):
vzctl start $CTID
vzctl exec $CTID 'rm -f /etc/init.d/udev'
vzctl exec $CTID 'rm -f /etc/init.d/udev-mount'
4. Start container for production:
vzctl start 19484;5. Enable ssh:
vzctl enter 19484
/etc/init.d/sshd start
6. First steps in Gentoo - getting portage tree!
emerge --sync
How to mount multiple disks to OpenVZ ploop container?
Hello, OpenVZ admin! :)
Mounting additional disk as read only
If you want you can mount additional disk as read only. You must add -r flag to ploop mount command.
In read only case you will see something like this while containers starts:
In many cases you can want ability to mount an additional ploop devices in OpenVZ container (be care! This guide works only with ploop), i.e. add separate as /data or /mnt. It's not so obviously but I can help you. My test container number (CTID) is 19484, be careful because this number is another in your case!
At first, you must select path where you plans save additional disk images. In my case, it's /storage folder on hardware node.
1. We must create subfolder for saving additional disk data (image + description file). I recommend to name it with CTID.
mkdir /storage
mkdir /storage/19484
2. Create ploop device with defined size in this folder.
ploop init -s 10G -f ploop1 -v 2 /storage/19484/additional_disk_image -t ext4
3. Please stop container (it's needed because we manipulate with container root filesystem and it's so dangerous):
vzctl stop 19484
4. We must add hook scripts for mount and umount this disk to container root mount point.
Please create file /etc/vz/conf/19484.mount with following content:
#!/bin/bash
ploop mount -m /vz/root/$VEID/mnt /storage/$VEID/DiskDescriptor.xmlAnd file /etc/vz/conf/19484.umount with following content (we must add exit 0 because at first start vzctl will tries to umount disk and we got an error):
#!/bin/bash
ploop umount /storage/$VEID/DiskDescriptor.xml
exit 0
Add execution flag to both files:
chmod +x /etc/vz/conf/19484.mount /etc/vz/conf/19484.umount
5. Start container:
vzctl start 19484
At first startups you must got error message because vzctl can't unmount additional disk at startup (so strange feature, really! What reason to umount disks at startup?) . It's ok, you can sefely ignore. At next start/restart you did not got any errors.
Error in ploop_umount_image (ploop.c:1579): Image /storage/19484/additional_disk_image is not mounted
At second and next start's you can see no error:
vzctl start 19484
Starting container...
Opening delta /vz/private/19484/root.hdd/root.hdd
Adding delta dev=/dev/ploop18662 img=/vz/private/19484/root.hdd/root.hdd (rw)
/dev/ploop18662p1: clean, 36570/144288 files, 228564/576251 blocks
Mounting /dev/ploop18662p1 at /vz/root/19484 fstype=ext4 data='balloon_ino=12,'
Opening delta /storage/19484/additional_disk_image
Adding delta dev=/dev/ploop50284 img=/storage/19484/additional_disk_image (rw)
Mounting /dev/ploop50284p1 at /vz/root/19484/mnt fstype=ext4 data='balloon_ino=12,'
Container is mounted
Adding IP address(es): 78.47.76.28
Setting CPU units: 1000
Container start in progress...
Check new disk in container:
vzctl exec 19484 'df -h'It's important, you don't need any quota setup because ploop is complete filesystem and it's limited by standard linux mechanic like native hard drive.
Filesystem Size Used Avail Use% Mounted on
/dev/ploop18662p1 2.2G 858M 1.3G 41% /
/dev/ploop50284p1 9.9G 164M 9.2G 2% /mnt
none 136M 4.0K 136M 1% /dev
none 28M 1020K 27M 4% /run
none 5.0M 0 5.0M 0% /run/lock
none 52M 0 52M 0% /run/shm
none 100M 0 100M 0% /run/user
Mounting additional disk as read only
If you want you can mount additional disk as read only. You must add -r flag to ploop mount command.
In read only case you will see something like this while containers starts:
vzctl start 19484
Starting container...
Opening delta /vz/private/19484/root.hdd/root.hdd
Adding delta dev=/dev/ploop18662 img=/vz/private/19484/root.hdd/root.hdd (rw)
/dev/ploop18662p1: clean, 36570/144288 files, 228582/576251 blocks (check in 4 mounts)
Mounting /dev/ploop18662p1 at /vz/root/19484 fstype=ext4 data='balloon_ino=12,'
Opening delta /storage/19484/additional_disk_image
Adding delta dev=/dev/ploop50284 img=/storage/19484/additional_disk_image (ro)
Mounting /dev/ploop50284p1 at /vz/root/19484/mnt fstype=ext4 data='balloon_ino=12,' ro
Container is mounted
Adding IP address(es): 78.47.76.28
Setting CPU units: 1000
Container start in progress...
Monday, 18 November 2013
OpenVZ DiskDescriptor.xml - что есть что?
<?xml version="1.0"?>
<Parallels_disk_image>
<Disk_Parameters>
<Disk_size>8388608</Disk_size>
<Cylinders>8322</Cylinders>
<Heads>16</Heads>
<Sectors>63</Sectors>
<Padding>0</Padding>
</Disk_Parameters>
<StorageData>
<Storage>
<Start>0</Start>
<End>8388608</End>
<Blocksize>2048</Blocksize>
<Image>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<Type>Compressed</Type>
<File>root.hdd</File>
</Image>
</Storage>
</StorageData>
<Snapshots>
<TopGUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</TopGUID>
<Shot>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<ParentGUID>{00000000-0000-0000-0000-000000000000}</ParentGUID>
</Shot>
</Snapshots>
</Parallels_disk_image>
Что же есть из себя 5fbaabe3-6958-40ff-92a7-860e329aab41? Не понятно! Это не GUID таблицы GPT, которую использует ploop потому что:
cat /vz/private/19484/root.hdd/DiskDescriptor.xml|grep UID -i
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<TopGUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</TopGUID>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<Parallels_disk_image>
<Disk_Parameters>
<Disk_size>8388608</Disk_size>
<Cylinders>8322</Cylinders>
<Heads>16</Heads>
<Sectors>63</Sectors>
<Padding>0</Padding>
</Disk_Parameters>
<StorageData>
<Storage>
<Start>0</Start>
<End>8388608</End>
<Blocksize>2048</Blocksize>
<Image>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<Type>Compressed</Type>
<File>root.hdd</File>
</Image>
</Storage>
</StorageData>
<Snapshots>
<TopGUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</TopGUID>
<Shot>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<ParentGUID>{00000000-0000-0000-0000-000000000000}</ParentGUID>
</Shot>
</Snapshots>
</Parallels_disk_image>
Что же есть из себя 5fbaabe3-6958-40ff-92a7-860e329aab41? Не понятно! Это не GUID таблицы GPT, которую использует ploop потому что:
cat /vz/private/19484/root.hdd/DiskDescriptor.xml|grep UID -i
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
<TopGUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</TopGUID>
<GUID>{5fbaabe3-6958-40ff-92a7-860e329aab41}</GUID>
Обойдем все диски и получим из GPT GUID:
for i in `find /dev/ploop*|egrep -v 'p1$'`;do sgdisk -p $i |grep GUID;done
Disk identifier (GUID): A821C1C0-DB6E-4F32-ABC5-D05B7CF9A1DE
Disk identifier (GUID): BC1A5685-36FE-47E4-96E8-240307329FAF
Disk identifier (GUID): AA41E391-374A-44E3-A46C-FF32435131F9
Disk identifier (GUID): 113F3E0A-AE6A-4DB7-B68A-FC3FA05230B6
Disk identifier (GUID): 747F78F7-2A98-49D0-8D7E-98910EB282D3
Disk identifier (GUID): 50D6C777-0FEA-401E-86D2-15F4AA853605
Disk identifier (GUID): 099821D1-9ABF-4183-879F-107602ADA5D7
Disk identifier (GUID): B1C96257-86A2-4A82-8391-8F7A30EA7BAE
Disk identifier (GUID): 61D8174B-0FF2-4E23-94E2-4CD8C887FEF9
Problem reading disk in BasicMBRData::ReadMBRData()!
Warning! Read error 22; strange behavior now likely!
Warning! Read error 22; strange behavior now likely!
Disk identifier (GUID): 47F93EC9-EAFD-4349-B82D-040B1C15517B
Disk identifier (GUID): C33B4D83-7D0E-45E1-B2EB-68EDE2BEBB7A
Disk identifier (GUID): 82B84F3A-0538-4ADB-9467-699E17E87DB9
А также при этом это не UUID раздела созданного на GPT диске ploop:
for i in `find /dev/ploop*|egrep -v 'p1$'`;do blkid ${i}p1;done
/dev/ploop10267p1: UUID="bc34c9db-04f8-4c43-b180-210560e0bf50" TYPE="ext4"
/dev/ploop14204p1: UUID="c3b4888a-22a5-4025-b37f-d61904b16567" TYPE="ext4"
/dev/ploop18546p1: UUID="b2aa615b-8375-4a1f-8bf9-1756696d6718" TYPE="ext4"
/dev/ploop18662p1: UUID="b8ccbf07-85fe-44d3-bbc4-6593a3a0c872" TYPE="ext4"
/dev/ploop22367p1: UUID="88829ca9-e1b5-4499-94fe-46d987055368" TYPE="ext4"
/dev/ploop35145p1: UUID="b9370d59-fbad-4e15-b559-2c4af5f4a254" TYPE="ext4"
/dev/ploop38462p1: UUID="189bbe9e-20a2-4b09-8e61-1bf30a4a89f2" TYPE="ext4"
/dev/ploop41650p1: UUID="cb56f5a8-5e47-4ea4-b9bf-bd8e5b8578ff" TYPE="ext4"
/dev/ploop41997p1: UUID="4f53649c-683e-4a31-baea-87a446834f02" TYPE="ext4"
/dev/ploop57837p1: UUID="23028f1d-60de-4d7d-adf9-8466dbb1ff45" TYPE="ext4"
/dev/ploop57849p1: UUID="4f8bf47b-2259-4e60-9f69-bf4828740ee4" TYPE="ext4"
Не связывайтесь с фондом DST и товарищами серии Мильнера! Никогда!
Вот Вам отличная статья на тему "почему": http://habrahabr.ru/company/roem/blog/193488/
Sunday, 17 November 2013
Так кто же такие DevOps?
Вот лучшее объяснение на мой взгляд: http://puppetlabs.com/blog/what-is-a-devops-engineer
P.S. в Wiki бредятина написана, никакого отношения к реально жизни вообще:)
P.S. в Wiki бредятина написана, никакого отношения к реально жизни вообще:)
Friday, 15 November 2013
Проблемы с unordered_map в C++/11 на Debian Wheezy
Вот решил оптимизировать свой код, а он мне в ответ сегфолтами:
А вот такой бэктрейс:
(gdb) core coreТо есть, ошибка где-то во внутренностях реализации хширования unordered_map.
[New LWP 13007]
[New LWP 13002]
[New LWP 13006]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./fastnetmon'.
Program terminated with signal 11, Segmentation fault.
#0 0x000000000040e80a in std::__detail::_Hash_code_base<unsigned int, std::pair<unsigned int const, map_element>, std::_Select1st<std::pair<unsigned int const, map_element> >, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_bucket_index(std::__detail::_Hash_node<std::pair<unsigned int const, map_element>, false> const*, unsigned long) const ()
А вот такой бэктрейс:
#0 0x000000000040e80a in std::__detail::_Hash_code_base<unsigned int, std::pair<unsigned int const, map_element>, std::_Select1st<std::pair<unsigned int const, map_element> >, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_bucket_index(std::__detail::_Hash_node<std::pair<unsigned int const, map_element>, false> const*, unsigned long) const ()
(gdb) bt
#0 0x000000000040e80a in std::__detail::_Hash_code_base<unsigned int, std::pair<unsigned int const, map_element>, std::_Select1st<std::pair<unsigned int const, map_element> >, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_bucket_index(std::__detail::_Hash_node<std::pair<unsigned int const, map_element>, false> const*, unsigned long) const ()
#1 0x000000000040b485 in std::_Hashtable<unsigned int, std::pair<unsigned int const, map_element>, std::allocator<std::pair<unsigned int const, map_element> >, std::_Select1st<std::pair<unsigned int const, map_element> >, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>::_M_bucket_index(std::__detail::_Hash_node<std::pair<unsigned int const, map_element>, false>*) const ()
#2 0x00000000004093f8 in std::_Hashtable<unsigned int, std::pair<unsigned int const, map_element>, std::allocator<std::pair<unsigned int const, map_element> >, std::_Select1st<std::pair<unsigned int const, map_element> >, std::equal_to<unsigned int>, std::hash<unsigned int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>::count(unsigned int const&) const ()
#3 0x0000000000405c45 in parse_packet(unsigned char*, pcap_pkthdr*, unsigned char const*) ()
#4 0x0000000000406a8f in ulog_main_loop() ()
#5 0x0000000000417a63 in _ZNSt12_Bind_simpleIFPFvvEvEE9_M_invokeIJEEEvSt12_Index_tupleIJXspT_EEE ()
#6 0x00000000004179b3 in std::_Bind_simple<void (*())()>::operator()() ()
#7 0x0000000000417908 in std::thread::_Impl<std::_Bind_simple<void (*())()> >::_M_run() ()
#8 0x00007ff89362c400 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#9 0x00007ff893a8eb50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#10 0x00007ff892e2ea7d in clone () from /lib/x86_64-linux-gnu/libc.so.6
#11 0x0000000000000000 in ?? ()
Включение крэш дампов процессов для PHP-FPM на Debian Wheezy
Открываем настройки пула (обычно: /etc/php5/fpm/pool.d/www.conf ) и задаем там параметр:
rlimit_core = unlimited
Профайлинг кода на С/С++ на Linux
Довольно прост как и все на Linux :)
Для начала нужно для g++/gcc добавить флаги для сборки: -g -pg
После этого запустить программу, погонять приличное время и обнаружить в папке программы файлик gmon.out. Который в свою очередь можно прочесть программой: gprof ./имя_отлаживаемой_программы.
Для начала нужно для g++/gcc добавить флаги для сборки: -g -pg
После этого запустить программу, погонять приличное время и обнаружить в папке программы файлик gmon.out. Который в свою очередь можно прочесть программой: gprof ./имя_отлаживаемой_программы.
Thursday, 14 November 2013
Еще одна причина использовать clang++ вместо g++
Сравните выдачу g++ при малюсенькой ошибке в шаблонах:
ip_lookup.cpp: In function ‘void insert_prefix_bitwise_tree(tree_leaf*, std::string, int)’:
ip_lookup.cpp:116:45: error: no match for ‘operator&’ in ‘std::cout.std::basic_ostream<_CharT, _Traits>::operator<< <char, std::char_traits<char> >(netmask_as_int) & (1 << i)’
ip_lookup.cpp:116:45: note: candidates are:
In file included from /usr/include/c++/4.7/ios:43:0,
from /usr/include/c++/4.7/ostream:40,
from /usr/include/c++/4.7/iostream:40,
from ip_lookup.cpp:1:
/usr/include/c++/4.7/bits/ios_base.h:77:3: note: std::_Ios_Fmtflags std::operator&(std::_Ios_Fmtflags, std::_Ios_Fmtflags)
/usr/include/c++/4.7/bits/ios_base.h:77:3: note: no known conversion for argument 1 from ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘std::_Ios_Fmtflags’
/usr/include/c++/4.7/bits/ios_base.h:117:3: note: std::_Ios_Openmode std::operator&(std::_Ios_Openmode, std::_Ios_Openmode)
/usr/include/c++/4.7/bits/ios_base.h:117:3: note: no known conversion for argument 1 from ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘std::_Ios_Openmode’
/usr/include/c++/4.7/bits/ios_base.h:155:3: note: std::_Ios_Iostate std::operator&(std::_Ios_Iostate, std::_Ios_Iostate)
/usr/include/c++/4.7/bits/ios_base.h:155:3: note: no known conversion for argument 1 from ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ to ‘std::_Ios_Iostate’
In file included from ip_lookup.cpp:96:0:
/usr/include/c++/4.7/bitset:1418:5: note: template<long unsigned int _Nb> std::bitset<_Nb> std::operator&(const std::bitset<_Nb>&, const std::bitset<_Nb>&)
/usr/include/c++/4.7/bitset:1418:5: note: template argument deduction/substitution failed:
ip_lookup.cpp:116:45: note: ‘std::basic_ostream<char>::__ostream_type {aka std::basic_ostream<char>}’ is not derived from ‘const std::bitset<_Nb>’
И выдачу clang (он ее еще посдсветил!!!):
clang ip_lookup.cpp -g -pg
ip_lookup.cpp:116:36: error: invalid operands to binary expression ('__ostream_type'
(aka 'basic_ostream<char, std::char_traits<char> >') and 'int')
std::cout<< netmask_as_int & (1 << i);
~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~
/usr/include/c++/4.6/bits/ios_base.h:76:3: note: candidate function not viable: no known conversion from '__ostream_type' (aka
'basic_ostream<char, std::char_traits<char> >') to 'std::_Ios_Fmtflags' for 1st argument;
operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
^
/usr/include/c++/4.6/bits/ios_base.h:116:3: note: candidate function not viable: no known conversion from '__ostream_type' (aka
'basic_ostream<char, std::char_traits<char> >') to 'std::_Ios_Openmode' for 1st argument;
operator&(_Ios_Openmode __a, _Ios_Openmode __b)
^
/usr/include/c++/4.6/bits/ios_base.h:154:3: note: candidate function not viable: no known conversion from '__ostream_type' (aka
'basic_ostream<char, std::char_traits<char> >') to 'std::_Ios_Iostate' for 1st argument;
operator&(_Ios_Iostate __a, _Ios_Iostate __b)
^
/usr/include/c++/4.6/bitset:1408:5: note: candidate template ignored: failed template argument deduction
operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y)
Версии (Debian Wheezy):
clang -v
Debian clang version 3.0-6.2 (tags/RELEASE_30/final) (based on LLVM 3.0)
gcc --version
gcc (Debian 4.7.2-5) 4.7.2
Tuesday, 12 November 2013
Sunday, 10 November 2013
Использование go на CentOS 5 и 6
На удивление фича статической компиляции используемая в языке Go дала огромные преимущества - будучи скомпилировал на CentOS 6 он отлично и без каких-либо проблем вообще запустился на CentOS 5!!! :)
[root@ovz ~]# cat /etc/issue
CentOS release 5.10 (Final)
Kernel \r on an \m
[root@ovz ~]# uname -a
Linux ovz.fastvps.ru 2.6.32-042stab079.6 #1 SMP Mon Aug 26 19:47:50 MSK 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@ovz ~]# file -s ./hello
./hello: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), statically linked, not stripped
[root@ovz ~]# ./hello
hello, world
Saturday, 9 November 2013
connect() to unix:/var/run/php5-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream
This summary is not available. Please
click here to view the post.
Friday, 8 November 2013
Установка samba сервера на Debian 7 Squeeze
В статье будет рассмотрено использование SAMBA как хранилища файлов в режиме "только чтение".
Стягиваем репозитории:
Ставим samba сервер:
Также для тестов ставим клиент:
Соглашаемся с именем рабочей группы "WORKGROUP", далее оказываемся от "Modify smb.conf to use WINS settings from DHCP?".
Убеждаемся, что samba запустилась и слушает 139 и 445 порты:
Теперь самбу нужно сконфигурировать:
Там в самом низу находим заголовки "[printers]" и "[print$]" и полностью комментируем как заголовки, так и содержимое блока диезом (#). Тоже самое делаем с блоком [homes] (отключаем шары для юзеров системы).
А теперь в самый низ добавляем нашу шару:
Создаем папку для хранения файлов:
Кладем тестовый файл в папку:
Перезапускаем самбу:
Теперь попробуем запросить листинг ресурсов, доступных на нашем сервере посредством smbclient:
Теперь подключаемся к ресурсу fileserver и пробуем скачать файл:
Ну вот и все :)
По материалам: http://linux.byexamples.com/archives/99/access-windows-through-samba-using-smbclient/
Стягиваем репозитории:
apt-get update -y
Ставим samba сервер:
apt-get install -y samba samba-common-bin
Также для тестов ставим клиент:
apt-get install -y smbclient
Соглашаемся с именем рабочей группы "WORKGROUP", далее оказываемся от "Modify smb.conf to use WINS settings from DHCP?".
Убеждаемся, что samba запустилась и слушает 139 и 445 порты:
netstat -lnpt | grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 11104/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 11104/smbd
Теперь самбу нужно сконфигурировать:
vi /etc/samba/smb.conf
Там в самом низу находим заголовки "[printers]" и "[print$]" и полностью комментируем как заголовки, так и содержимое блока диезом (#). Тоже самое делаем с блоком [homes] (отключаем шары для юзеров системы).
А теперь в самый низ добавляем нашу шару:
[fileserver]Или если требуется запись: read only = no. guest ok дает доступ любому юзеру. Если хотите разрешите заданному юзеру: valid users = имя_системного_юзера. А потом задать ему повторно пароль: smbpasswd -a megaplan (пароль будет отличаться от системного, так используются иные механизмы)
comment = Some files
read only = yes
locking = no
path = /var/smbshare
guest ok = yes
Создаем папку для хранения файлов:
mkdir /var/smbshare
Кладем тестовый файл в папку:
touch /var/smbshare/testfile
Перезапускаем самбу:
/etc/init.d/samba restart
Теперь попробуем запросить листинг ресурсов, доступных на нашем сервере посредством smbclient:
smbclient -L xx.xx.xx.xx -N
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]
Sharename Type Comment
--------- ---- -------
fileserver Disk Some files
IPC$ IPC IPC Service (test server)
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]
Server Comment
--------- -------
test test server
Workgroup Master
--------- -------
WORKGROUP
Теперь подключаемся к ресурсу fileserver и пробуем скачать файл:
smbclient \\\\xx.xx.xx.xx\\fileserver -N
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.2.5]
smb: \> dir
. D 0 Tue Nov 9 02:40:35 2010
.. D 0 Tue Nov 9 02:39:13 2010
testfile 0 Tue Nov 9 02:40:35 2010
34286 blocks of size 16777216. 31219 blocks available
smb: \> get testfile
getting file \testfile of size 0 as testfile (0.0 kb/s) (average 0.0 kb/s)
smb: \>
Ну вот и все :)
По материалам: http://linux.byexamples.com/archives/99/access-windows-through-samba-using-smbclient/
Wednesday, 6 November 2013
Свитч D-Link DXS-3600-32S опыт тестирования
Друзья!
Кому лень читать - НЕ ВЗДУМАЙТЕ КУПИТЬ ЭТОТ УЖАС!!!!
Сразу оговорюсь - речь про 32х портовый SFP+ (10 гигабит) оптический свитч производства D-Link.
Мы почти месяц тестировали данное устройство (хочется сказать что-то обидное про этот чудесный 10 гигабитный свич). Такого феерического фейерверка багов за 10 тысяч евро мы не видели ни разу.
У нас была ревизия А, так вот - оно чуть менее непотребно чем полностью. Все жалобы на откровенную неработоспособность тривиальнейших фич - "обратитесь в сервис для замены устройства".
Это пол беды - даже заменив устройство на более-менее удачную версию железа B Вы все равно огребете кучу фич в стиле "ой, а эта фича заявлена, но будет только в прошивке через полгода". Вот, зацените: http://forum.dlink.ru/viewtopic.php?f=2&t=162528
Да и вообще поиск по модели свича несет немыслимое число лулзов.
Друзья! НИКОГДА, НИКОГДА не смотрите в сторону этого дивайса. Такого откровенного плевка в потребителей на моей практике (не сильно короткой, к слову) не допускала ни единая компания, даже производящая роутеры за 500 рублей.
Чем заменить? Смотрите на продукцию Extreme серии x670 (почти месяц очень серьезных тестов и пара мелких неудобств), самое смешное, что стоит она дешевле, а уровень надежности и число фич - просто поражают (кто хочет реальный подробный фидбэк - в комментарии, попробуем свой опыт формализовать).
Кому лень читать - НЕ ВЗДУМАЙТЕ КУПИТЬ ЭТОТ УЖАС!!!!
Сразу оговорюсь - речь про 32х портовый SFP+ (10 гигабит) оптический свитч производства D-Link.
Мы почти месяц тестировали данное устройство (хочется сказать что-то обидное про этот чудесный 10 гигабитный свич). Такого феерического фейерверка багов за 10 тысяч евро мы не видели ни разу.
У нас была ревизия А, так вот - оно чуть менее непотребно чем полностью. Все жалобы на откровенную неработоспособность тривиальнейших фич - "обратитесь в сервис для замены устройства".
Это пол беды - даже заменив устройство на более-менее удачную версию железа B Вы все равно огребете кучу фич в стиле "ой, а эта фича заявлена, но будет только в прошивке через полгода". Вот, зацените: http://forum.dlink.ru/viewtopic.php?f=2&t=162528
Да и вообще поиск по модели свича несет немыслимое число лулзов.
Друзья! НИКОГДА, НИКОГДА не смотрите в сторону этого дивайса. Такого откровенного плевка в потребителей на моей практике (не сильно короткой, к слову) не допускала ни единая компания, даже производящая роутеры за 500 рублей.
Чем заменить? Смотрите на продукцию Extreme серии x670 (почти месяц очень серьезных тестов и пара мелких неудобств), самое смешное, что стоит она дешевле, а уровень надежности и число фич - просто поражают (кто хочет реальный подробный фидбэк - в комментарии, попробуем свой опыт формализовать).
Tuesday, 5 November 2013
Roadmap RHEL 7, куча всяких ништяков!
http://rhsummit.files.wordpress.com/2012/03/burke_rhel_roadmap.pdf
Кратко:
Кратко:
- Будет возможность апгрейда с RHEL 6 без переустановки!
- KVM Exceptional features – Same OS for the host/guest
- Production ready LXC!
- Поддержка libteam! Новая, суперская реализация bonding!
- Systemd - и сокращение времени загрузки вдвое!
- Большая работа по поддержке ARM в Fedora!
- Поддержка создания RAID 4,5,6 силами LVM
- Новая реализация LVM снапшотов
- libStorageMgmt - API управления внешними системам хранения
- Полная поддержка BTRFS
- Официальная поддержка ext4 размером до 16 Тб
- Официальная поддержка XFS до 500 Тб
- Официальная поддержка GFS2 до 250 ТБ
- Переход на grub2 (наконец-то таки!!!)
- Centralized management of SSH Keys – Capability to deliver user's ssh public key to servers. Ну прямо праздник какой-то!
- Поддержка С++11 компиляторами!
- IPset искаропки
- Firewalld - крутая настройка над iptables! Велкам: https://fedoraproject.org/wiki/FirewallD?rd=FirewallD/ но возможно ее в RHEL7 не будет, только в Fedora 18.
- Еще много чего :)
Sunday, 3 November 2013
Фича системы управления конфигурациями Chef
upload The upload argument is used to upload one or more cookbooks (and any files that are associated with those cookbooks) from a local repository to the server. Only files that do not already exist on the server will be uploaded.
Это же волшебно! Хотеть в puppet!
Saturday, 2 November 2013
Хорошая книга по сетям TCP/IP - как она выглядит?
Уже довольно долгое время я пытаюсь найти книгу, с помощью которой смогу собрать воедино все свои урывочные знания по сетям.
Одной из первых книг в моей библиотеке по сетям была книга Олифер/Олифер, которая на долгие годы отбила малейшее желание изучать сети - ужасающе количество совершенно устаревших протоколов, не нужных подробностей и одностраничное описание TCP/UDP и прочих реально важных и нужных в ежедневной практике протоколов.
Одной из следующих попыток компенсировать свои не особо четкие познания о сетях были многократные попытки купить книги Таненбаума. Но при малейшем осмотре становится ясно - это тот же самый Олифер/Олифер, только от более именитого автора. Опять слишком много информации о GSM/ISDN/ATM и прочих уже канувших в лету вещах и как всегда мало информации о сетях сегодняшнего или хотя бы вчерашнего дня.
Где-то через 3 года мне на глаза попалась книга TCP Illustrated, более подробно Вы можете прочесть про нее на вики: http://en.wikipedia.org/wiki/TCP/IP_Illustrated
В этом трехтомнике, на мой взгляд, наиболее интересна первая книга, потому что там дается очень хороший набор информации по базовым протоколам (ее содержание Вы можете найти на Amazon). Вторая книга зовется "реализации" и там на примере стека BSD4 с максимумом подробностей рассказывается, как все протоколы работают на практике. Эту книгу можно рекомендовать всем желающим познать "в идеале", большинству же подробности реализации вряд ли будут интересны. В третьей книге рассматриваются совершенно уж футуристические вещи, например Transactional TCP, о котором вряд ли кто из читателей слышал в наши дни, поэтому интересна она лишь с исторической точки зрения :)
Отдельно стоит упомянуть автора, на мой взгляд, Ричард Стивенс - один из лучших авторов книг по программированию под Linux/UNIX и его книги все без исключения заслуживают Вашего внимания.
Ну и да - все книги серии можно найти на Amazon.com :)
Одной из первых книг в моей библиотеке по сетям была книга Олифер/Олифер, которая на долгие годы отбила малейшее желание изучать сети - ужасающе количество совершенно устаревших протоколов, не нужных подробностей и одностраничное описание TCP/UDP и прочих реально важных и нужных в ежедневной практике протоколов.
Одной из следующих попыток компенсировать свои не особо четкие познания о сетях были многократные попытки купить книги Таненбаума. Но при малейшем осмотре становится ясно - это тот же самый Олифер/Олифер, только от более именитого автора. Опять слишком много информации о GSM/ISDN/ATM и прочих уже канувших в лету вещах и как всегда мало информации о сетях сегодняшнего или хотя бы вчерашнего дня.
Где-то через 3 года мне на глаза попалась книга TCP Illustrated, более подробно Вы можете прочесть про нее на вики: http://en.wikipedia.org/wiki/TCP/IP_Illustrated
В этом трехтомнике, на мой взгляд, наиболее интересна первая книга, потому что там дается очень хороший набор информации по базовым протоколам (ее содержание Вы можете найти на Amazon). Вторая книга зовется "реализации" и там на примере стека BSD4 с максимумом подробностей рассказывается, как все протоколы работают на практике. Эту книгу можно рекомендовать всем желающим познать "в идеале", большинству же подробности реализации вряд ли будут интересны. В третьей книге рассматриваются совершенно уж футуристические вещи, например Transactional TCP, о котором вряд ли кто из читателей слышал в наши дни, поэтому интересна она лишь с исторической точки зрения :)
Отдельно стоит упомянуть автора, на мой взгляд, Ричард Стивенс - один из лучших авторов книг по программированию под Linux/UNIX и его книги все без исключения заслуживают Вашего внимания.
Ну и да - все книги серии можно найти на Amazon.com :)
Friday, 1 November 2013
Сборка resize2fs из комплекта e2fsprogs
Зачем? Для работы ploop на OpenVZ/CentOS 5. Для CentOS 6 в репозитории OpenVZ поставляется спец пакетик с обновленной (относительно системы) версией resize2fs:
Попробуем сделать тоже самое, но для OpenVZ на CentOS 5:
rpm -ql e2fsprogs-resize2fs-static-1.42.3-3.el6.1.ovz.x86_64Слинкован он при этом статически, без внешних зависимостей:
/usr/libexec/resize2fs
ldd /usr/libexec/resize2fs
linux-vdso.so.1 => (0x00007fff29eec000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f9fb7bee000)
libc.so.6 => /lib/libc.so.6 (0x00007f9fb785b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9fb7e15000)
Попробуем сделать тоже самое, но для OpenVZ на CentOS 5:
yum install -y gcc make
cd /usr/src
wget -Oe2fsprogs-1.42.3.tar.gz 'http://downloads.sourceforge.net/project/e2fsprogs/e2fsprogs/v1.42.3/e2fsprogs-1.42.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fe2fsprogs%2Ffiles%2Fe2fsprogs%2Fv1.42.3%2F&ts=1383316431&use_mirror=citylan'
tar -xf e2fsprogs-1.42.3.tar.gz
cd e2fsprogs-1.42.3/
./configure --prefix=/opt/e2fsprogs --disable-debugfs --disable-defrag --disable-imager
make install
В итоге в папочке /opt/e2fsprogs мы обнаружим статически слинкованный resize2fs:
ldd /opt/e2fsprogs/sbin/resize2fs
linux-vdso.so.1 => (0x00007fff7ad85000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003201800000)
libc.so.6 => /lib64/libc.so.6 (0x0000003201000000)
/lib64/ld-linux-x86-64.so.2 (0x0000003200c00000)
Который можно закинуть на CentOS 5 ноду, чтобы добиться корректной работы ploop на CentOS 5.
Ради теста перекинул на другую машину и все заработало на ура:
Но итог всей затеи - ploop на CentOS 5 не особо удачный:
Ради теста перекинул на другую машину и все заработало на ура:
./resize2fs
resize2fs 1.42.3 (14-May-2012)
Usage: ./resize2fs [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [new_size]
Но итог всей затеи - ploop на CentOS 5 не особо удачный:
This filesystem will be automatically checked every 23 mounts orНадо менять в ploop вызовы tune2fs на tune4fs, так как в CentOS 5 пакеты и тулзы для экст2/3 и экст4 - отдельные.
180 days, whichever comes first. Use tune4fs -c or -i to override.
tune2fs 1.39 (29-May-2006)
tune2fs: Filesystem has unsupported feature(s) while trying to open /dev/ploop26472p1
Couldn't find valid filesystem superblock.
Error in run_prg_rc (util.c:289): Command tune2fs -ouser_xattr,acl /dev/ploop26472p1 exited with code 1
Unmounting device /dev/ploop26472
Failed to create image: Error in run_prg_rc (util.c:289): Command tune2fs -ouser_xattr,acl /dev/ploop26472p1 exited with code 1 [24]
Destroying container private area: /vz/private/7777
Creation of container private area failed
Миграция Debian 7 Wheezy на systemd
Зачем? Попробовать systemd!
Итак, все очень просто:
После этого нужно явно указать инит через параметры grub:
После этого обновляем конфигурацию grub:
И перезагружаемся:
Если все загрузилось корректно, убеждаемся в этом:
Итак, все очень просто:
apt-get update -y
apt-get install -y systemd
После этого нужно явно указать инит через параметры grub:
$EDITOR /etc/default/grubИ приводим строку к виду GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="тут_у_вас_ранее_были_параметры_сохраните_их_тут init=/lib/systemd/systemd"
После этого обновляем конфигурацию grub:
update-grubЗачем такие сложности с grub? Дело в том, что в Debian есть проблемы с пакетом systemd-sysv, он конфликтует с пакетом существующего загрузчика init, который в свою очередь невозможно (возможно, конечно, в теории, но вряд ли после этого Вы сможете нормально пользоваться сервером) удалить/заменить через пакетный менеджер.
И перезагружаемся:
shutdown -r now
Если все загрузилось корректно, убеждаемся в этом:
ps aux|grep systemd
root 1 0.7 0.0 40984 3924 ? Ss 11:45 0:01 /lib/systemd/systemd
root 312 0.0 0.0 34772 1504 ? Ss 11:45 0:00 /lib/systemd/systemd-journald
105 853 0.0 0.0 29800 1456 ? Ss 11:46 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 958 0.0 0.0 34392 1588 ? Ss 11:46 0:00 /lib/systemd/systemd-logind
root 1119 0.0 0.0 9232 880 pts/0 S+ 11:48 0:00 grep systemd
Subscribe to:
Posts
(
Atom
)