<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aleksey Parshukov</title>
	<atom:link href="http://www.filosof.name/feed" rel="self" type="application/rss+xml" />
	<link>http://www.filosof.name</link>
	<description>Aleksey Parshukov persoonal blog</description>
	<lastBuildDate>Thu, 15 Jul 2010 12:28:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>WindowsUpdate Error 80070011</title>
		<link>http://www.filosof.name/articles/windowsupdate-error-80070011.xhtml</link>
		<comments>http://www.filosof.name/articles/windowsupdate-error-80070011.xhtml#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:07:56 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Все]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[windows 7]]></category>
		<category><![CDATA[Windows Update]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=319</guid>
		<description><![CDATA[В чём причина В Windows операционных системах, базирующихся на MS Windows Vista (7, 2008, 2008 R2) появился новый алгоритм обновления. Не буду глубоко вдаваться в подробности. В двух это выглядит так: Апдейты распаковываются в папку {WindowsDir}\winsxs\. Затем в рабочих директориях создаются ссылки на эти файлы, а не сами файлы. По крайней мере это снижает объём [...]]]></description>
			<content:encoded><![CDATA[<h2>В чём причина</h2>
<p>В Windows операционных системах, базирующихся на <em>MS Windows Vista (7, 2008, 2008 R2)</em> появился новый алгоритм обновления. Не буду глубоко вдаваться в подробности. В двух это выглядит так: Апдейты распаковываются в папку <em>{WindowsDir}\winsxs\</em>. Затем в рабочих директориях создаются ссылки на эти файлы, а не сами файлы. По крайней мере это снижает объём файлов на диске, возможно есть и другие причины такого поведения. Ссылки на файлы в <em>Windows</em> могут быть только &laquo;жесткими&raquo;. Одной из особенностей &laquo;жестких&raquo; является то, что они должны располагаться на одном логическом диске с FS нодом, на который они ссылаются.</p>
<p>Некоторым людям нравиться выносить папку <em>Program Files</em> (а также <em>Program Files (x86)</em>) на выделенный диск. Я тоже так люблю делать. В соответствии с вышеприведёнными особенностями обновлений в windows, возникают проблемы при обновлении системных приложений. Таких как <em>Internet Explorer</em> или например <em>Windows Media Player</em>. Хотя не всех. <em>MS Office</em> при всем при этом обновляется нормально.</p>
<p>Код ошибки: <strong>WindowsUpdate Error 80070011</strong><br />
Собственно ошибка: <strong>ERROR_NOT_SAME_DEVICE</strong></p>
<p>MS стоило бы проверять файл на возможность создания &laquo;жёсткой&raquo; ссылки и при отсутствии такой делать копию исходного файла. Хотя, повторюсь, возможно у создателей такой схемы были другие причины. В ответах на запросы пользователей они ссылаются на то, что в <em>Windows</em> не предусмотрен перенос папки <em>Program Files</em> на другой раздел. Грубо говоря исправлять этот баг они не собираются, ибо даже багом его не считают.</p>
<h2>Как исправить</h2>
<p>Что в этой ситуации делать нам?</p>
<p>Всё довольно просто. Системные программы нужно вернуть обратно на системный раздел. Удобнее всего это делать через &laquo;Мягкие&raquo; ссылки (<em>mklink /j</em>). Самое сложное определить какую программу в этот раз не может обновить тот или иной KB.</p>
<p>Поэтому буду публиковать все KB с которыми у меня возникли проблемы и какую папку нужно вернуть на место (для <em>Win7 x64 ENG</em>):</p>
<ol>
<li> Microsoft .NET Framework 3.5 SP1 Update for Windows 7 and Windows Server 2008 R2 (KB982526)<br />
Папка: <strong>Reference Assemblies</strong></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/windowsupdate-error-80070011.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Аппаратный S.M.A.R.T. на сервере</title>
		<link>http://www.filosof.name/articles/hardware-smart-on-serve.xhtml</link>
		<comments>http://www.filosof.name/articles/hardware-smart-on-serve.xhtml#comments</comments>
		<pubDate>Fri, 04 Jun 2010 10:04:29 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[HDD]]></category>
		<category><![CDATA[MoBo]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[Все]]></category>
		<category><![CDATA[Высокие технологии]]></category>
		<category><![CDATA[Железо]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[mdraid]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[smart]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=310</guid>
		<description><![CDATA[Допустим у нас есть сервер построенный на Десктопной материнской плате. Большинство таких материнских плат умеют проверять состояние дисков во время загрузки через S.M.A.R.T. и выдавать предупреждения. Полезная штука. Особенно на сервере &#8211; там информация о Smart жизненно необходима. Только есть небольшая проблемка. Некоторые мамки просто выводят информацию на Экран. Моя материнская плата например стопорит загрузку и ждет нажатия клавиши. А [...]]]></description>
			<content:encoded><![CDATA[<p>Допустим у нас есть сервер построенный на Десктопной материнской плате. Большинство таких материнских плат умеют проверять состояние дисков во время загрузки через<em> S.M.A.R.T. </em>и выдавать предупреждения. Полезная штука. Особенно на сервере &#8211; там информация о Smart жизненно необходима.</p>
<p>Только есть небольшая проблемка. Некоторые мамки просто выводят информацию на Экран. Моя материнская плата например стопорит загрузку и ждет нажатия клавиши.</p>
<p>А вот ситуация которая произошла со мной совсем недавно: На сервере работает два диска в RAID 1 (mirror) на mdraid. Один из дисков выходит из строя. После чего система отказывается загружаться, хотя второй диск работает нормально. Загрузка повисает при инициализации BIOS. Обычный мерцающий курсор, но в биос пускает.</p>
<p>Если отключить битый диск &#8211; загрузка проходит нормально, только физического доступа к серверу нету и отключить диск нету никакой возможности. Заходим в BIOS через IP-KVM и выключаем пресловутый SMART, после чего загрузка проходит нормально. А если бы IP-KVM не было? Да и время простоя&#8230;</p>
<p>Отсюда большой и жирный вывод:<br />
<strong> Отключайте проверку SMART в BIOS на серверах.</strong></p>
<p>Для мониторинга SMART существует куча специальных программ под любые операционные системы, которые будут читать и анализировать информацию и заблаговременно вас в этом информировать прямо во время работы системы, а не только при загрузки.</p>
<p>Не повторяйте моих ошибок!)</p>
<p>Всем спасибо.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/hardware-smart-on-serve.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Идентификация мобильных браузеров</title>
		<link>http://www.filosof.name/articles/detect-mobilebrowser.xhtml</link>
		<comments>http://www.filosof.name/articles/detect-mobilebrowser.xhtml#comments</comments>
		<pubDate>Fri, 04 Jun 2010 06:47:37 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[Все]]></category>
		<category><![CDATA[Высокие технологии]]></category>
		<category><![CDATA[Разработка]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=292</guid>
		<description><![CDATA[Вы разрабатываете сайт и у вас встала задача отделить пользователей мобильных устройств от десктопных клиентов? Ну уровне php, apache, Javascript или ещё как нибудь? Мне попался очень полезный ресурс на эту тему: Detect Mobile Browser: http://detectmobilebrowser.com/ На сайте реализован удобный API. Определение через redirect туда и обратно. А также генератор кода для большинства жизненных ситуаций: [...]]]></description>
			<content:encoded><![CDATA[<p>Вы разрабатываете сайт и у вас встала задача отделить пользователей мобильных устройств от десктопных клиентов?<br />
Ну уровне php, apache, Javascript или ещё как нибудь?</p>
<p>Мне попался очень полезный ресурс на эту тему:<br />
<strong>Detect Mobile Browser</strong>: <a href="http://detectmobilebrowser.com/">http://detectmobilebrowser.com/<br />
</a><br />
На сайте реализован удобный API. Определение через redirect туда и обратно. А также генератор кода для большинства жизненных ситуаций:</p>
<ul>
<li>Apache</li>
<li>ASP</li>
<li>ASP.NET</li>
<li>ColdFusion</li>
<li>C#</li>
<li>JSP</li>
<li>JavaScript</li>
<li>PHP</li>
<li>Python</li>
<li>Rails</li>
</ul>
<p>У меня тоже встала такая проблема.<br />
Я решил сделать мобильную версию блога по адресу <strong>m.filosof.name</strong>. Сайт будет отличаться только специальным <strong>css</strong> и отсутствием некоторых элементов дизайна. Код будет тот же самый, появиться только пару <strong>if-ов</strong> в шаблоне.</p>
<p>Чтобы проверка работала быстро и прозрачно, я спрятал её в <em>.htaccess</em> файл.</p>
<p>Код, сгенерированный <em>detectmobilebrowser.com</em> для <em>Apache</em></p>
<pre><code class="pre">RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile|o2|opera\ m(ob|in)i|palm(\ os)?|p(ixi|re)\/|plucker|pocket|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce;\ (iemobile|ppc)|xiino [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]

RewriteRule ^$ http://detectmobilebrowser.com/mobile [R,L]</code>
</pre>
<p>С учётом контроля <strong>www.</strong> префикса и дефолтного кода для WordPress &#8211; получился вот такой <em>.htaccess</em>:</p>
<pre><code class="pre">
 RewriteEngine On
 RewriteBase /

# Статический конетент
  RewriteCond %{REQUEST_FILENAME} -f [OR]
  RewriteCond %{REQUEST_FILENAME} -d
  RewriteRule .+ - [L]

# Маркер проверки версии броузера
  RewriteCond %{HTTP_COOKIE} !m\.test= [NC]
# проверка хоста
  RewriteCond %{HTTP_HOST} !^m\.filosof\.name
# тест на мобильное устройство с http://detectmobilebrowser.com/
  RewriteCond %{HTTP_USER_AGENT} android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile|o2|opera\ m(ob|in)i|palm(\ os)?|p(ixi|re)\/|plucker|pocket|psp|smartphone|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce;\ (iemobile|ppc)|xiino [NC,OR]

  RewriteCond %{HTTP_USER_AGENT} ^(1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a\ wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r\ |s\ )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1\ u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(\ i|ip)|hs\-c|ht(c(\-|\ |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(\ |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(\ |\/)|klon|kpt\ |kwc\-|kyo(c|k)|le(no|xi)|lg(\ g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-|\ |o|v)|zz)|mt(50|p1|v\ )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v\ )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|\ )|webc|whit|wi(g\ |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-) [NC]

# теперь мы работает с мобильным устройством
  RewriteRule ^(.*) http://m.filosof.name/$1 [L,cookie=m.test:1:.filosof.name,R=301]

# Eсли куки установленны, но запрос всё равно идёт на не известный домен
  RewriteCond %{HTTP_HOST} ^.*\.m\.filosof\.name
  RewriteRule ^(.*) http://m.filosof.name/$1 [L,R=301]

  RewriteCond %{HTTP_HOST} !^www\.filosof\.name
  RewriteCond %{HTTP_HOST} !^m\.filosof\.name
  RewriteRule ^(.*) http://www.filosof.name/$1 [L,R=301]

# WordPress
  RewriteRule .* /index.php [L]</code>
</pre>
<p>Скрипт решает следующие задачи:</p>
<ol>
<li>Отключает обработчик на запросах к статическому контенту (тут домен совершенно не важен);</li>
<li>Для нового клиента на не мобильную версию сайта  проверяет браузер и перенаправляет мобильный клиентов на мобильный сайт;</li>
<li>Запрещает посещать сайт по любым другим алиясам кроме мобильного и десктопного;</li>
<li>Записывает в куки маркер проверки и больше такую проверку не производит (это нужно, чтобы можно было принудительно переключиться с мобильной версии на десктопную и обратно).</li>
</ol>
<p>Изначально я сделал перенаправление с мобильной версии на полную для десктопных браузеров, но такое перенаправление бессмысленно. Во-первых тогда поисковики без Cookie не смоглибы индексировать мобильную версию. Во-вторых логика при которой десктопный пользователь попадает на мобильную версию сайта ошибочна.</p>
<p>Ещё одна ошибка которую я пытался допустить &#8211; использование маркеров в .htaccess:</p>
<pre><code class="pre"># Устанавливаем маркер проверки на мобильную версию
  RewriteRule .* - [E=IS_MOBILE_TEST:0]

# куки не была установленна
  RewriteCond %{HTTP_COOKIE} !m\.test= [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
# переписываем маркер
# второй маркер IS_MOBILE_SET нужен для сохраниение правильного приоритета
  RewriteRule .* - [E=IS_MOBILE_TEST:1,E=IS_MOBILE_SET:1]</code>
</pre>
<p>Тут надо учитывать, что любую дерективу <em>mod_rewrite</em> начинает выполнять с проверки <em>RewriteRule</em>, и сначла выполняет наиболее подходящие. В условии маркеров добиться правильного порядка выполнения кода было очень сложно. Но даже потом возникали непонятные ошибки. Например редирект не происходил если в <em>RewriteRule</em> присутствовал флаг [R]. поковырявшись пару часиков, я понял что подход с маркерами на самом деле избыточен, достаточно перевернуть логику и по очереди отсекать URL требующие минимальной обработки. Ещё 10 минут и всё работает.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/detect-mobilebrowser.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mdadm, Мигрируем на новые физические диски</title>
		<link>http://www.filosof.name/articles/mdraid-migration.xhtml</link>
		<comments>http://www.filosof.name/articles/mdraid-migration.xhtml#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:24:03 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[Все]]></category>
		<category><![CDATA[Высокие технологии]]></category>
		<category><![CDATA[Операционные системы]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[mdraid]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=271</guid>
		<description><![CDATA[Сегодня мы будем переносить mdraid разделы с одних физических дисков на другие. Причём делать это будем на горячую - то есть без остановки работающих приложений. Что мы имеем: Ubuntu Linux 9.10 4 физических диска: два старых по 250 Gb и два новых по 500 Gb. Все диски SATA. На старых дисках размечен совтовый Mdraid по следующей схеме: [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня мы будем переносить <strong>mdraid </strong>разделы с одних физических дисков на другие. Причём делать это будем на горячую - то есть без остановки работающих приложений.</p>
<h3>Что мы имеем:</h3>
<p>Ubuntu Linux 9.10<br />
4 физических диска: два старых по 250 Gb и два новых по 500 Gb. Все диски SATA.<br />
На старых дисках размечен совтовый Mdraid по следующей схеме:</p>
<ul>
<li>/dev/md0 level=raid1 &#8211; бут;</li>
<li>/dev/md1 level=raid0 &#8211; своп;</li>
<li>/dev/md2 level=raid1 &#8211; рут и данные.</li>
</ul>
<p>Отдельно стоит упомянуть SWAP раздел на нулевой рейде &#8211; плохая мысль) Во-первых на нормально функционирующей Linux системе своп использоваться не должен. Во-вторых при неполадках в дисковой системе север необратимо зависает. И того: выигрыш в производительности ни как не используется, за то мы изрядно теряем в стабильности. Сэкономленные в нашем случае 16Gb дискового пространства в рамках SATA дисков выглядят даже не смешно.</p>
<p>Кроме того из старых дисков один уже умер. Swap не работает.</p>
<p>Листинг /dev/sd*:<br />
<code class="console"># ls /dev/sd*<br />
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sda6  /dev/sdb  /dev/sdc</code><br />
Как видно из листинга один из старых дисков даже не определяется.</p>
<pre>
<code class="console"># cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md2 : active raid1 sda6[0]
238099264 blocks [2/1] [U_]
md1 : inactive sda5[0](S)
5855552 blocks
md0 : active raid1 sda1[0]
240832 blocks [2/1] [U_]
unused devices: &lt;none&gt;</code>
</pre>
<p>Задачи будет две:</p>
<ol>
<li>Перенести <em>md0</em> и <em>md2 </em>на новые диски</li>
<li>Пересоздать swap в виде зеркального RAID (raid1). К счастью сделать это будет не сложно. В Swap разделе не храниться важных данных. к тому-же в текущей конфигурации он просто отсутствует. А вот если бы пришлось пере собирать диск с данными- то данные пришлось бы временно перемещать. А сделать это на горячую без LVM вряд ли получиться.</li>
</ol>
<p>И так, поехали:<br />
1. Нужно создать разделы под рейд на новых дисках:</p>
<pre>
<code class="console">#fdisk /dev/sdb
Command (m for help): m
Command action
a   toggle a bootable flag
b   edit bsd disklabel
c   toggle the dos compatibility flag
d   delete a partition
l   list known partition types
m   print this menu
n   add a new partition
o   create a new empty DOS partition table
p   print the partition table
q   quit without saving changes
s   create a new empty Sun disklabel
t   change a partition's system id
u   change display/entry units
v   verify the partition table
w   write table to disk and exit
x   extra functionality (experts only)

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
1
Invalid partition number for type `1'
Command action
e   extended
p   primary partition (1-4)
1
Invalid partition number for type `1'
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-60801, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-60801, default 60801): 30

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris
1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-
2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-
3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-
4  FAT16 &amp;lt;32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx
5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data
6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .
7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility
8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt
9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access
a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O
b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor
c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs
e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  GPT
f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor
12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor
14  Hidden FAT16 &amp;lt;3 61  SpeedStor       a9  NetBSD          f2  DOS secondary
16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): a
Partition number (1-4): 1

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.</code>
</pre>
<p>Не забудем изменить тип диска с Linux на <strong>Linux raid autodetect</strong><br />
Команда: &laquo;t&raquo;, Hex код: &laquo;fd&raquo;.<br />
А также добавить бут флаг для загрузочного раздела (если такой имеется).</p>
<p>Ещё, в случае переноса разделов я рекомендую указывать размер диска в цилиндрах, а не в байтах. Так проще создать идентичный раздел. Посмотреть размер можно через<strong> &laquo;fdisk -l {путь диска}</strong>&laquo;.</p>
<p>Проделываем тоже самое со вторым диском <strong>/dev/sdc</strong></p>
<pre>
<code class="console">#fdisk /dev/sdс
.
.
.</code>
</pre>
<p>Разбиваем оставшееся дисковое пространство, чтобы оно было идентично старым дискам. В моем случае это немного не так. Я выделаю дополнительный раздел под своп. В остальном размеры логических дисков идентичны. вот что получилось:</p>
<pre>
<code class="console"># fdisk -l /dev/sdc

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x6f91c38c

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          30      240943+  fd  Linux raid autodetect
/dev/sdc2              31       60801   488143057+   5  Extended
/dev/sdc5              31        2120    16787893+  fd  Linux raid autodetect
/dev/sdc6            2121       31762   238099333+  fd  Linux raid autodetect
# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5  /dev/sda6  /dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb5  /dev/sdb6  /dev/sdc  /dev/sdc1  /dev/sdc2  /dev/sdc5  /dev/sdc6</code>
</pre>
<p>PS у меня после записи изменение fdisk выдал ошибку о невозможности заменить таблицу разделов:</p>
<pre>
<code class="console">WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.</code>
</pre>
<p>Это произошло потому, что к этому моменту я уже добавил в рейд один из логических дисков.<br />
В этом случае нужно выполнить команду <strong>partprobe</strong>, и диски сразу появятся в системе.</p>
<p>Теперь нужно добавить эти разделы в md0.<br />
Но для начала не мешает взглянуть на состояние диска через <strong>mdadm  &#8211;detail /dev/md0</strong></p>
<pre>
<code class="console"># mdadm /dev/md0 --add /dev/sdb1
mdadm: added /dev/sdb1

# mdadm /dev/md0 --add /dev/sdc1
mdadm: added /dev/sdc1</code>
</pre>
<p>Изменим количество активных дисков для синхронизации, чтобы избавиться от spare дисков.</p>
<pre>
<code class="console">mdadm --grow -n 3 /dev/md0
mdadm --grow -n 3 /dev/md2</code>
</pre>
<p>Аналогично с остальными дисками.</p>
<p>Теперь нужно создать раздел под Swap. Я буду делать это через пересоздание <strong>md1</strong>.</p>
<p>Как видно из листинга своп у меня отсутствует.<br />
<code class="console"># swapon -s<br />
Filename </code></p>
<p>Убиваем неработающий диск<br />
<code class="console"># mdadm -S /dev/md1<br />
mdadm: stopped /dev/md1</code></p>
<p>Создаем на его месте новый<br />
<code class="console"># mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb5 /dev/sdc5<br />
mdadm: array /dev/md1 started.</code></p>
<p>Создадим файловую систему на новом диске:<br />
<code class="console"># mkswap /dev/md1<br />
Setting up swapspace version 1, size = 16787772 KiB<br />
no label, UUID=33ca1464-316a-4d97-be87-7128758b86c1</code></p>
<p>Сразу активируем только что созданный SWAP.<br />
<code class="console"># swapon /dev/md1</code></p>
<p>И проверяем<br />
<code class="console"># swapon -s<br />
Filename                                Type            Size    Used    Priority<br />
/dev/md1                                partition       16787768        58464   -1</code></p>
<p>Редактируем <strong>/etc/fstab</strong><br />
Узнать UUID диска можно через команду <strong>blkid</strong>.<br />
<code class="console"># /etc/fstab: static file system information.<br />
#<br />
# Use 'vol_id --uuid' to print the universally unique identifier for a<br />
# device; this may be used with UUID= as a more robust way to name devices<br />
# that works even if disks are added and removed. See fstab(5).<br />
#<br />
#<br />
proc            /proc           proc    defaults        0       0<br />
# / was on /dev/md2 during installation<br />
UUID=3b3646e2-6865-4e0d-af35-65d938a55fb3 /               ext3    relatime,errors=remount-ro 0       1<br />
# /boot was on /dev/md0 during installation<br />
UUID=0bc279df-f2e3-4ad9-b409-ae396eb73f18 /boot           ext2    relatime        0       2<br />
# swap was on /dev/md1 during installation<br />
UUID=33ca1464-316a-4d97-be87-7128758b86c1 none            swap    sw              0       0<br />
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0</code></p>
<p>В моём случае я пересоздал только раздел для SWAP, поэтому мне пришлось отредактировать только 1 UUID. Если перенос осуществляется без пересоздания разделов, то <strong>fstab</strong> править не нужно.</p>
<p>Затем берём информацию из <strong>mdadm &#8211;examine &#8211;scan</strong> и записываем в <strong>/etc/mdadm/mdadm.conf</strong> иначе новые md* диски подниматься не будут.</p>
<p>Устанавливаем GRUB на каждый новый диск:</p>
<pre>
<code class="console"># grub
grub&gt; root (hd1,0)
root (hd1,0)
grub&gt; setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"...  17 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+17 p (hd1,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.

grub&gt; root (hd2,0)
root (hd2,0)
grub&gt; setup (hd2)
setup (hd2)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd2)"...  17 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd2) (hd2)1+17 p (hd2,0)/grub/stage2 /grub/menu.lst"... succeeded
Done.</code>
</pre>
<p>Осталось перезагрузить, проверить как это всё работает, а также отключить старые диски.</p>
<h3> Хорошие ссылки на тему</h3>
<ul>
<li><a href="http://ru.wikipedia.org/wiki/Mdadm">Mdadm в wikipedia</a>;</li>
<li><a href="http://www.xgu.ru/wiki/raid">Программный RAID в Linux</a>;</li>
<li><a href="http://blog.sozinov.eu/2007/05/software-raid-1.html">Инструкция по восстановлению Software RAID 1</a>;</li>
<li><a href="http://www.howtoforge.com/software-raid1-grub-boot-debian-etch">How To Set Up Software RAID1 On A Running System (Incl. GRUB Configuration) (Debian Etch)</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/mdraid-migration.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Большой и страшный шмель</title>
		<link>http://www.filosof.name/articles/bumblebee.xhtml</link>
		<comments>http://www.filosof.name/articles/bumblebee.xhtml#comments</comments>
		<pubDate>Thu, 08 Apr 2010 14:16:14 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Все]]></category>
		<category><![CDATA[Моё]]></category>
		<category><![CDATA[природа]]></category>
		<category><![CDATA[bumblebee]]></category>
		<category><![CDATA[весна]]></category>
		<category><![CDATA[насекомые]]></category>
		<category><![CDATA[шмель]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=265</guid>
		<description><![CDATA[Однажды весною к нам в окно залетел Здоровенный такой шмель. Еле выгнал его. 8-ой этаж между прочим.]]></description>
			<content:encoded><![CDATA[<p><a title="шмель by Aleksey Parshukov, on Flickr" href="http://www.flickr.com/photos/parshukov/4502230813/"><img src="http://farm3.static.flickr.com/2768/4502230813_7569367589.jpg" alt="шмель" width="500" height="193" /></a></p>
<p>Однажды весною к нам в окно залетел Здоровенный такой шмель. Еле выгнал его. 8-ой этаж между прочим.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/bumblebee.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как переименовать сетевые интерфейсы в Linux (eth0 в eth1, eth1 в trr_lala т.д.)</title>
		<link>http://www.filosof.name/articles/rename-linux-network-interfaces.xhtml</link>
		<comments>http://www.filosof.name/articles/rename-linux-network-interfaces.xhtml#comments</comments>
		<pubDate>Fri, 19 Mar 2010 10:23:52 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[/dev]]></category>
		<category><![CDATA[/dev/eth0]]></category>
		<category><![CDATA[/sys/class/net]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[eth0]]></category>
		<category><![CDATA[eth1]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=223</guid>
		<description><![CDATA[В Ubuntu, а значит и в Debian (а на самом деле много где ещё, например в Gentoo) файла /dev/eth0 нету. Потому как сетевая карта устройство не символьное, но и не блочное. Сетевые устройства хранятся вот здесь: /sys/class/net Имена сетевых интерфейсов в Linux компьютерах в последнее время стали привязываться к конкретным устройствам.  Так, если вы вытащите [...]]]></description>
			<content:encoded><![CDATA[<p>В Ubuntu, а значит и в Debian (а на самом деле много где ещё, например в Gentoo) файла <em>/dev/eth0</em> нету. Потому как сетевая карта устройство не символьное, но и не блочное. Сетевые устройства хранятся вот здесь: <em>/sys/class/net</em></p>
<p>Имена сетевых интерфейсов в Linux компьютерах в последнее время стали привязываться к конкретным устройствам.  Так, если вы вытащите сетевую карту из своего компьютера и вставите в него другую, интерфейс <em>eth0 </em>у вас пропадёт, а новая карточка будет называется <em>eth1</em>. При попытке сделать <em>ifconfig eth0 up </em>система будет говорить, что, такого устройства не существует.</p>
<p>В моём случае проблема получилась при клонирования виртуальной машины в VMWare ESXi. Дабы не случилось конфликта MAC адрес на клонированной машине отливался от MAC адреса в оригинальной VM.</p>
<p>Поскольку вся конфигурация у вас скорее всего прописана для интерфейса  eth0, можно переписать конфигурацию. а можно переименовать интерфейс.</p>
<p>Все неприятности создаёт udev, который по умолчанию привязывает имена сетевых  устройств к их MAC адресам. Например, в Debian Etch это находится в  файле</p>
<p><em>/etc/udev/rules.d/z25_persistent-net.rules</em></p>
<p>Для Ubuntu:</p>
<p><em><em>/etc/udev/rules.d/</em>70-persistent-net.rules</em></p>
<p>Для open suse:</p>
<p><em><em><em>/etc/udev/rules.d/</em></em>30-network.rules</em></p>
<p>пример файла:<br />
SUBSYSTEM==&raquo;net&raquo;, ACTION==&raquo;add&raquo;, DRIVERS==&raquo;?*&raquo;,  ATTR{address}==&raquo;XX:XX:XX:XX:XX:XX&raquo;, ATTR{type}==&raquo;1&#8243;, KERNEL==&raquo;eth*&raquo;,  NAME=&raquo;eth0&#8243;</p>
<p>Достаточно отредактировать параметр <strong>NAME=</strong> для вашей новой сетевой карты. Можно кстати задать любое имя отличное от <em>eth*</em></p>
<p>Некоторые дистрибы в добавок к <em>persistent-net.rules</em> содержат и другие .<em>rules</em>, которые переписывают файл <em>persistent-net.</em> При исправлении файла persistent.rules стоит обратить на это внимание, иначе могут появиться несколько правил именования, или ваши изменения будут перезаписаны.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/rename-linux-network-interfaces.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Noize MC: Mercedes S666</title>
		<link>http://www.filosof.name/articles/noize-mc-mercedes-s666.xhtml</link>
		<comments>http://www.filosof.name/articles/noize-mc-mercedes-s666.xhtml#comments</comments>
		<pubDate>Tue, 02 Mar 2010 09:33:40 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Все]]></category>
		<category><![CDATA[Политика]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[Noize MC]]></category>
		<category><![CDATA[policy]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=248</guid>
		<description><![CDATA[В четверг в 8.05 утра на Ленинском проспекте в районе площади Гагарина в Москве произошла авария. Столкнулись два автомобиля: черный «Мерседес» S-класса и красный «Ситроен С3»&#8230;. http://www.novayagazeta.ru/data/2010/021/04.html Жалкая чернь, трепещи, на трассе патриции Мы опаздываем в ад, дорогу колесницам! Очень уважаю Noize MC за такую штуку. Ссылка на ролик отсюда: http://lollypunk-girl.livejournal.com/]]></description>
			<content:encoded><![CDATA[<blockquote><p>В четверг в 8.05 утра на Ленинском проспекте в районе площади Гагарина в Москве произошла авария. Столкнулись два автомобиля: черный «Мерседес» S-класса и красный «Ситроен С3»&#8230;.</p></blockquote>
<p><a href="http://www.novayagazeta.ru/data/2010/021/04.html">http://www.novayagazeta.ru/data/2010/021/04.html</a></p>
<p><strong>Жалкая чернь, трепещи, на трассе патриции</strong></p>
<p><strong>Мы опаздываем в ад, дорогу колесницам!</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/v/UPXtawGmZgQ&amp;feature" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/UPXtawGmZgQ&amp;feature" wmode="transparent"></embed></object></p>
<p>Очень уважаю <strong>Noize MC</strong> за такую штуку.<br />
Ссылка на ролик отсюда: <a href="http://lollypunk-girl.livejournal.com/">http://lollypunk-girl.livejournal.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/noize-mc-mercedes-s666.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enermax MODU82+ 625W, обзор</title>
		<link>http://www.filosof.name/articles/enermax-modu82-625w.xhtml</link>
		<comments>http://www.filosof.name/articles/enermax-modu82-625w.xhtml#comments</comments>
		<pubDate>Thu, 11 Feb 2010 05:41:31 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Железо]]></category>
		<category><![CDATA[625W]]></category>
		<category><![CDATA[Enermax]]></category>
		<category><![CDATA[FSP]]></category>
		<category><![CDATA[GFan]]></category>
		<category><![CDATA[hard]]></category>
		<category><![CDATA[MODU82+]]></category>
		<category><![CDATA[psu]]></category>
		<category><![CDATA[Thermaltake]]></category>
		<category><![CDATA[TT]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=241</guid>
		<description><![CDATA[Наконец-то заменил свой PSU на нормальный. Хочу поделиться своим счастьем) ТТ QFan Всё началось с небольшого апгрейдера, когда я решил заменить свой старенький БП от компании ASUS идущим в комплекте ещё к старому корпусу на более мощную и тихую модель. Выбор мой пал на такой вот БП:Thermaltake Toughpower QFan 500W (W0151). Подкупил меня большой 14mm [...]]]></description>
			<content:encoded><![CDATA[<p>Наконец-то заменил свой PSU на нормальный. Хочу поделиться своим счастьем)</p>
<h2>ТТ QFan</h2>
<p>Всё началось с небольшого апгрейдера, когда я решил заменить свой старенький БП от компании ASUS идущим в комплекте ещё к старому корпусу на более мощную и тихую модель. Выбор мой пал на такой вот БП:<a href="http://market.yandex.ru/model.xml?hid=857707&amp;modelid=1612724&amp;text=thermaltake+toughpower+qfan+500w+%28w0151%29&amp;srnum=1">Thermaltake Toughpower QFan 500W (W0151)</a>.<br />
<img src=" http://mdata.yandex.ru/i?path=b0319193945__111_big.jpg" alt="Thermaltake Toughpower QFan 500W (W0151)" /></p>
<p>Подкупил меня большой 14mm вентилятор и бесхитростная надпись <strong>QFan</strong>, вроде бы свидетельствующая об упоре на низкий уровень шума в этой модели. Рекламные проспекты пестрили уверениями в высоком качестве продукции и непревзойдённом уровне шума. Бла бла бла. Цена мне показалась адекватной, и я решился на покупку.</p>
<p>Бла бла бла. Надо было почитать обзоры.</p>
<p>Начнём с того, что продукция БП от <strong>Thermaltake </strong>в интернет обзорах особо не жалуются. Дело тут не в качестве сборки, а как мне кажется в плохой проектировке. Уровень шума выше среднего, характеристики хуже среднего. Многообещающий <strong>QFan</strong> вообще всего лишь маркетинговых ход, причём скорее отрицательный нежели положительный. Уровень шума в этой модели действительно ниже чем у обычных <strong>Thermaltake</strong>, правда обычные БП от Thermaltake далеко не самые тихие. Впрочем хороший и полный обзор есть на ixbit: <a href="http://www.ixbt.com/power/psu/tt_w0151.shtml">http://www.ixbt.com/power/psu/tt_w0151.shtml</a>. Впечатления там аналогичные.</p>
<p>А теперь самое ужасное: с моей материной Rampage II Extreme (одной из самых продвинутых на тот момент), этот БП не заработал. Срабатывала какая то защита в БП и комп перегружался. Причём не только у меня &#8211; в интернете полно аналогичных отзывов. Впрочем не сильно много &#8211; на двух других компах, на которых я тестировал работу этого БП проблем не возникло. Два месяца долбления всех мыслимых и не мыслимых технических поддержек результата не принесло: сошлись на технических стыковках и отправили меня куда подальше. На форумах, где я создавал треды, решения тоже не придумали. В общем это БП я продал, чему был рад несказанно.</p>
<h2>FSP Group</h2>
<p>Следующим моим БП был <strong>FSP Group ATX-400PNF 400W</strong><br />
Описание в <a href="http://market.yandex.ru/model.xml?hid=857707&amp;modelid=1598460&amp;show-uid=400368012658749241">Яндекс.Маркет</a><br />
<img src="http://mdata.yandex.ru/i?path=b0216195850__111_sm.jpg" alt="FSP" /><br />
Хороший, надёжный, недорогой.<br />
Но не очень удобный и сильно шумноватый. Хотя на <strong>ixbt </strong>часто пишут что БП от FSP вполне себе тихие, я бы с этим не согласился. На уровне офиса может и ничего, а для дома однозначно не подходит.<br />
С этим БП у меня проблем небыло, но вариант явно проходной и я начал выбирать себе БП &laquo;своей мечты&raquo;.</p>
<h2>Как правильно выбирать БП?</h2>
<p>На самом деле всё оказалось очень просто. есть такой замечательный сайт: <a href="http://www.silentpcreview.com">www.silentpcreview.com</a>. На этом замечательном сайте самые лучше обзоры БП (и не только) которые подойдёт для создания действительно техой системы. никаких блоков от TT там нету. Зато есть интересный БП: <strong>Enermax Modu82+ 625W</strong> который там считается чуть ли не лучшим выбором. Есть ещё кончено <strong>Seasonic</strong>, но мне почему-то понравился именно <strong>Enermax</strong>))</p>
<h2>Enermax MODU82+ 625W</h2>
<p>Просто скажу что БП оправдал все самые смелые ожидания. Разве что размеры и упаковка&#8230; Все сделано очень просто. Упаковка маленькая (у ТТ коробка была просто огромной), БП тоже маленький. Ничего лишнего, ни километры пенопласта, ни толстенных буклетов, ни огромных радиаторов.</p>
<p>Основная техническая мысль устройства:</p>
<ol>
<li>Он греется меньше конкурентов (КПД очень высокий);</li>
<li>Он может работать на температурах выше конкуренто( проще говоря БП довольно сильно нагревается прежде чем начинает увеличивать скорость врашения вентилятора. Это хорошё видно на графиках в обзора)</li>
</ol>
<h2>Чуть чуть моих фоток:</h2>
<p><img src="http://farm5.static.flickr.com/4026/4347627733_7e1a818040.jpg" alt="" /><br />
<img src="http://farm3.static.flickr.com/2739/4348375790_19699d48c6.jpg" alt="" /><br />
<img src="http://farm5.static.flickr.com/4016/4347628083_86dc5eb676_b.jpg" alt="" /><br />
<img class="left" src="http://farm5.static.flickr.com/4001/4348376292_231bece476.jpg" alt="" /><br />
<img src="http://farm5.static.flickr.com/4009/4347628187_d4d3d01c61.jpg" alt="" /><br />
<strong>До и после</strong><br />
<img src="http://farm3.static.flickr.com/2790/4347628603_ce892f63db.jpg" alt="" /></p>
<h3>Сслки:</h3>
<p>Яндекс.Маркет: <a href="http://market.yandex.ru/model.xml?hid=857707&amp;modelid=2436409&amp;clid=502">http://market.yandex.ru/model.xml?hid=857707&amp;modelid=2436409&amp;clid=502</a></p>
<p>Офф сайт: <a href="http://www.enermaxru.com/produkte/power-supplies/modu82-2.html">http://www.enermaxru.com/produkte/power-supplies/modu82-2.html</a></p>
<p>Обзор на iXbt:  <a href="http://www.ixbt.com/power/psu/enermax_emd525.shtml">http://www.ixbt.com/power/psu/enermax_emd525.shtml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/enermax-modu82-625w.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как правильно делать Migration на Parallels Virtuozzo Containers 4.0 под Linux</title>
		<link>http://www.filosof.name/articles/migration-on-virtuozzo-containers-4-0-for-linux.xhtml</link>
		<comments>http://www.filosof.name/articles/migration-on-virtuozzo-containers-4-0-for-linux.xhtml#comments</comments>
		<pubDate>Thu, 28 Jan 2010 12:11:19 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Виртуализация]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[EZ Templates]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[Parallels Virtuozzo Containers]]></category>
		<category><![CDATA[virtuozzo]]></category>
		<category><![CDATA[vz]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=232</guid>
		<description><![CDATA[Обоснованно на личном опыте. Первое правило хорошего админа &#8211; делаем Backup. Рекомендую. Обновить virtuozzo на обеих серверах. Обязательно! Обновить Контейнер и Template для него. Чтобы не было мучительно больно делаем Clone для Контейнера (необходимо свободное место на диске исходного сервера). Делаем Migration для клона и проверяем всё ли нормально заработало. И только потом делаем Migration [...]]]></description>
			<content:encoded><![CDATA[<p><em>Обоснованно на личном опыте.</em></p>
<ol>
<li> Первое правило хорошего админа &#8211; делаем <strong>Backup</strong>.</li>
<li>Рекомендую. Обновить <strong>virtuozzo </strong>на обеих серверах.</li>
<li>Обязательно! Обновить Контейнер и <strong>Template </strong>для него.</li>
<li>Чтобы не было мучительно больно делаем <strong>Clone</strong> для Контейнера (необходимо свободное место на диске исходного сервера).</li>
<li> Делаем Migration для клона и проверяем всё ли нормально заработало.</li>
<li>И только потом делаем <strong>Migration </strong>для самого контейнера.</li>
</ol>
<p>Так бывает, что некоторые системные файл в контейнере становятся недоступными. Нету этих файлов и в бакапах. Зато есть в <strong>Template</strong>.</p>
<p>Новый формат шаблонов под <strong>Linux </strong>который появился в четвёртой версии Виртуозы: <strong>EZ Templates</strong> (<a href="http://download.swsoft.com/virtuozzo/virtuozzo4.0/docs/lin/VzLinuxTmplMgmt/index.htm">Дока</a>) подразумевает, что common пакеты будут представлены во всех производных контейнерах в виде ссылки на файлы из Шаблона.</p>
<p>Файлы эти хранятся в виде кеша в папке <span class="code">/vz/template/cache/</span></p>
<p>Только вот <strong>Migration</strong> необходимые файлы из Шаблона не переместит. Как пишут в форуме на <a href="http://forum.parallels.com/" target="_blank">http://forum.parallels.com/</a> это какой-то неведомый баг в самом <strong>Migration</strong> который тянется ещё из бох знает какой версии и так быть не должно. Но оно так.</p>
<p>Как результат наша перемещённая WM наполнена битыми ссылками и кучей нерабочих сервисов. Не помогает ни обновление самого контейнера, ни обновление Шаблонов. Не получилось у меня починить такую VM и другими способами. Дело в том, что такие &laquo;волшебные файлы&raquo; удалить не получиться.</p>
<p>Немного из результата выполнения команды <strong>ls -la /etc/apache2/mods-available/</strong><br />
<code>.<br />
.<br />
ls: cannot access /etc/apache2/mods-available/negotiation.load: No such file or directory<br />
ls: cannot access /etc/apache2/mods-available/dir.load: No such file or director<br />
total 32<br />
drwxr-xr-x 2 root root 4096 2009-11-14 13:56 .<br />
drwxr-xr-x 7 root root 1404 2010-01-28 14:13 ..<br />
.<br />
.<br />
?????????? ? ?    ?       ?                ? deflate.conf<br />
?????????? ? ?    ?       ?                ? deflate.load<br />
-rw-r--r-- 1 root root  122 2008-10-01 18:32 dir.conf<br />
?????????? ? ?    ?       ?                ? dir.load<br />
-rw-r--r-- 1 root root  604 2008-10-01 18:32 disk_cache.conf</code></p>
<h2>Решение проблемы с рассинхронизации шаблонов</h2>
<p>Перед перемещением контейнера (можно и после но время простоя увеличиться) надо синхронизировать Шаблоны контейнеров.<br />
На стороне виртуозы с которой переносим контейнер, выполняем:</p>
<p><code># rsync -avz -e ssh /vz/template/debian DESTANETION_IP:/vz/template</code></p>
<ul>
<li><em>пути заменить на свои</em></li>
<li><em>DESTANETION_IP &#8211; заменить на адрес второго сервера</em></li>
</ul>
<p>На второй виртуозе выполняем:<br />
<code># vzpkg update cache debian-4.0-x86_64</code><br />
<em>debian-4.0-x86_64 заменить на имя вашего шаблона.</em></p>
<p>Сначала проверяем на клоне.<br />
Потом перемещаем боевой сервер.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/migration-on-virtuozzo-containers-4-0-for-linux.xhtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Virtuozzo Migrate Error</title>
		<link>http://www.filosof.name/articles/virtuozzo-migrate-error.xhtml</link>
		<comments>http://www.filosof.name/articles/virtuozzo-migrate-error.xhtml#comments</comments>
		<pubDate>Wed, 27 Jan 2010 15:39:56 +0000</pubDate>
		<dc:creator>Aleksey Parshukov</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Виртуализация]]></category>
		<category><![CDATA[/bin/cp]]></category>
		<category><![CDATA[Bad address]]></category>
		<category><![CDATA[openVZ]]></category>
		<category><![CDATA[Parallels Virtuozzo Containers]]></category>
		<category><![CDATA[preserving times]]></category>
		<category><![CDATA[pvc]]></category>
		<category><![CDATA[vz]]></category>

		<guid isPermaLink="false">http://www.filosof.name/?p=225</guid>
		<description><![CDATA[Собираю сервер. Устанавливаю последнюю версию CentOS 5 x64 через net install Обновляю ось через yum Устанавливаю последованию версию Parallels Virtuozzo Containers 4.0 под Linux Линкую новый Nod в PIM Перемешаю первый VPS &#8211; всё Ок Перемешаю второй&#8230; Container start failed Operation start with the Env(s) vpsname is finished with errors: Error invoking external utility: vzctl [...]]]></description>
			<content:encoded><![CDATA[<p>Собираю сервер.<br />
Устанавливаю последнюю версию CentOS 5 x64 через net install<br />
Обновляю ось через yum<br />
Устанавливаю последованию версию Parallels Virtuozzo Containers 4.0 под Linux<br />
Линкую новый Nod в PIM<br />
Перемешаю первый VPS &#8211; всё Ок<br />
Перемешаю второй&#8230;</p>
<p><code>Container start failed</code></p>
<p><code>Operation start with the Env(s) vpsname is finished with errors: Error invoking external utility: vzctl start 108 failed: Starting Container ... Container is mounted Setup slm memory limit Setup slm subgroup (default) Setting devperms 20002 dev 0x7d00 Setup ioprio: 4 Adding port redirection to Container(1): 4643 8443 Adding IP address(es) to pool: Adding IP address(es): x.x.x.x/bin/cp: preserving times for `/etc/network/interfaces.5303': Bad address ERROR: Can't copy file /etc/network/interfaces Container is unmounted Container start failed.</code></p>
<p>Не перемещается&#8230;<br />
Выключаю VPS, снова перемещаю &#8211; всё Ок.<br />
Теперь стартуем&#8230; опять ошибка:<br />
<code>Operation migrate_v2v with the Env(s) "vpsname" is finished with errors: Can not migrate: exec vzmsrc failed [512] : Connection to destination node (x.x.x.x) is successfully established Moving/copying CT#100 -&gt; CT#100, [], [] ... Checking external bind mounts Check cluster ID Checking keep dir for private area copy Checking SLM-only mode Checking license restrictions Checking technologies Checking disk usage space Checking templates for CT copy ez template area directories vzctl failed, exitcode=46 Can't move/copy CT#100 -&gt; CT#100, [], [] : vzctl failed, exitcode=46 vzctl : Hostname for Container set: vpsname  vzctl : File resolv.conf was modified Checking caches Checking IP addresses on destination node Check target CT name: cloned novushost Checking RATE parameters in config Tracker started Copy private area '/vz/private/100' done OfflineManagement CT#100 ... done Stopping CT#100 ... done Syncing tracked files from '/vz/private/100/fs' done Starting CT#100 ... done OfflineManagement CT#100 ... done .</code></p>
<p>пробую ручками:<br />
<code># vzctl start 101<br />
Starting Container ...<br />
Container is mounted<br />
Setup slm memory limit<br />
Setup slm subgroup (default)<br />
Setting devperms 20002 dev 0x7d00<br />
Setup ioprio: 4<br />
Adding port redirection to Container(1): 4643 8443<br />
Adding IP address(es) to pool:<br />
Adding IP address(es): x.x.x.x<br />
/bin/cp: preserving times for `/etc/network/interfaces.30043': Bad address<br />
 ERROR: Can't copy file /etc/network/interfaces<br />
Container is unmounted<br />
Container start failed</code></p>
<p>Пробую обновить перед перемещением VPS &#8211; тот же результат.</p>
<p>Оказывается!!! Виртуоза при инсталляции не ставит свою последованию доступную версию и сразу после установки нужно ручками делать апдейт.<br />
Заходим в PIM, обновляем виртуозу до последний версии. </p>
<p>Ядро после установки: <strong>2.6.18-028stab059.6</strong><br />
Обновилось до: <strong>2.6.18-028stab067.4</strong></p>
<p>Всё работает норм.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.filosof.name/articles/virtuozzo-migrate-error.xhtml/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
