<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19487637</id><updated>2024-09-05T05:35:33.804+03:00</updated><category term="linux"/><category term="bash"/><category term="FreeBSD"/><category term="ra"/><category term="ubuntu"/><category term="zoneminder"/><category term="реляционная алгебра"/><category term="MSSQL"/><category term="SQSH"/><category term="airport"/><category term="android"/><category term="apache"/><category term="apt"/><category term="cacti"/><category term="cer"/><category term="cpan"/><category term="crt"/><category term="dd"/><category term="disk"/><category term="ext2"/><category term="ext3"/><category term="fdisk"/><category term="fio"/><category term="firewall"/><category term="fs"/><category term="gmirror"/><category term="iops"/><category term="luks"/><category term="lxc"/><category term="max"/><category term="mjpg-streamer"/><category term="mobi"/><category term="monitor"/><category term="nc"/><category term="nfs"/><category term="nginx"/><category term="openssl"/><category term="p12"/><category term="pem"/><category term="perl"/><category term="php-fpm"/><category term="public wifi"/><category term="sata"/><category term="scsi"/><category term="snmp"/><category term="sqlite"/><category term="strace"/><category term="su"/><category term="tcpdump"/><category term="timezone"/><category term="ubuntu 9.10"/><category term="unixtime"/><category term="vpn"/><category term="webcam"/><category term="wget"/><category term="xfce4"/><category term="xrandr"/><category term="zic"/><category term="деление"/><category term="максимум"/><category term="онлайн-трансляция"/><category term="шифрование файловой системы"/><title type='text'>Заметки о том и сем.</title><subtitle type='html'>Блог о задачах связанных с linux/freebsd которые мне приходилось решать.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19487637.post-7037913126357577252</id><published>2015-06-22T13:33:00.000+03:00</published><updated>2015-06-22T13:33:03.411+03:00</updated><title type='text'>Память в linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
https://utcc.utoronto.ca/~cks/space/blog/linux/KernelMemoryZones&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
# cat /proc/buddyinfo&lt;br /&gt;Node 0, zone &amp;nbsp; &amp;nbsp; &amp;nbsp;DMA &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;3&lt;br /&gt;&lt;b&gt;Node 0, zone &amp;nbsp; &amp;nbsp;DMA32 &amp;nbsp;14461 &amp;nbsp; 9784 &amp;nbsp; 9378 &amp;nbsp; &amp;nbsp;136 &amp;nbsp; &amp;nbsp; &amp;nbsp;6 &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;/b&gt;&lt;br /&gt;Node 0, zone &amp;nbsp; Normal 127027 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;3 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0&lt;br /&gt;Node 1, zone &amp;nbsp; Normal 276309 &amp;nbsp;55592 &amp;nbsp; 5505 &amp;nbsp; 1433 &amp;nbsp; &amp;nbsp;279 &amp;nbsp; &amp;nbsp; &amp;nbsp;2 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0 &amp;nbsp; &amp;nbsp; &amp;nbsp;1 &amp;nbsp; &amp;nbsp; &amp;nbsp;0&amp;nbsp;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;# getconf PAGESIZE&lt;br /&gt;4096&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Страниц в памяти DMA32 по 4kb 14461 штука. По 8kb - 9784, по 16kb - 9378 страниц и т.д.&lt;/div&gt;
&lt;div&gt;
Если много чанков по 1 странице в 4kb - значит память сильно фрагментирована.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
https://utcc.utoronto.ca/~cks/space/blog/linux/DecodingPageAllocFailures&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/7037913126357577252/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2015/06/linux.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7037913126357577252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7037913126357577252'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2015/06/linux.html' title='Память в linux'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-8970613151504875259</id><published>2014-02-14T19:30:00.001+04:00</published><updated>2014-02-20T14:50:31.523+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ext2"/><category scheme="http://www.blogger.com/atom/ns#" term="ext3"/><category scheme="http://www.blogger.com/atom/ns#" term="fs"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Internals of the ext2 Filesystem</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
http://perl.plover.com/classes/ext2fs/&lt;br /&gt;
http://www.nongnu.org/ext2-doc/ext2.html&lt;br /&gt;
http://www.linuxforums.org/articles/journalling-block-device-jbd-_1544.html&lt;br /&gt;
http://www.dfrws.org/2012/proceedings/DFRWS2012-13.pdf&lt;br /&gt;
http://homepage.smc.edu/morgan_david/cs40/analyze-ext2.htm&lt;br /&gt;
http://ols.fedoraproject.org/OLS/Reprints-2008/kumar-reprint.pdf&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/8970613151504875259/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2014/02/internals-of-ext2-filesystem.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8970613151504875259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8970613151504875259'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2014/02/internals-of-ext2-filesystem.html' title='Internals of the ext2 Filesystem'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-7984388541665429611</id><published>2014-02-12T18:54:00.001+04:00</published><updated>2014-02-12T18:54:16.256+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="nc"/><category scheme="http://www.blogger.com/atom/ns#" term="strace"/><title type='text'>Как отправлять логи через nc.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Понадобилось мне отправлять логи strace на другой хост для диагностики работы команды fsfreeze. Пришлось делать так:&lt;br /&gt;
&lt;br /&gt;
На сервере:&lt;br /&gt;
&lt;b&gt;nc -k -l 1234&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
На клиенте:&lt;br /&gt;
&lt;b&gt;strace -f -s 20000 fsfreeze --freeze / |&amp;amp; nc proxy01h.dps.net 1234&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/7984388541665429611/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2014/02/nc.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7984388541665429611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7984388541665429611'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2014/02/nc.html' title='Как отправлять логи через nc.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-4240880128850479610</id><published>2013-08-14T23:27:00.004+04:00</published><updated>2013-08-14T23:29:56.129+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="mobi"/><title type='text'>bash manual in mobi format</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://yadi.sk/d/g3hGVMki7veTs&quot; target=&quot;_blank&quot;&gt;bash manual in mobi format&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/4240880128850479610/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/08/bash-manual-in-mobi-format.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4240880128850479610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4240880128850479610'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/08/bash-manual-in-mobi-format.html' title='bash manual in mobi format'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-5682600980599628798</id><published>2013-04-04T20:09:00.000+04:00</published><updated>2013-11-07T22:45:01.103+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apt"/><title type='text'>Установить новый конфиг без вопросов.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;pre&gt;&lt;code&gt;apt-get -o Dpkg::Options::=&quot;--force-confnew&quot; install your-package&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;export DEBIAN_FRONTEND=noninteractive; apt-get install --yes --force-yes -o Dpkg::Options::=&quot;--force-confdef&quot; -o Dpkg::Options::=&quot;--force-confold&quot; your-package&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/5682600980599628798/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/5682600980599628798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/5682600980599628798'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/04/blog-post.html' title='Установить новый конфиг без вопросов.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-8177597116418998790</id><published>2013-03-22T15:14:00.001+04:00</published><updated>2013-03-22T15:14:13.158+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sata"/><category scheme="http://www.blogger.com/atom/ns#" term="scsi"/><title type='text'>Замена hotswap sata диска в linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://livid.pp.ru/?p=511&quot; target=&quot;_blank&quot;&gt;http://livid.pp.ru/?p=511&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;remove-scsi&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#! /bin/bash
#----------------------------------------------------------------------
# Description: a simple script to remove SCSI devices
# Author: Artem S. Tashkinov &lt;no-mail no-mail.com=&quot;&quot;&gt;
# Created at: Tue Sep 15 18:30:41 YEKST 2009
# Computer: localhost.localdomain
# System: Linux 2.6.31-k8l on i686
#
# Copyright (c) 2009 Artem S. Tashkinov  All rights reserved.
# Copyright (c) 2011 Nikolay M. &quot;Livid&quot; Yakimov  All lefts reserved.
#
#----------------------------------------------------------------------
 
strhb=&quot;hot-pluggable SCSI devices&quot;
DEVLIST=/sys/class/scsi_disk/*/device
 
echo &quot;We have found the following $strhb:&quot;
 
i=0
for item in $DEVLIST; do
        i=$((i+1))
        d_id[$i]=&quot;$item&quot;
        echo -n &quot; $i: &quot;
        cat &quot;$item&quot;/model | tr -d &#39;\n&#39;
        echo -n &quot; &quot;
        ls &quot;$item&quot;/block | tr &#39;\n&#39; &#39; &#39;
        echo
done
 
echo -n &quot;Please, enter a device number to remove or 0 to exit: &quot;
read devn
 
if ! [ &quot;$devn&quot; -eq &quot;$devn&quot; 2&amp;gt; /dev/null ]; then
        echo &quot;Error: $devn isn&#39;t a number, bye.&quot;
        exit 2
fi
 
if [ &quot;$devn&quot; -lt 1 -o &quot;$devn&quot; -gt $i -o &quot;$devn&quot; -eq 0 ]; then
        echo &quot;No action taken, bye.&quot;
        exit
fi
 
echo 1 &amp;gt; &quot;${d_id[$devn]}&quot;/delete
echo &quot;Done. Consult with dmesg to find out if the device was actually removed&quot;&amp;nbsp;&lt;/no-mail&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;no-mail no-mail.com=&quot;&quot;&gt;&amp;nbsp;&lt;/no-mail&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;no-mail no-mail.com=&quot;&quot;&gt;&amp;nbsp;&lt;/no-mail&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;b&gt;rescan-scsi&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#! /bin/bash
 
SCSI=/sys/class/scsi_host
test ! -d &quot;$SCSI&quot; &amp;amp;&amp;amp; echo &quot;Error: cannot find $SCSI directory.&quot; &amp;amp;&amp;amp; exit 1
cd &quot;$SCSI&quot; || exit 1
 
for i in *; do
        echo -n &quot;Scanning $i ...&quot;
        echo &quot;- - -&quot; &amp;gt; $i/scan &amp;amp;&amp;amp; echo &quot; done.&quot;
done
 
echo &quot;Finished. Consult with &#39;dmesg&#39; for details.&quot;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/8177597116418998790/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/03/hotswap-sata-linux.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8177597116418998790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8177597116418998790'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/03/hotswap-sata-linux.html' title='Замена hotswap sata диска в linux'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-2072973607393758969</id><published>2013-01-26T00:31:00.001+04:00</published><updated>2013-01-26T00:31:42.430+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ra"/><category scheme="http://www.blogger.com/atom/ns#" term="деление"/><category scheme="http://www.blogger.com/atom/ns#" term="реляционная алгебра"/><title type='text'>Суть деления в реляционной алгебре на пальцах.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Предположим у нас есть две таблицы:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceS0Xt-Z8X4lFChP6zb0gGzMnsbly7xPcCdfDytgtc1ucIWfZdIR0W2wuPy_k8MqPaLBdvmk3GNvhG0Z41o5Z7579PR7eAgtywzmeevicUFM8mfeeplwRV0FWSinZIIzGGb8W/s1600/div_ra_1.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceS0Xt-Z8X4lFChP6zb0gGzMnsbly7xPcCdfDytgtc1ucIWfZdIR0W2wuPy_k8MqPaLBdvmk3GNvhG0Z41o5Z7579PR7eAgtywzmeevicUFM8mfeeplwRV0FWSinZIIzGGb8W/s1600/div_ra_1.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нам надо найти все пиццерии где подают и cheese и supreme.&lt;br /&gt;
В терминах реляционной алгебры запрос, который нам нужен будет выглядеть так:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;R&lt;span style=&quot;background-color: white; color: #005500; font-family: serif; line-height: 19.200000762939453px; text-align: center;&quot;&gt;÷&lt;/span&gt;S&lt;/span&gt;&lt;/div&gt;
Так получилось, что в курсе &amp;nbsp;&lt;a href=&quot;http://class2go.stanford.edu/db/Winter2013/pages/overview&quot; target=&quot;_blank&quot;&gt;Introduction to Databases&lt;/a&gt;, а точнее в викторине по реляционной алгебре не допускается использовать данный оператор. Поэтому деление пришлось реализовывать теми операторами, которые были разрешены.&lt;br /&gt;
Итак, первым делом &lt;b&gt;выбираем список пиццерий&lt;/b&gt;:&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;\project_{pizzeria} R;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Потом &lt;b&gt;перемножаем его со списком всех доступных пицц&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;\project_{pizzeria} R /cross S;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Получаем следующую табличку:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmtQ29ogT4LfemyThGjquHDELyI6Om0az4_Wh6YfYzXSugfRPL5AA0K8AD0XSFZpUvGbdLMiITprCNXc3RCr4WKTq6AjZZHxMkV8uZNcT6qdaG8vGECc-7G7kzEeKB71zWIEze/s1600/div_ra_2.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmtQ29ogT4LfemyThGjquHDELyI6Om0az4_Wh6YfYzXSugfRPL5AA0K8AD0XSFZpUvGbdLMiITprCNXc3RCr4WKTq6AjZZHxMkV8uZNcT6qdaG8vGECc-7G7kzEeKB71zWIEze/s1600/div_ra_2.PNG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, &lt;b&gt;вычитаем из получившейся таблицы таблицу R&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;( \project_{pizzeria} R /cross S ) /diff R;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Получаем одну строчку:&lt;br /&gt;
&lt;b&gt;Dominos - cheese.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Ну а далее все просто и я просто опишу это окончательным выражением:&lt;br /&gt;
&lt;br /&gt;
\project_{pizzeria} R \diff ( \project_{pizzeria} (&amp;nbsp;&lt;i&gt;( \project_{pizzeria} R /cross S ) /diff R ));&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Разобраться с задачей мне помог следующий документ:&amp;nbsp;https://www.dropbox.com/s/ns0a46ihweeb1fz/divisionEnglish.pdf&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/2072973607393758969/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/01/blog-post_26.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2072973607393758969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2072973607393758969'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/01/blog-post_26.html' title='Суть деления в реляционной алгебре на пальцах.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgceS0Xt-Z8X4lFChP6zb0gGzMnsbly7xPcCdfDytgtc1ucIWfZdIR0W2wuPy_k8MqPaLBdvmk3GNvhG0Z41o5Z7579PR7eAgtywzmeevicUFM8mfeeplwRV0FWSinZIIzGGb8W/s72-c/div_ra_1.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-6455883242448236437</id><published>2013-01-24T19:57:00.001+04:00</published><updated>2013-01-26T00:32:51.461+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="max"/><category scheme="http://www.blogger.com/atom/ns#" term="ra"/><category scheme="http://www.blogger.com/atom/ns#" term="максимум"/><category scheme="http://www.blogger.com/atom/ns#" term="реляционная алгебра"/><title type='text'>fahd.blog: Finding the Maximum using Relational Algebra</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;a href=&quot;http://fahdshariff.blogspot.ru/2011/10/finding-maximum-using-relational.html&quot;&gt;fahd.blog: Finding the Maximum using Relational Algebra&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre style=&quot;background-color: white; color: #1a222a; font-family: Consolas, &#39;Courier New&#39;, Courier, mono, serif; font-size: 12px; line-height: 16px;&quot;&gt;\project_{value}(T)
\diff
\project_{value} (
    \select_{value &amp;lt; value2}(
      \project_{value}(T)
      \cross
      \rename_{value2}(\project_{value}(T))
    )
)
&lt;/pre&gt;
&lt;span style=&quot;background-color: white; color: #1a222a; font-family: arial, sans-serif; font-size: 12px; line-height: 16px;&quot;&gt;where:&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;background-color: white; color: #1a222a; font-family: arial, sans-serif; font-size: 12px; line-height: 16px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; padding: 0px 2.5em;&quot;&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;&lt;code&gt;\cross&lt;/code&gt;&amp;nbsp;is the relational cross-product operator&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;&lt;code&gt;\diff&lt;/code&gt;&amp;nbsp;is the relational diff operator&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;&lt;code&gt;\project_{attr_list}&lt;/code&gt;&amp;nbsp;is the relational projection operator&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;&lt;code&gt;\rename_{new_attr_name_list}&lt;/code&gt;&amp;nbsp;is the relational renaming operator&lt;/li&gt;
&lt;li style=&quot;border: none; margin: 0px 0px 0.25em; padding: 0px;&quot;&gt;&lt;code&gt;\select_{cond}&lt;/code&gt;&amp;nbsp;is the relational selection operator&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/6455883242448236437/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/01/fahdblog-finding-maximum-using.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6455883242448236437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6455883242448236437'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/01/fahdblog-finding-maximum-using.html' title='fahd.blog: Finding the Maximum using Relational Algebra'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-4911720798979793310</id><published>2013-01-15T18:25:00.000+04:00</published><updated>2013-01-15T18:25:24.091+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="disk"/><category scheme="http://www.blogger.com/atom/ns#" term="fio"/><category scheme="http://www.blogger.com/atom/ns#" term="iops"/><title type='text'>Как правильно мерять производительность диска</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
http://habrahabr.ru/post/154235/&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Очень частой проблемой, является попытка понять «насколько быстрый сервер?» Среди всех тестов наиболее жалко выглядят попытки оценить производительность дисковой подсистемы. Вот ужасы, которые я видел в своей жизни:&lt;/span&gt;&lt;br /&gt;
&lt;ul style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;научная публикация, в которой скорость кластерной FS оценивали с помощью dd (и включенным файловым кешем, то есть без опции direct)&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;использование bonnie++&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;использование iozone&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;использование пачки cp с измерениема времени выполнения&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;использование iometer с dynamo на 64-битных системах&lt;/li&gt;
&lt;/ul&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Это всё совершенно ошибочные методы. Дальше я разберу более тонкие ошибки измерения, но в отношении этих тестов могу сказать только одно — выкиньте и не используйте.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;a href=&quot;&quot; name=&quot;habracut&quot; style=&quot;background-color: white; border: 0px; color: #6da3bd; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;/a&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;bonnie++ и iozone меряют скорость файловой системы. Которая зависит от кеша, задумчивости ядра, удачности расположения FS на диске и т.д. Косвенно можно сказать, что если в iozone получились хорошие результаты, то это либо хороший кеш, либо дурацкий набор параметров, либо действительно быстрый диск (угадайте, какой из вариантов достался вам). bonnie++ вообще сфокусирована на операциях открытия/закрытия файлов. т.е. производительность диска она особо не тестирует.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;dd без опции direct показывает лишь скорость кеша — не более. В некоторых конфигурациях вы можете получать линейную скорость без кеша выше, чем с кешем. В некоторых вы будете получать сотни мегабайт в секунду, при линейной производительности в единицы мегабайт.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;С опцией же direct (iflag=direct для чтения, oflag=direct для записи) dd проверяет лишь линейную скорость. Которая совершенно не равна ни максимальной скорости (если мы про рейд на много дисков, то рейд в несколько потоков может отдавать большую скорость, чем в один), ни реальной производительности.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;IOmeter — лучше всего перечисленного, но у него есть проблемы при работе в linux. 64-битная версия неправильно рассчитывает тип нагрузки и показывает заниженные результаты (для тех, кто не верит — запустите его на ramdisk).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Спойлер: правильная утилита для linux — fio. Но она требует очень вдумчивого составления теста и ещё более вдумчивого анализа результатов. Всё, что ниже — как раз подготовка теории и практические замечания по работе с fio.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Постановка задачи&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;em style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(текущая VS максимальная производительность)&lt;/em&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Сейчас будет ещё больше скучных букв. Если кого-то интересует количество попугаев на его любимой SSD&#39;шке, ноутбучном винте и т.д. — см рецепты в конце статьи.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Все современные носители, кроме ramdisk&#39;ов, крайне негативно относятся к случайным операциям записи. Для HDD нет разницы запись или чтение, важно, что головки гонять по диску. Для SSD же случайная операция чтения ерунда, а вот запись малым блоком приводит к copy-on-write. Минимальный размер записи — 1-2 Мб, пишут 4кб. Нужно прочитать 2Мб, заменить в них 4кб и записать обратно. В результате в SSD&#39;шку уходит, например, 400 запросов в секундну на запись 4кб которые превращаются в чтение 800 Мб/с (!!!!) и записи их обратно. (Для ramdisk&#39;а такая проблема могла бы быть тоже, но интрига в том, что размер «минимального блока» для DDR составляет около 128 байт, а блоки в тестах обычно 4кб, так что гранулярность DDR в тестах дисковой производительности оперативной памяти не важна).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Этот пост не про специфику разных носителей, так что возвращаемся к общей проблеме.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Мы не можем мерять запись в Мб/с. Важным является сколько перемещений головки было, и сколько случайных блоков мы потревожили на SSD. Т.е. счёт идёт на количество IO operation, а величина IO/s называется&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;IOPS&lt;/b&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;. Таким образом, когда мы меряем случайную нагрузку, мы говорим про IOPS (иногда wIOPS, rIOPS, на запись и чтение соотв.). В крупных системах используют величину kIOPS, (внимание, всегда и везде, никаких 1024) 1kIOPS = 1000 IOPS.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;И вот тут многие попадают в ловушку первого рода. Они хотят знать, «сколько IOPS&#39;ов» выдаёт диск. Или полка дисков. Или 200 серверных шкафов, набитые дисками под самые крышки.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Тут важно различать число выполненных операций (зафиксировано, что с 12:00:15 до 12:00:16 было выполнено 245790 дисковых операций — т.е. нагрузка составила 245kIOPS) и то, сколько система может выполнить операций максимум.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Число выполненых операций всегда известно и легко измерить. Но когда мы говорим про дисковую операцию, мы говорим про неё в будущем времени. «сколько операций может выполнить система?» — «каких операций?». Разные операции дают разную нагрузку на СХД. Например, если кто-то пишет случайными блоками по 1Мб, то он получит много меньше iops, чем если он будет читать последовательно блоками по 4кб.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;И если в случае пришедшей нагрузки мы говорим о том, сколько было обслужено запросов «какие пришли, такие и обслужили», то в случае планирования, мы хотим знать, какие именно iops&#39;ы будут.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Драма состоит в том, что никто не знает, какие именно запросы придут. Маленькие? Большие? Подряд? В разнобой? Будут они прочитаны из кеша или придётся идти на самое медленное место и выковыривать байтики с разных половинок диска?&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Я не буду нагнетать драму дальше, скажу, что существует простой ответ:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;ul style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Тест диска (СХД/массива) на best case (попадание в кеш, последовательные операции)&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Тест диска на worst case. Чаще всего такие тесты планируются с знанием устройства диска. «У него кеш 64Мб? А если я сделаю размер области тестирования в 2Гб?». Жёсткий диск быстрее читает с внешней стороны диска? А если я размещу тестовую область на внутренней (ближшей к шпинделю) области, да так, чтобы проходимый головками путь был поболе? У него есть read ahead предсказание? А если я буду читать в обратном порядке? И т.д.&lt;/li&gt;
&lt;/ul&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;В результате мы получаем цифры, каждая из которых неправильная. Например: 15kIOPS и 150 IOPS.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Какая будет реальная производительность системы? Это определяется только тем, как близко будет нагрузка к хорошему и плохому концу. (Т.е. банальное «жизнь покажет»).&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Чаще всего фокусируются на следующих показателях:&lt;/span&gt;&lt;ol style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; list-style: decimal outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Что best case всё-таки best. Потому что можно дооптимизироваться до такого, что best case от worst будет отличаться едва-едва. Это плохо (ну или у нас такой офигенный worst).&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: decimal outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;На worst. Имея его мы можем сказать, что СХД будет работать быстрее, чем полученный показатель. Т.е. если мы получили 3000 IOPS, то мы можем смело использовать систему/диск в нагрузке «до 2000».&lt;/li&gt;
&lt;/ol&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Ну и про размер блока. Традиционно тест идёт с размером блока в 4к. Почему? Потому что это стандартный размер блока, которым оперируют ОС при сохранении файла. Это размер страницы памяти и вообще, Очень Круглое Компьютерное Число.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Нужно понимать, что если система обрабатывает 100 IOPS с 4к блоком (worst), то она будет обрабатывать меньше при 8к блоке (не менее 50 IOPS, вероятнее всего, в районе 70-80). Ну и на 1Мб блоке мы увидим совсем другие цифры.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Всё? Нет, это было только вступление. Всё, что написано выше, более-менее общеизвестно. Нетривиальные вещи начинаются ниже.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Для начала мы рассмотрим понятие «зависимых IOPS&#39;ов». Представим себе, что у нас приложение работает так:&lt;/span&gt;&lt;ul style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;прочитать запись&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;поменять запись&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;записать запись обратно&lt;/li&gt;
&lt;/ul&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Для удобства будем полагать, что время обработки нулевое. Если каждый запрос на чтение и запись будет обслуживаться 1мс, сколько записей в секунду сможет обработать приложение? Правильно, 500. А если мы запустим рядом вторую копию приложения? На любой приличной системе мы получим 1000. Если мы получим значительно меньше 1000, значит мы достигли предела производительности системы. Если нет — значит, что производительность приложения с зависимыми IOPS&#39;ами ограничивается не производительностью СХД, а двумя параметрами: latency и уровнем зависимости IOPS&#39;ов.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Начнём с latency.&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Latency&lt;/b&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&amp;nbsp;— время выполнения запроса, задержка перед ответом. Обычно используют величину, «средняя задержка». Более продвинутые используют&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B4%D0%B8%D0%B0%D0%BD%D0%B0_(%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0)&quot; style=&quot;background-color: white; border: 0px; color: #990099; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;медиану&lt;/a&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&amp;nbsp;среди всех операций за некоторый интервал (чаще всего за 1с). Latency очень сложная для измерения величина. Связано это с тем, что на любой СХД часть запросов выполняется быстро, часть медленно, а часть может попасть в крайне неприятную ситуацию и обслуживаться в десятки раз дольше остальных.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Интригу усиливает наличие очереди запросов, в рамках которой может осуществляться переупорядочивание запросов и параллельное их исполнение. У обычного SATA&#39;шного диска глубина очереди (NCQ) — 31, у мощных систем хранения данных может достигать нескольких тысяч. (заметим, что реальная длина очереди (число ожидающих выполнения запросов) — это параметр скорее негативный, если в очереди много запросов, то они дольше ждут, т.е. тормозят. Любой человек, стоявший в час пик в супермаркете согласится, что чем длиннее очередь, тем фиговее обслуживание.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Latency напрямую влияет на производительность последовательного приложения, пример которого приведён выше. Выше latency — ниже производительность. При 5мс максимальное число запросов — 200 шт/с, при 20мс — 50. При этом если у нас 100 запросов будут обработаны за 1мс, а 9 запросов — за 100мс, то за секунду мы получим всего 109 IOPS, при медиане в 1мс и avg (среднем) в 10мс.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Отсюда довольно трудный для понимания вывод: тип нагрузки на производительность влияет не только тем, «последовательный» он или «случайный», но и тем, как устроены приложения, использующие диск.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Пример: запуск приложения (типовая десктопная задача) практически на 100% последовательный. Прочитали приложение, прочитали список нужных библиотек, по-очереди прочитали каждую библиотеку… Именно потому на десктопах так пламенно любят SSD — у них микроскопическая задержка (микросекундная) на чтение — разумеется, любимый фотошоп или блендер запускается в десятые доли секунды.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;А вот, например, работа нагруженного веб-сервера практически параллельная — каждый следующий клиент обслуживается независимо от соседнего, т.е. latency влияет только на время обслуживания каждого клиента, но не на «максимальное число клиентов». А, признаемся, что 1мс, что 10мс — для веб-сервера всё равно. (Зато не «всё равно», сколько таких параллельно запросов по 10мс можно отправить).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;b style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Трешинг&lt;/b&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;. Я думаю, с этим явлением пользователи десктопов знакомы даже больше, чем сисадмины. Жуткий хруст жёсткого диска, невыразимые тормоза, «ничего не работает и всё тормозит».&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;По мере того, как мы начинаем забивать очередь диска (или хранилища, повторю, в контексте статьи между ними нет никакой разницы), у нас начинает резко вырастать latency. Диск работает на пределе возможностей, но входящих обращений больше, чем скорость их обслуживания. Latency начинает стремительно расти, достигая ужасающих цифр в единицы секунд (и это при том, что приложению, например, для завершения работы нужно сделать 100 операций, которые при latency в 5 мс означали полусекундную задержку...). Это состояние называется trashing.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Вы будете удивлены, но любой диск или хранилище способны показывать БОЛЬШЕ IOPS&#39;ов в состоянии trashing, чем в нормальной загрузке. Причина проста: если в нормальном режиме очередь чаще всего пустая&amp;nbsp;&lt;/span&gt;&lt;s style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;и кассир скучает, ожидая клиентов&lt;/s&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;, то в условии трешинга идёт постоянное обслуживание. (Кстати, вот вам и объяснение, почему в супермаркетах любят устраивать очереди — в этом случае производительность кассиров максимальная). Правда, это сильно не нравится клиентам. И в хороших&amp;nbsp;&lt;/span&gt;&lt;s style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;супермаркетах&lt;/s&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&amp;nbsp;хранилищах такого режима стараются избегать. Если дальше начинать поднимать глубину очереди, то производительность начнёт падать из-за того, что переполняется очередь и запросы стоят в очереди чтобы встать в очередь (да-да, и порядковый номер шариковой ручкой на на руке).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;И тут нас ждёт следующая частая (и очень трудно опровергаемая) ошибка тех, кто меряет производительность диска.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Контроль latency во время теста&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Они говорят «у меня диск выдаёт 180 IOPS, так что если взять 10 дисков, то это будет аж 1800 IOPS». (Именно так думают плохие супермаркеты, сажая меньше кассиров, чем нужно). При этом latency оказывается запредельной — и «так жить нельзя».&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Реальный тест производительности требует контроля latency, то есть подбора таких параметров тестирования, чтобы latency оставалась ниже оговоренного лимита.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;И вот тут вот мы сталкиваемся со второй проблемой: а какого лимита? Ответить на этот вопрос теория не может — этот показатель является показателем&amp;nbsp;&lt;/span&gt;&lt;em style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;качества обслуживания&lt;/em&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;. Другими словами, каждый выбирает для себя сам.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Лично я для себя провожу тесты так, чтобы latency оставалась не более 10мс. Этот показатель я для себя считаю потолком производительности хранилища. (при этом в уме я для себя считаю, что предельный показатель, после которого начинают ощущаться лаги — это 20мс, но помните, про пример выше с 900 по 1мс и 10 по 100мс, у которого avg стала 10мс? Вот для этого я и резервирую себе +10мс на случайные всплески).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Параллелизм&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Выше мы уже рассмотрели вопрос с зависимыми и независимыми IOPS&#39;ами. Производительность зависимых Iops&#39;ов точно контролируется latency, и этот вопрос мы уже обсудили. А вот производительность в независимых iops&#39;ах (т.е. при параллельной нагрузке), от чего она зависит?&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Ответ — от фантазии того, кто изобретал диск или конструировал хранилище. Мы можем рассуждать о числе головок, шпинделей и параллельных очередей записи в SSD, но всё это спекуляции. С точки зрения практического использования нас интересует один вопрос: СКОЛЬКО? Сколько мы можем запустить параллельных потоков нагрузки? (Не забываем про latency, т.к. если мы разрешим отправить latency в небеса, то число параллельных потоков отправится туда же, правда, не с такой скоростью). Итак, вопрос: сколько параллельных потоков мы можем выполнять при latency ниже заданного порога? Именно на этот вопрос должны отвечать тесты.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
SAN и NAS&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Отдельно нужно говорить про ситуацию, когда хранилище подключено к хосту через сеть с использованием TCP. О TCP нужно писать, писать, писать и ещё раз писать. Достаточно сказать, что в линуксе существует 12 разных алгоритмов контроля заторов в сети (congestion), которые предназначены для разных ситуаций. И есть около 20 параметров ядра, каждый из которых может радикальным образом повлиять на попугаи на выходе (пардон, результаты теста).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;С точки зрения оценки производительности мы должны просто принять такое правило: для сетевых хранилищ тест должен осуществляться с нескольких хостов (серверов) параллельно. Тесты с одного сервера не будут тестом хранилища, а будут интегрированным тестом сети, хранилища и правильности настройки самого сервера.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
bus saturation&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Последний вопрос — это вопрос затенения шины. О чём речь? Если у нас ssd способна выдать 400 МБ/с, а мы её подключаем по SATA/300, то очевидно, что мы не увидим всю производительность. Причём с точки зрения latency проблема начнёт проявляться задолго до приближения к 300МБ/с, ведь каждому запросу (и ответу на него) придётся ждать своей очереди, чтобы проскочить через бутылочное горлышко SATA-кабеля.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Но бывают ситуации более забавные. Например, если у вас есть полка дисков, подключенных по SAS/300x4 (т.е. 4 линии SAS по 300МБ каждая). Вроде бы много. А если в полке 24 диска? 24*100=2400 МБ/с, а у нас есть всего 1200 (300х4).&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Более того, тесты на некоторых (серверных!) материнских платах показали, что встроенные SATA-контроллеры часто бывают подключены через PCIx4, что не даёт максимально возможной скорости всех 6 SATA-разъёмов.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Повторю, главной проблемой в bus saturation является не выедание «под потолок» полосы, а увеличение latency по мере загрузки шины.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Трюки производителей&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Ну и перед практическими советами, скажу про известные трюки, которые можно встретить в индустриальных хранилищах. Во-первых, если вы будете читать пустой диск, вы будете читать его из «ниоткуда». Системы достаточно умны, чтобы кормить вас нулями из тех областей диска, куда вы никогда не писали.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Во-вторых, во многих системах первая запись хуже последующих из-за всяких механизмов снапшотов, thin provision&#39;а, дедупликации, компрессии, late allocation, sparse placement и т.д. Другими словами, тестировать следует после первичной записи.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;В третьих — кеш. Если мы тестируем worst case, то нам нужно знать, как будет вести себя система когда кеш не помогает. Для этого нужно брать такой размер теста, чтобы мы гарантированно читали/писали «мимо кеша», то есть выбивались за объёмы кеша.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Кеш на запись — особая история. Он может копить все запросы на запись (последовательные и случайные) и писать их в комфортном режиме. Единственным методом worst case является «трешинг кеша», то есть посыл запросов на запись в таком объёме и так долго, чтобы write cache перестал стправляться и был вынужден писать данные не в комфортном режиме (объединяя смежные области), а скидывать случайные данные, осуществляя random writing. Добиться этого можно только с помощью многократного превышения области теста над размером кеша.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Вердикт — минимум x10 кеш (откровенно, число взято с потолка, механизма точного расчёта у меня нет).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Локальный кеш ОС&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Разумеется, тест должен быть без участия локального кеша ОС, то есть нам надо запускать тест в режиме, который бы не использовал кеширование. В линуксе это опция O_DIRECT при открытии файла (или диска).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Описание теста&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Итого:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;1) Мы тестируем worst case — 100% размера диска, который в несколько раз больше предположительного размера кеша на хранилище. Для десктопа это всего лишь «весь диск», для индустриальных хранилищ — LUN или диск виртуальной машины размером от 1Тб и больше. (Хехе, если вы думаете, что 64Гб RAM-кеша это много...).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;2) Мы ведём тест блоком в 4кб размером.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;3) Мы подбираем такую глубину параллельности операций, чтобы latency оставалось в разумных пределах.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;На выходе нас интересуют параметры: число IOPS, latency, глубина очереди. Если тест запускался на нескольких хостах, то показатели суммируются (iops и глубина очереди), а для latency берётся либо avg, либо max от показателей по всем хостам.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
fio&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Тут мы переходим к практической части. Есть утилита&amp;nbsp;&lt;/span&gt;&lt;b style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;fio&lt;/b&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;&amp;nbsp;которая позволяет добиться нужного нам результата.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Нормальный режим fio подразумевает использование т.н. job-файла, т.е. конфига, который описывает как именно выглядит тест. Примеры job-файлов приведены ниже, а пока что обсудим принцип работы fio.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;fio выполняет операции над указанным файлом/файлами. Вместо файла может быть указано устройство, т.е. мы можем исключить файловую систему из рассмотрения. Существует несколько режимов тестирования. Нас интересует randwrite, randread и randrw. К сожалению, randrw даёт нам зависимые iops&#39;ы (чтение идёт после записи), так что для получения полностью независимого теста нам придётся делать две параллельные задачи — одна на чтение, вторая на запись (randread, randwrite).&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;И нам придётся сказать fio делать «preallocation». (см выше про трюки производителей). Дальше мы фиксируем размер блока (4к).&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Ещё один параметр — метод доступа к диску. Наиболее быстрым является libaio, именно его мы и будем использовать.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Практические рецепты&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Установка fio: apt-get install fio (debian/ubntu). Если что, в squeze ещё её нет.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Утилита весьма хитро запрятана, так что «home page» у неё просто нет, только гит-репозиторий. Вот одно из зеркал:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://freecode.com/projects/fio&quot; style=&quot;background-color: white; border: 0px; color: #990099; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;freecode.com/projects/fio&lt;/a&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;При тесте диска запускать её надо от root&#39;а.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h2 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 20px; font-weight: normal; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
тесты на чтение&lt;/h2&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Запуск: fio read.ini&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Содержимое read.ini&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;pre style=&quot;background-color: white; border: 0px; font-size: 13px; line-height: 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;[readtest]
blocksize=4k
filename=/dev/sda
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32
&lt;/pre&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Задача подобрать такой iodepth, чтобы avg.latency была меньше 10мс.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h2 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 20px; font-weight: normal; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Тесты на запись&lt;/h2&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;(внимание! Ошибётесь буквой диска — останетесь без данных)&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;pre style=&quot;background-color: white; border: 0px; font-size: 13px; line-height: 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;[writetest]
blocksize=4k
filename=/dev/sdz
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32
&lt;/pre&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h2 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 20px; font-weight: normal; line-height: 20px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Гибридные тесты&lt;/h2&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;самая вкусная часть:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;(внимание! Ошибётесь буквой диска — останетесь без данных)&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;pre style=&quot;background-color: white; border: 0px; font-size: 13px; line-height: 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;[readtest]
blocksize=4k
filename=/dev/sdz
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32
[writetest]
blocksize=4k
filename=/dev/sdz
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32
&lt;/pre&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Анализ вывода&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Во время теста мы видим что-то вроде такого:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;pre style=&quot;background-color: white; border: 0px; font-size: 13px; line-height: 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;Jobs: 2 (f=2): [rw] [2.8% done] [13312K/11001K /s] [3250/2686 iops] [eta 05m:12s]
&lt;/pre&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;В квадратных скобках — цифры IOPS&#39;ов. Но радоваться рано — ведь нас интересует latency.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;На выходе (по Ctrl-C, либо по окончании) мы получим примерно вот такое:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;^C&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;fio: terminating on signal 2&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;pre style=&quot;background-color: white; border: 0px; font-size: 13px; line-height: 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;read: (groupid=0, jobs=1): err= 0: pid=11048
  read : io=126480KB, bw=14107KB/s, iops=3526, runt=  8966msec
    slat (usec): min=3, max=432, avg= 6.19, stdev= 6.72
    clat (usec): min=387, max=208677, avg=9063.18, stdev=22736.45
    bw (KB/s) : min=10416, max=18176, per=98.74%, avg=13928.29, stdev=2414.65
  cpu          : usr=1.56%, sys=3.17%, ctx=15636, majf=0, minf=57
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.9%, &amp;gt;=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &amp;gt;=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &amp;gt;=64=0.0%
     issued r/w: total=31620/0, short=0/0
     lat (usec): 500=0.07%, 750=0.99%, 1000=2.76%
     lat (msec): 2=16.55%, 4=35.21%, 10=35.47%, 20=3.68%, 50=0.76%
     lat (msec): 100=0.08%, 250=4.43%
write: (groupid=0, jobs=1): err= 0: pid=11050
  write: io=95280KB, bw=10630KB/s, iops=2657, runt=  8963msec
    slat (usec): min=3, max=907, avg= 7.60, stdev=11.68
    clat (usec): min=589, max=162693, avg=12028.23, stdev=25166.31
    bw (KB/s) : min= 6666, max=14304, per=100.47%, avg=10679.50, stdev=2141.46
  cpu          : usr=0.49%, sys=3.57%, ctx=12075, majf=0, minf=25
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=99.9%, &amp;gt;=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, &amp;gt;=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.1%, 64=0.0%, &amp;gt;=64=0.0%
     issued r/w: total=0/23820, short=0/0
     lat (usec): 750=0.03%, 1000=0.37%
     lat (msec): 2=9.04%, 4=24.53%, 10=49.72%, 20=9.56%, 50=0.82%
     lat (msec): 100=0.07%, 250=5.87%
&lt;/pre&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Нас из этого интересует (в минимальном случае) следующее:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;read: iops=3526 clat=9063.18 (usec), то есть 9мс.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;write: iops=2657 clat=12028.23&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Не путайте slat и clat. slat — это время отправки запроса (т.е. производительность дискового стека линукса), а clat — это complete latency, то есть та latency, о которой мы говорили. Легко видеть, что чтение явно производительнее записи, да и глубину я указал чрезмерную.&amp;nbsp;&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;В том же самом примере я снижаю iodepth до 16/16 и получаю:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;read 6548 iops, 2432.79usec = 2.4ms&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;write 5301 iops, 3005.13usec = 3ms&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Очевидно, что глубина в 64 (32+32) оказалась перебором, да таким, что итоговая производительность даже упала. Глубина 32 куда более подходящий вариант для теста.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;h1 style=&quot;background-color: white; border: 0px; color: #999999; font-family: Verdana, sans-serif; font-size: 21px; font-weight: normal; letter-spacing: -1px; line-height: 20px; margin: 0px 0px 0.7em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Ориентировки по производительности&lt;/h1&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Разумеется, все уже расчехляют пи… попугаемерки. Привожу значения, которые я наблюдал:&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;ul style=&quot;background-color: white; border: 0px; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px; list-style-image: initial; list-style-position: outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;RAMDISK (rbd) — ~200kIOPS/0.1мс (iodepth=2)&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;SSD (intel 320ой серии) — 40k IOPS на чтение (0.8мс); около 800 IOPS на запись (после длительного времени тестирования)&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;SAS диск (15к RPM) — 180 IOPS, 9мс&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;SATA диск (7.2, WD RE) — 100 IOPS, 12мс&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;SATA WD Raptor — 140 IOPS, 12mc&lt;/li&gt;
&lt;li style=&quot;border: 0px; list-style: disc outside; margin: 0px 0px 0px 20px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;SATA WD Green — 40 IOPS, и мне не удалось добиться latency &amp;lt;20 даже с iodepth=1&lt;/li&gt;
&lt;/ul&gt;
&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;Предупреждение: Если вы это будете запускать на виртуальных машинах, то&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;а) если за IOPS&#39;ы берут деньги — это будут весьма ощутимые деньги.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;б) Если у хостера плохое хранилище, которое надеется только на кеш в несколько десятков гигабайт, то тест с большим диском (&amp;gt;1Тб) приведёт к… проблемам у хостера и ваших соседей по хостингу. Некоторые хостеры могут обидеться и попросить вас вон.&lt;/span&gt;&lt;br style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot; /&gt;&lt;span style=&quot;background-color: white; font-family: Verdana, sans-serif; font-size: 13px; line-height: 20px;&quot;&gt;с) Не забывайте обнулять диск перед тестом (т.е. dd if=/dev/zero of=/dev/sdz bs=2M oflag=direct)&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/4911720798979793310/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2013/01/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4911720798979793310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4911720798979793310'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2013/01/blog-post.html' title='Как правильно мерять производительность диска'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-8119202458732039997</id><published>2012-04-13T01:46:00.000+04:00</published><updated>2012-04-13T01:46:14.039+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="public wifi"/><title type='text'>Создание публичной/бесплатной точки доступа.</title><content type='html'>Думал написать статью, а оказывается в инете уже их полно.
Так что просто оставлю список софта, через который можно это реализовать:
NoCat
HotSpotPA
PacketFence
ChilliSpot
WiFiDog</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/8119202458732039997/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2012/04/blog-post.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8119202458732039997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8119202458732039997'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2012/04/blog-post.html' title='Создание публичной/бесплатной точки доступа.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-920004060930434926</id><published>2012-04-12T01:48:00.000+04:00</published><updated>2012-04-12T01:48:02.404+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="airport"/><category scheme="http://www.blogger.com/atom/ns#" term="cacti"/><category scheme="http://www.blogger.com/atom/ns#" term="snmp"/><title type='text'>airport express SNMP Community</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Если у вас старый девайс airport express и там нельзя выставить &lt;b&gt;SNMP Community&lt;/b&gt;, для того, чтобы, например, &lt;b&gt;Cacti&lt;/b&gt; мог получить доступ до вашей точки, знайте, SNMP Community - это ваш пароль на точку.

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/920004060930434926/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2012/04/airport-express-snmp-community.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/920004060930434926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/920004060930434926'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2012/04/airport-express-snmp-community.html' title='airport express SNMP Community'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-2865317503103472506</id><published>2012-03-30T20:33:00.004+04:00</published><updated>2012-03-30T20:33:52.961+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lxc"/><title type='text'>lxc лог загрузки контейнера.</title><content type='html'>&lt;i&gt;lxc-start -s lxc.console=/var/log/lxc/foo.console --name [hostname]&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/2865317503103472506/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2012/03/lxc.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2865317503103472506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2865317503103472506'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2012/03/lxc.html' title='lxc лог загрузки контейнера.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-3457910803989198798</id><published>2012-01-27T17:45:00.000+04:00</published><updated>2012-01-27T17:46:50.672+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android"/><category scheme="http://www.blogger.com/atom/ns#" term="cer"/><category scheme="http://www.blogger.com/atom/ns#" term="crt"/><category scheme="http://www.blogger.com/atom/ns#" term="openssl"/><category scheme="http://www.blogger.com/atom/ns#" term="p12"/><category scheme="http://www.blogger.com/atom/ns#" term="pem"/><category scheme="http://www.blogger.com/atom/ns#" term="vpn"/><title type='text'>Экспортирование сертификатов в android телефон.</title><content type='html'>&lt;pre&gt;Нужен openssl и сами сертификаты.
Далее делаем так:

&lt;b&gt;openssl pkcs12 -export -in certnew.cer -inkey privkey.pem -certfile CA.pem -name &quot;MyCert&quot; -out mycert.p12&lt;/b&gt;

Где:
  - certnew.cer - личный сертификат.
  - privkey.pem - приватный ключ.
  - CA.pem - корневой сертификат.

Получившийся ключ mycert.p12 кладем на внешнюю sd карту и идем в &quot;Location and security&quot;, там нажимаем: &quot;Install from USB storage&quot;.
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/3457910803989198798/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2012/01/android.html#comment-form' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3457910803989198798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3457910803989198798'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2012/01/android.html' title='Экспортирование сертификатов в android телефон.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-8493540298126525817</id><published>2011-11-24T15:36:00.001+04:00</published><updated>2011-11-24T15:38:51.325+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="monitor"/><category scheme="http://www.blogger.com/atom/ns#" term="xfce4"/><category scheme="http://www.blogger.com/atom/ns#" term="xrandr"/><title type='text'>xfce4 и 2 монитора.</title><content type='html'>1. &lt;pre&gt;$ xrandr
Screen 0: minimum 320 x 200, current 1200 x 1600, maximum 8192 x 8192
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1200x1600+0+0 left (normal left inverted right x axis y axis) 367mm x 275mm
   1600x1200      60.0*+
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 connected 1200x1600+0+0 left (normal left inverted right x axis y axis) 367mm x 275mm
   1600x1200      60.0*+
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)&lt;/pre&gt;

2. $ xrandr --output HDMI1 --mode 1600x1200 --pos 320x156 --output HDMI3 --mode 1600x1200 --right-of HDMI1 --pos 0x0</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/8493540298126525817/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2011/11/xfce4-2.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8493540298126525817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8493540298126525817'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2011/11/xfce4-2.html' title='xfce4 и 2 монитора.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-3113094721801720668</id><published>2011-10-12T16:24:00.000+04:00</published><updated>2011-10-12T16:24:09.672+04:00</updated><title type='text'>Конвертирование тегов mp3 из cp1251 в utf8</title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;
find . -name &quot;*.mp3&quot; -print0 | xargs -0 mid3iconv -e CP1251 -d&lt;br /&gt;
&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/3113094721801720668/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2011/10/mp3-cp1251-utf8.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3113094721801720668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3113094721801720668'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2011/10/mp3-cp1251-utf8.html' title='Конвертирование тегов mp3 из cp1251 в utf8'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-6345130364421296258</id><published>2011-03-16T19:33:00.002+03:00</published><updated>2011-03-16T19:33:58.049+03:00</updated><title type='text'>Как послушать udp dns трафик с помощью tcpdump</title><content type='html'>tcpdump -n &#39;udp dst port 53&#39; and &#39;udp[10:2] &amp; 0x8000 = 0&#39;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/6345130364421296258/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2011/03/udp-dns-tcpdump.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6345130364421296258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6345130364421296258'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2011/03/udp-dns-tcpdump.html' title='Как послушать udp dns трафик с помощью tcpdump'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-2320293252565950413</id><published>2011-03-15T18:37:00.002+03:00</published><updated>2011-03-15T18:37:55.409+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="unixtime"/><title type='text'>unixtime в bash</title><content type='html'>$ date -d @1206994475&lt;br /&gt;
Втр Апр 1 00:14:35 MSD 2008&lt;br /&gt;
&lt;br /&gt;
$ date +%s&lt;br /&gt;
1207304408</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/2320293252565950413/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2011/03/unixtime-bash.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2320293252565950413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/2320293252565950413'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2011/03/unixtime-bash.html' title='unixtime в bash'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-3057853246110021127</id><published>2010-11-02T14:14:00.000+03:00</published><updated>2012-09-04T15:19:27.934+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tcpdump"/><title type='text'>Как посмотреть название свитча,порт и влан.</title><content type='html'>ip address flush dev eth1&lt;br /&gt;
tcpdump -nli eth0 -s0 -vv not ip

&lt;blockquote&gt;
System Name TLV (5), length 5: s1336&lt;br /&gt;
Subtype Interface Name (5): GigabitEthernet0/0/39&lt;br /&gt;
port vlan id (PVID): 999&lt;br /&gt;
&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/3057853246110021127/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2010/11/ip.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3057853246110021127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3057853246110021127'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2010/11/ip.html' title='Как посмотреть название свитча,порт и влан.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-1168633923330897498</id><published>2010-01-12T18:00:00.000+03:00</published><updated>2010-01-12T18:00:23.185+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cpan"/><category scheme="http://www.blogger.com/atom/ns#" term="perl"/><title type='text'>cpan auto yes</title><content type='html'>&lt;b&gt;cpan&gt;&lt;/b&gt; &lt;i&gt;o conf prerequisites_policy follow&lt;/i&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/1168633923330897498/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2010/01/cpan-auto-yes.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/1168633923330897498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/1168633923330897498'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2010/01/cpan-auto-yes.html' title='cpan auto yes'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-7277293578435059762</id><published>2009-11-26T22:31:00.000+03:00</published><updated>2009-11-26T22:31:25.255+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bash"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sqlite"/><category scheme="http://www.blogger.com/atom/ns#" term="wget"/><title type='text'>Как вытащить куку из firefox3</title><content type='html'>На примере куки яндекса.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
sqlite3 ~azalio/.mozilla/firefox/81d1gpnc.default/cookies.sqlite &#39;SELECT host, path, isSecure, expiry, name, value FROM moz_cookies WHERE host LIKE &quot;.yandex.ru&quot; and name=&quot;Session_id&quot;&#39; | sed  &quot;s/\.yandex.ru/\.yandex.ru\tTRUE/&quot; | sed &quot;s/|/\t/g&quot; &gt; session_id&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Этот session_id уже можно скормить wget&#39;ту.</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/7277293578435059762/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/11/firefox3.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7277293578435059762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/7277293578435059762'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/11/firefox3.html' title='Как вытащить куку из firefox3'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-8037463258478442341</id><published>2009-11-21T02:10:00.000+03:00</published><updated>2009-11-21T02:10:11.633+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="luks"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu 9.10"/><category scheme="http://www.blogger.com/atom/ns#" term="шифрование файловой системы"/><title type='text'>Создание зашифрованного root и swap в Ubuntu Karmic ( 9.10 ) на основе LUKS</title><content type='html'>&lt;b&gt;Что будем делать&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Установим минимальную серверную конфигурацию Ubuntu 9.10 &lt;/li&gt;
&lt;li&gt; Создадим зашифрованную партицию и скопируем туда необходимые файлы &lt;/li&gt;
&lt;li&gt; Модифицируем конфигурационный файл GRUB, fstab и еще несколько других. &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Файлы, которые будут созданы или затронуты&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; /etc/initramfs-tools/modules &lt;/li&gt;
&lt;li&gt; /etc/initramfs-tools/hooks/cryptoroot &lt;/li&gt;
&lt;li&gt; /etc/initramfs-tools/scripts/local-top/cryptoroot &lt;/li&gt;
&lt;li&gt; /etc/fstab &lt;/li&gt;
&lt;li&gt; /etc/grub.d/40_custom &lt;/li&gt;
&lt;li&gt; /etc/crypttab &lt;/li&gt;
&lt;li&gt; /etc/init/mountall.conf &lt;/li&gt;
&lt;li&gt; /etc/default/grub &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Необходимые дополнительные программы&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; cryptsetup &lt;/li&gt;
&lt;li&gt; hashalot&lt;/li&gt;
&lt;li&gt; initramfs-tools &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Вам понадобится&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt; Компьютер &lt;/li&gt;
&lt;li&gt; Установочный диск Ubuntu 9.10 Server edition &lt;/li&gt;
&lt;li&gt; Доступ в интернет &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Размер партиций&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;2&quot; style=&quot;width: 2px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;/dev/sda1&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;/boot&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;100MB&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;ext4&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;/dev/sda2&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;/&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;2GB&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;ext4&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;/dev/sda3&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;не использовать&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;10GB&lt;br /&gt;
&lt;/td&gt;&lt;td&gt;не форматировать&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Создаем ram-диск&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;apt-get install cryptsetup hashalot initramfs-tools&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем &lt;i&gt;/etc/initramfs-tools/modules&lt;/i&gt; добавляя туда:&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
dm_mod&lt;br /&gt;
dm_crypt&lt;br /&gt;
sha256_generic&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Создаем файл &lt;i&gt;/etc/initramfs-tools/hooks/cryptoroot&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;pre&gt;PREREQ=&quot;&quot;

prereqs()
{
echo &quot;$PREREQ&quot;
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

if [ ! -x /sbin/cryptsetup ]; then
exit 0
fi

. /usr/share/initramfs-tools/hook-functions

mkdir -p ${DESTDIR}/etc/console-setup
cp /etc/console-setup/cached.kmap.gz ${DESTDIR}/etc/console
copy_exec /bin/loadkeys /bin
copy_exec /usr/bin/chvt /bin
copy_exec /sbin/cryptsetup /sbin
copy_exec /sbin/blkid /sbin
&lt;/pre&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Создаем &lt;i&gt;/etc/initramfs-tools/scripts/local-top/cryptoroot&lt;/i&gt; &lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;pre&gt;PREREQ=&quot;udev&quot;

prereqs()
{
echo &quot;$PREREQ&quot;
}

case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac

/bin/loadkeys -q /etc/console-setup/cached.kmap.gz
modprobe -qb dm_crypt
modprobe -qb sha256

/sbin/udevadm settle

if grep -q splash /proc/cmdline; then
/bin/chvt 1
fi
/sbin/cryptsetup luksOpen /dev/sda3 cryptoroot
if grep -q splash /proc/cmdline; then
/sbin/usplash -c &amp;amp;
sleep 1
fi
&lt;/pre&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Делаем их исполняемыми&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;chmod +x /etc/initramfs-tools/hooks/cryptoroot&lt;br /&gt;
chmod +x /etc/initramfs-tools/scripts/local-top/cryptoroot&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Обновляем initrd&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;update-initramfs -u -t&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Создаем зашифрованную партицию&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Загружаем необходимые модули&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;modprobe dm_crypt&lt;br /&gt;
modprobe sha256&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Форматируем и шифруем партицию&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;luksformat -t ext3 /dev/sda3&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Монтируем созданную партицию и копируем туда необходимые файлы&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;cryptsetup luksOpen /dev/sda3 cryptoroot&lt;br /&gt;
mkdir /mnt/target&lt;br /&gt;
mount /dev/mapper/cryptoroot /mnt/target&lt;br /&gt;
cp -avx / /mnt/target&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем &lt;i&gt;/mnt/target/etc/fstab&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Находим строчку где монтируется корень:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;UUID=[UUID вашего корня] /               ext4    errors=remount-ro 0       1&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
И изменяем UUID&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo blkid -o value -s UUID /dev/mapper/cryptoroot&lt;/i&gt;&lt;br /&gt;
fa475a36-7d97-4967-bef7-57e87c5c638c &amp;lt;- эту строку ставим вместо &lt;i&gt;[UUID вашего корня]&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Конфигурируем GRUB&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем файл &lt;i&gt;/etc/grub.d/40_custom&lt;/i&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;pre&gt;#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the &#39;exec tail&#39; line above.

menuentry &quot;crypttest&quot; {
insmod ext2
set root=(hd0,1)
linux   /vmlinuz-&amp;lt;ваша версия ядра&amp;gt; root=UUID=&lt;uuid вашей=&quot;&quot; партиции=&quot;&quot; рутовой=&quot;&quot;&gt; ro
initrd  /initrd.img-&amp;lt;ваша версия ядра&amp;gt;
}
&lt;/uuid&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
У меня получилось так:&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;pre&gt;#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the &#39;exec tail&#39; line above.

menuentry &quot;crypttest&quot; {
insmod ext2
set root=(hd0,1)
linux   /vmlinuz-2.6.31-14-server root=UUID=fa475a36-7d97-4967-bef7-57e87c5c638c ro
initrd  /initrd.img-2.6.31-14-server
}
&lt;/pre&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем &lt;i&gt;/etc/default/grub&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#GRUB_HIDDEN_TIMEOUT=10&lt;br /&gt;
GRUB_HIDDEN_TIMEOUT_QUIET=true&lt;br /&gt;
#GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash&quot;&lt;br /&gt;
GRUB_DISABLE_OS_PROBER=true&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Обновляем конфиг GRUB:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo grub-mkconfig -O /boot/grub/grub.cfg&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Перегружаемся и выбираем crypttest&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;reboot&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
В процессе загрузки у вас должны спросить пароль, который вы задали при создании зашифрованной партиции.&lt;br /&gt;
&lt;br /&gt;
Если перезагрузка прошла успешно, продолжаем настраивать систему.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Добавляем зашифрованный swap&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем &lt;i&gt;/etc/crypttab&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Я под swap решил использовать старый корень ( /dev/sda2 ) и поэтому у меня SWAP=/dev/sda2. &lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
cryptoswap      SWAP       /dev/urandom    swap&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем &lt;i&gt;/etc/fstab&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
# Encrypted swap partition&lt;br /&gt;
/dev/mapper/cryptoswap  none    swap    sw      0       0&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Забиваем мусором файловую систему, которую определили под своп:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;dd if=/dev/urandom of=SWAP count=100&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Включаем своп:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;invoke-rc.d cryptdisks restart&lt;br /&gt;
swapon /dev/mapper/cryptoswap&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Проверяем что работает:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;swapon -s&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Вы должны увидеть что-то такое:&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
Filename                           Type           Size         Used  Priority&lt;br /&gt;
/dev/mapper/cryptoswap             partition      XXXXXXXX     0     -2&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
Редактируем  &lt;i&gt;/etc/init/mountall.conf&lt;/i&gt; чтобы у нас успевал появиться зашифрованный диск со свопом, перед тем, как все будет смонтировано:&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;pre&gt;script
. /etc/default/rcS
[ -f /forcefsck ] &amp;amp;&amp;amp; force_fsck=&quot;--force-fsck&quot;
[ &quot;$FSCKFIX&quot; = &quot;yes&quot; ] &amp;amp;&amp;amp; fsck_fix=&quot;--fsck-fix&quot;
[ -n &quot;$TMPTIME&quot; ] &amp;amp;&amp;amp; tmptime=&quot;--tmptime=$TMPTIME&quot;
sleep 10 # &amp;lt;- добавили ожидание.
&lt;/pre&gt;&lt;hr /&gt;Выполняем &lt;i&gt;sudo grub-mkconfig -O /boot/grub/grub.cfg&lt;/i&gt;  Перегружаемся и оказываемся в системе с зашифрованным рутом и свопом.  Далее можно легко продолжить и создать другие зашифрованные файловые системы, если это будет необходимо.&lt;br /&gt;
&lt;br /&gt;
При написании пособия по установке использовались следующие ресурсы:&lt;br /&gt;
&lt;a href=&quot;https://help.ubuntu.com/community/EncryptedFilesystemOnIntrepid&quot;&gt;EncryptedFilesystemOnIntrepid&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://help.ubuntu.com/community/Grub2&quot;&gt;Grub2&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/8037463258478442341/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/11/root-swap-ubuntu-karmic-910-luks.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8037463258478442341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/8037463258478442341'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/11/root-swap-ubuntu-karmic-910-luks.html' title='Создание зашифрованного root и swap в Ubuntu Karmic ( 9.10 ) на основе LUKS'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-1815480104723376039</id><published>2009-11-21T01:17:00.001+03:00</published><updated>2009-11-21T04:50:09.056+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="apache"/><category scheme="http://www.blogger.com/atom/ns#" term="nginx"/><category scheme="http://www.blogger.com/atom/ns#" term="php-fpm"/><category scheme="http://www.blogger.com/atom/ns#" term="zoneminder"/><title type='text'>Конфиг nginx для zoneminder.</title><content type='html'>&amp;nbsp;Для того, чтобы заработала связка zoneminder + nginx я собрал &lt;a href=&quot;https://launchpad.net/php-fpm/&quot;&gt;php-fpm&lt;/a&gt;, а cgi запросы пробрасываю в apache на 88 порт. Так же поставил защиту паролем, чтобы случайно не зашли те, кого я не жду на этой странице.&lt;br /&gt;
&lt;br /&gt;
Конфиг nginx:&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;nbsp;&amp;nbsp; 80;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name&amp;nbsp; &amp;lt;имя вашего сервера&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log&amp;nbsp; /var/log/nginx/zm.access.log;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp; /usr/share/zoneminder;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location / {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /usr/share/zoneminder;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; index index.php;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth_basic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;closed site&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth_basic_user_file&amp;nbsp; /etc/nginx/passwd;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!-e $request_filename) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite ^/(.*)$ /index.php?q=$1 last;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; access_log off;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expires 30d;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_page 404 /index.php;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_page 500 502 503 504 /50x.html;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location = /50x.html {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root /var/www/nginx-default;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ \.php$ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_index index.php;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param SCRIPT_FILENAME /usr/share/zoneminder/$fastcgi_script_name;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param QUERY_STRING $query_string;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param REQUEST_METHOD $request_method;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param CONTENT_TYPE $content_type;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param CONTENT_LENGTH $content_length;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include /etc/nginx/fastcgi_params;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ~ /\.ht {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deny all;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location&amp;nbsp; /cgi-bin/ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_pass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://localhost:88;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X-Real-IP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_addr;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost:88;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REQUEST_METHOD&amp;nbsp; $request_method;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REMOTE_USER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_user;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REMOTE_ADDR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_addr;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVER_NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SERVER_PORT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 88;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy_set_header&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTTP_COOKIE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $http_cookie;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Конфиг apache&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:88&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ServerName &amp;lt;имя вашего сервера&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DocumentRoot /var/www&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorLog /var/log/apache2/zm.error.log&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # alert, emerg.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogLevel warn&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CustomLog /var/log/apache2/zm.access.log combined&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Directory &quot;/usr/lib/cgi-bin&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowOverride None&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order allow,deny&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alias /zm /usr/share/zoneminder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory /usr/share/zoneminder&amp;gt;&lt;br /&gt;
&amp;nbsp; php_flag register_globals off&lt;br /&gt;
&amp;nbsp; Options Indexes FollowSymLinks&lt;br /&gt;
&amp;nbsp; &amp;lt;IfModule mod_dir.c&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; DirectoryIndex index.php&lt;br /&gt;
&amp;nbsp; &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/1815480104723376039/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/11/nginx-zoneminder.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/1815480104723376039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/1815480104723376039'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/11/nginx-zoneminder.html' title='Конфиг nginx для zoneminder.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-4173494904149996382</id><published>2009-11-15T03:27:00.005+03:00</published><updated>2009-11-21T04:44:41.712+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="mjpg-streamer"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="webcam"/><category scheme="http://www.blogger.com/atom/ns#" term="zoneminder"/><category scheme="http://www.blogger.com/atom/ns#" term="онлайн-трансляция"/><title type='text'>Настройка online трансляции из linux с помощью веб-камеры.</title><content type='html'>Случайно увидел сегодня веб-камеру за 400 рублей, и не смог удержаться и купил. Но просто поставить её и все было не интересно и поэтому задачу я поставил так:&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;- online трансляция&lt;br /&gt;
&amp;nbsp;- работа с видео ( снятие скриншотов, определение движения на участке, заливка на фтп видео и/или фотографий.&lt;br /&gt;
&lt;br /&gt;
Все настраивалось на ubuntu 9.10&lt;br /&gt;
&lt;br /&gt;
Воткнув камеру в usb-порт я посмотрел в dmesg:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;[&amp;nbsp;&amp;nbsp; 74.604470] uvcvideo: Found UVC 1.00 device USB Web-CAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (04fc:2001)&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 74.687602] input: USB Web-CAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as /devices/pci0000:00/0000:00:10.0/usb2/2-2/2-2:1.0/input/input5&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 74.687710] usbcore: registered new interface driver uvcvideo&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 74.687718] USB Video Class driver (v0.1.0)&lt;br /&gt;
[&amp;nbsp;&amp;nbsp; 75.367518] usbcore: registered new interface driver snd-usb-audio&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Камера определилась, ура! Я уж думал придется пересобирать ядро и танцевать с бубном.&lt;br /&gt;
&lt;br /&gt;
Используемый софт:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;http://www.zoneminder.com/&quot;&gt;zoneminder&lt;/a&gt; - Linux video camera security and surveillance solution&lt;br /&gt;
&lt;a href=&quot;http://sourceforge.net/projects/mjpg-streamer/&quot;&gt;mjpg-streamer&lt;/a&gt; - MJPG-Streamer grabs images of an UVC-compatible webcam and serves them via HTTP&lt;br /&gt;
&lt;/blockquote&gt;Настройка zoneminder требует чтения &lt;a href=&quot;http://www.zoneminder.com/wiki/index.php/Main_Documentation&quot;&gt;документации&lt;/a&gt;, предупреждаю :)&lt;br /&gt;
mjpg-streamer пришлось использовать из-за того, что zoneminder не поддерживает камеры, которые обслуживаются драйвером &lt;b&gt;uvcvideo &lt;/b&gt;( как я понял после нескольких попыток настроить zoneminder работать напрямую с веб-камерой ).&lt;br /&gt;
&lt;b&gt; &lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Итак:&lt;br /&gt;
&amp;nbsp;- добавляем в /etc/rc.local ( или в любое другое место, которое вам нравится ;) ) &lt;br /&gt;
&lt;blockquote&gt;/usr/bin/mjpg_streamer -i &quot;input_uvc.so -r 640x480 -f 30&quot; -o &quot;output_http.so -p 8080&quot; -b&lt;br /&gt;
&lt;/blockquote&gt;Запускаем ручками, открываем браузер и смотрим:&lt;br /&gt;
&lt;blockquote&gt;http://localhost:8080/?action=stream&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;Если вам повезло, то вы увидите то, что видит ваша веб-камера. В принципе на этом можно остановиться и дальше не читать.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;- Если хочется большей функциональности, настраиваем &lt;b&gt;zoneminder&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;http://localhost/zm/index.php&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;Идем в options -&amp;gt; images&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;&lt;b&gt;STREAM_METHOD&lt;/b&gt; &lt;b&gt;-&amp;gt; mpeg&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;&lt;b&gt;OPT_CAMBOZOLA -&amp;gt; on&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;Качаем камбозолу:&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;http://www.zoneminder.com/downloads.html&quot;&gt;http://www.zoneminder.com/downloads.html&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;там в самом низу страницы есть ссылка на скачивание.&lt;br /&gt;
В своей системе я положил её в&lt;br /&gt;
&lt;blockquote&gt;/usr/share/zoneminder/&lt;br /&gt;
&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;Выходим из опций и настраиваем камеру:&lt;/span&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Add new monitor&lt;/b&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Source Type -&amp;gt; remote&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Function -&amp;gt; monitor ( прочитайте в документации какие бывают функции )&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Remote Protocol -&amp;gt; http&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Remote Host Name -&amp;gt; 127.0.0.1&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Remote Host Port -&amp;gt; 8080&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;Remote Host Path -&amp;gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; white-space: pre;&quot;&gt;/?action=stream&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;Остальные параметры подберите по своему вкусу.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;Вот и все, теперь можно следить за собой и своим домом.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;Еще раз советую прочитать документацию, из неё вы узнаете,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;как включать запись, если было замечено движение и т.д.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;Ну а я пойду настраивать &lt;a href=&quot;http://azalio.blogspot.com/2009/11/nginx-zoneminder.html&quot;&gt;nginx&lt;/a&gt; вместо апача, и автозаливку&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; white-space: pre;&quot;&gt;роликов куда-нибудь для большей сохранности. &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;border-collapse: separate; color: black; font-family: &#39;Times New Roman&#39;; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span style=&quot;border-collapse: collapse; color: #333333; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; line-height: 13px; text-align: left;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/4173494904149996382/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/11/online-linux.html#comment-form' title='Комментарии: 7'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4173494904149996382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/4173494904149996382'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/11/online-linux.html' title='Настройка online трансляции из linux с помощью веб-камеры.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-3326197004632179410</id><published>2009-10-13T17:25:00.002+04:00</published><updated>2009-10-13T17:28:04.803+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="firewall"/><category scheme="http://www.blogger.com/atom/ns#" term="nfs"/><title type='text'>Какие порты надо открыть в firewall в NFS</title><content type='html'>Порты TCP: 111, 2049, 32765, 32766, 32767, 32768, 32769&lt;br /&gt;Порты UDP: 111, 2049, 32765, 32766, 32767, 32768, 32769&lt;br /&gt;&lt;br /&gt;Порты 32*** прибиваются гвоздями.</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/3326197004632179410/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/10/firewall-nfs.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3326197004632179410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/3326197004632179410'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/10/firewall-nfs.html' title='Какие порты надо открыть в firewall в NFS'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19487637.post-6577505702177829920</id><published>2009-04-03T22:04:00.002+04:00</published><updated>2009-04-03T22:08:12.809+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dd"/><category scheme="http://www.blogger.com/atom/ns#" term="FreeBSD"/><category scheme="http://www.blogger.com/atom/ns#" term="gmirror"/><title type='text'>Как во FreeBSD очистить meta информацию о gmirror на диске.</title><content type='html'>DEV=/dev/ad0s1a&lt;br /&gt;  set -- $(diskinfo $DEV)&lt;br /&gt;  BLOCKSIZE=$2&lt;br /&gt;  MEDIASIZE=$4&lt;br /&gt;  LASTSEC=$(( $MEDIASIZE - 1 ))&lt;br /&gt;  dd if=/dev/zero of=$DEV bs=$BLOCKSIZE seek=$(( $MEDIASIZE - 1 )) count=1</content><link rel='replies' type='application/atom+xml' href='http://azalio.blogspot.com/feeds/6577505702177829920/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://azalio.blogspot.com/2009/04/freebsd-meta-gmirror.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6577505702177829920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19487637/posts/default/6577505702177829920'/><link rel='alternate' type='text/html' href='http://azalio.blogspot.com/2009/04/freebsd-meta-gmirror.html' title='Как во FreeBSD очистить meta информацию о gmirror на диске.'/><author><name>azalio</name><uri>http://www.blogger.com/profile/01049564495784993938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>