<?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>OpenSource в заметках &#187; Система</title>
	<atom:link href="http://www.ashep.org/category/sistema/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ashep.org</link>
	<description>Путь к пониманию</description>
	<lastBuildDate>Fri, 09 Mar 2012 07:05:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Работа с архивами rdiff-backup</title>
		<link>http://www.ashep.org/2012/rabota-s-arxivami-rdiff-backup/</link>
		<comments>http://www.ashep.org/2012/rabota-s-arxivami-rdiff-backup/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 23:45:43 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[rdiff-backup]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2793</guid>
		<description><![CDATA[В предыдущей статье мы рассмотрели основные моменты использования утилиты rdiff-backup для резервного копирования данных. Сегодня предлагаю познакомиться с возможностями, который утилита предлагает для восстановления данных из резервных копий, а также получения информации о них. Поиск файлов Прежде, чем вы приступите к восстановлению данных, вы, как правило, знаете имена нужных файлов или хотя бы их части. [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/rabota-s-arxivami-rdiff-backup/' addthis:title='Работа с архивами rdiff-backup' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>В <a href="http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/">предыдущей статье</a> мы рассмотрели основные моменты использования утилиты <strong>rdiff-backup</strong> для резервного копирования данных. Сегодня предлагаю познакомиться с возможностями, который утилита предлагает для восстановления данных из резервных копий, а также получения информации о них.</p>
<img class="aligncenter size-full wp-image-2799" title="Backup_center_icon" src="http://www.ashep.org/wp-content/uploads/2012/03/Backup_center_icon.png" alt="" width="256" height="256" /><br />
<span id="more-2793"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Поиск файлов</h3>
<p>Прежде, чем вы приступите к восстановлению данных, вы, как правило, знаете имена нужных файлов или хотя бы их части. rdiff-backup в своих архивах хранит файлы, не изменяя их имён, поэтому для того, чтобы определить наличие/отсутствие файла в архиве, вы можете использовать традиционные UNIX-утилиты, например <a href="http://www.ashep.org/tag/find">find</a>. Например:</p>
<pre>$ find /media/backups/var/log -iname 'messages*'
/media/backups/var/log/messages.2.gz
/media/backups/var/log/messages.1
/media/backups/var/log/messages.3.gz
/media/backups/var/log/messages
/media/backups/var/log/messages.4.gz
/media/backups/var/log/rdiff-backup-data/increments/messages.2012-03-07T00:02:17Z.diff.gz
/media/backups/var/log/rdiff-backup-data/increments/messages.2012-03-06T02:42:01Z.diff.gz</pre>
<h3>Обзор инкрементов</h3>
<p>Поскольку rdiff-backup выполняет инкрементное копирование, при регулярном архивировании часто изменявшиеся в прошлом файлы будут иметь несколько версий. Чтобы получить информацию об имеющихся в архиве инкрементах файлов/каталогов, воспользуйтесь ключом <strong>--list-increments</strong>:</p>
<pre>$ rdiff-backup --list-increments /media/backups/var/log
Found 2 increments:
    increments.2012-03-06T02:42:01Z.dir   Tue Mar  6 02:42:01 2012
    increments.2012-03-07T00:02:17Z.dir   Wed Mar  7 00:02:17 2012
Current mirror: Wed Mar  7 20:17:18 2012</pre>
<p>Как видим на примере, каталог /media/backups/var/log имеет две предыдущие версии версии (2 increments) и одну текущую (current mirror).</p>
<h3>Форматы времени</h3>
<p>Прежде, чем рассматривать дальнейшие функции rdiff-backup, необходимо понимать, как утилита понимает штампы времени. Здесь всё достаточно просто. Определять время в rdiff-backup можно следующими способами:</p>
<ul>
<li>при помощи слова <strong>&laquo;now&raquo;</strong>, которое является синонимом текущего времени;</li>
<li>используя целое число, определяющее время в формате <a href="http://ru.wikipedia.org/wiki/UNIX-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F">UNIX time</a>;</li>
<li>при помощи строки в формате, предложенном в <a href="http://www.w3.org/TR/NOTE-datetime">W3 Date and Time Formats</a>, например &laquo;2012-01-25T07:00:00+02:00&raquo;;</li>
<li>используя временные интервалы и суффиксы  <strong>s, m, h, D, W, M</strong> и <strong>Y</strong>, соответствующие секундам, минутам, часам, дням, неделям, месяцам и годам. В этом случае значение времени вычисляется путём вычитания указанного интервала из текущего времени. Также, вы можете комбинировать интервалы, например: &laquo;1h25m&raquo; или &laquo;5W3D&raquo;. Только не забывайте, что при использовании этого формата rdiff-backup &laquo;думает&raquo;, что в любом месяце ровно 30 дней, а в любом году ровно 365 дней;</li>
<li>при помощи даты в формате <strong>YYYY/MM/DD</strong>, <strong>YYYY-MM-DD</strong>,<strong> MM/DD/YYYY</strong>, или <strong>MM-DD-YYYY</strong> определяющей  полночь указанной даты относительно текущего часового пояса;</li>
<li>используя целое число с суффиксом <strong>&laquo;B&raquo;</strong>, которое определяет количество &laquo;сессий назад&raquo; rdiff-backup. Например, &laquo;0B&raquo; означает время создания последнего архива, а &laquo;5B&raquo; означает 5й по счёту архив относительно последнего.</li>
</ul>
<h3>Получение списка изменявшихся файлов</h3>
<p>Часто бывает необходимо получить список файлов, которые модифицировались за определённый промежуток времени. Например, следующая команда выведет список файлов, которые менялись за последние два дня:</p>
<pre>$ rdiff-backup --list-changed-since 2D /media/backups/etc</pre>
<h3>Получение списка файлов на определённый момент времени</h3>
<p>Следующая команда выводит список всех файлов в архиве, которые в нём содержались 3 версии назад, включая также файлы, которые были удалены в последующих версиях:</p>
<pre>$ rdiff-backup --list-at-time 3B /media/backups/etc</pre>
<h3>Сравнение архива и текущего состояния файлов</h3>
<p>Следующая команда выведет все файлы, которые были изменены в каталоге /etc с момента его последней архивации в каталог /media/backups/etc:</p>
<pre>$ rdiff-backup --compare /etc /media/backups/etc</pre>
<p>То же самое, но с указанием версии архива:</p>
<pre>$ rdiff-backup --compare-at-time 3B /etc /media/backups/etc</pre>
<h3>Получение статистической информации об архиве</h3>
<p>После завершения сессий архивации rdiff-backup создаёт в каталоге архива специальный файл <strong>rdiff-backup-data/session_statistics*</strong>, содержащий разнообразную статистическую информацию о результатах сессии. Утилита предлагает специальную опцию <strong>--calculate-average</strong>, при помощи которой вы можете получить общее представление об архиве, например:</p>
<pre>$ rdiff-backup --calculate-average /media/backups/etc/rdiff-backup-data/session_statistics*
--------------[ Average of 4 stat files ]--------------
ElapsedTime 7.49 (7.49 seconds)
SourceFiles 2177.0
SourceFileSize 21157087.25 (20.2 MB)
MirrorFiles 1633.0
MirrorFileSize 15826670.75 (15.1 MB)
NewFiles 544.0
NewFileSize 5264292.0 (5.02 MB)
DeletedFiles 0.0
DeletedFileSize 0.0 (0 bytes)
ChangedFiles 36.5
ChangedSourceSize 10237590.5 (9.76 MB)
ChangedMirrorSize 10171466.0 (9.70 MB)
IncrementFiles 36.25
IncrementFileSize 6761.75 (6.60 KB)
TotalDestinationSizeChange 5337178.25 (5.09 MB)
Errors 0
-------------------------------------------------------</pre>
<h3>Восстановление данных их архива</h3>
<p>Поскольку rdiff-backup хранит файлы &laquo;как есть&raquo;, то в случае нечаянного удаления нужного каталога/файла вы можете просто скопировать его обратно из архива обычной командой <strong>cp</strong>:</p>
<pre>$ cp -a /media/backups/etc/nginx /etc/nginx</pre>
<p>В более сложных ситуациях вам уже понадобится утилита rdiff-backup. Следующая команда выполняет восстановление данных из из последней версии архива, расположенного на удалённой системе:</p>
<pre>$ rdiff-backup --restore-as-of now backup@my-server.com::/var/backups/etc /etc</pre>
<p>Или то же самое, с короткой версией опции:</p>
<pre>$ rdiff-backup -r now backup@my-server.com::/var/backups/etc /etc</pre>
<p>Естественно, если вам нужна версия архива постарше, вам необходимо это указать:</p>
<pre>$ rdiff-backup -r 2012-03-06T02:37:21 backup@my-server.com::/var/backups/etc /etc</pre>
<p>или</p>
<pre>$ rdiff-backup -r 3B backup@my-server.com::/var/backups/etc /etc</pre>
<p>Если же вам нужно восстановить отдельный файл, то укажите нужную версию из каталога increments:</p>
<pre>$ rdiff-backup /media/backups/var/log/rdiff-backup-data/increments/messages.2012-03-06T02:42:01Z.diff.gz ~/restored/messages</pre>
<h3>Удаление старых версий</h3>
<p>При всей своей экономичности, утилита rdiff-backup не может бесконечно долго хранить инкрементные версии архивов хотя бы потому, что место на диске не бесконечно. Да и, как правило, иногда нет особого смысла хранить все изменения за последние 20 лет. На этот случай у rdiff-backup имеется специальная опция <strong>--remove-older-than</strong>, которая указывает программе вычищать устаревшие данные, которые старше определённого времени. Например, мне вполне достаточно хранить изменения за последний месяц:</p>
<pre>$ rdiff-backup --remove-older-than 1M /media/backups/etc/</pre>
<p>Кому-то может показаться удобным хранить данные лишь последних N сессий:</p>
<pre>$ rdiff-backup --remove-older-than 20B /media/backups/etc/</pre>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/rabota-s-arxivami-rdiff-backup/' addthis:title='Работа с архивами rdiff-backup' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/rabota-s-arxivami-rdiff-backup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Резервное копирование при помощи rdiff-backup</title>
		<link>http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/</link>
		<comments>http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 04:22:58 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[OpenSSH]]></category>
		<category><![CDATA[rdiff]]></category>
		<category><![CDATA[rdiff-backup]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2782</guid>
		<description><![CDATA[Способов резервного копирования файлов несчётное количество, как, впрочем. и инструментов для его осуществления. Сегодняшней заметкой я хочу обратить ваше внимание на довольно популярную утилиту инкрементного копирования под названием rdiff-backup. rdiff-backup&#160;&#8212; приложение написанное на Python, обладает большой гибкостью и довольно простое в обращении. Может работать как локально, так и поверх rsync/ssh, предоставляя возможность оптимально использовать каналы [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/' addthis:title='Резервное копирование при помощи rdiff-backup' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Способов <a href="http://www.ashep.org/tag/backup">резервного копирования</a> файлов несчётное количество, как, впрочем. и инструментов для его осуществления. Сегодняшней заметкой я хочу обратить ваше внимание на довольно популярную утилиту инкрементного копирования под названием <strong>rdiff-backup</strong>.</p>
<img class="aligncenter size-full wp-image-2789" title="Backup" src="http://www.ashep.org/wp-content/uploads/2012/03/Drive-Backup-icon.png" alt="" width="256" height="256" /><br />
<span id="more-2782"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
<a href="http://www.nongnu.org/rdiff-backup">rdiff-backup</a>&nbsp;&mdash; приложение написанное на Python, обладает большой гибкостью и довольно простое в обращении. Может работать как локально, так и поверх <a href="http://www.ashep.org/tag/rsync">rsync</a>/<a href="http://www.ashep.org/tag/ssh">ssh</a>, предоставляя возможность оптимально использовать каналы передачи данных в случае удалённых бекапов. Среди основных плюшек rdiff-backup можно выделить следующие возможности.</p>
<ul>
<li><strong>Инкрементное копирование</strong>, позволяющее восстановить любой файл, удалённый до последней операции бэкапа. То есть, вы можете восстановить файл, который был удалён хоть год назад, при том что резервное копирование у вас выполняется, скажем, два раза в день.</li>
<li><strong>Сохранение всей информации о файлах</strong>. Восстанавливая файл из архива rdiff-backup, вы получите его в таком виде, в каком он был на момент занесения в архив, включая таймштампы, права доступа, владельцев и т. п. Помимо всего прочего, rdiff-backup корректно управляется с жёсткими и символическими ссылками, файлами устройств и FIFO. При этом утилита корректно будет вести себя в различных операционных системах, использующих разные типы файловых систем.</li>
<li><strong>Эффективное использование дискового пространства.</strong> Используя алгоритм rsync, утилита rdiff-backup сохраняет только изменения файлов, а не все файлы целиком. То есть, ваша БД весом в пару десятков гигабайт не будет каждый раз копироваться целиком, съедая пространство на диске. Будут копироваться только изменения.</li>
<li><strong>Эффективное использование каналов передачи данных</strong> в случае сетевых бэкапов само-собой вытекает из предыдущего пункта.</li>
<li><strong>&laquo;Прозрачное&raquo;</strong> хранение данных. rdiff-backup хранит бэкапы в точно таком же виде, в каком файлы находились на диске, не прибегая ни к каким хитроумным форматам. То есть, например, если вам понадобиться восстановить последний бэкап, не используя при этом rdiff-backup, вы сможете просто скопировать нужные файлы обратно на место.</li>
<li><strong>Автоматическое определение типов файловых систем</strong> позволяет утилите избавить вас от полного понимания всех тонкостей её настройки в зависимости от типа используемых ФС и ОС.</li>
</ul>
<h3>Установка</h3>
<p>В современных Linux-дистрибутивах rdiff-backup имеется в репозиториях, так что с её установкой у вас не должно возникнуть проблем. В случае же, если вы используете что-то другое, <a href="http://www.nongnu.org/rdiff-backup/index.html">посетите</a> главную страницу проекта, с которой можно скачать исходные коды.</p>
<h3>Локальное резервное копирование</h3>
<p>Под &laquo;локальным&raquo; или &laquo;удалённым&raquo; здесь и далее понимается получатель резервной копии. Сперва давайте рассмотрим самый простой способ запуска утилиты:</p>
<pre>$ rdiff-backup &lt;источник&gt; &lt;получатель&gt;</pre>
<p>Эта команда, как понятно из описания, выполнит резервное копирование из <strong>&lt;источник&gt;</strong> в <strong>&lt;получатель&gt;</strong>.  Обратите внимание, что в качестве получателя необходимо указывать либо пустой, либо несуществующий каталог, иначе rdiff-backup вежливо вам откажет, что правильно.</p>
<p>В режиме по умолчанию rdiff-backup довольно молчалива, и не надоедает диагностическими сообщениями до тех пор, пока не столкнётся с ошибкой. Регулировать разговорчивость утилиты можно при помощи короткой опции <strong>&#39;-v&#39;</strong> или её длинного аналога <strong>&#39;--verbosity&#39;</strong>. Значение опции может принимать значения от 0 до 9 (по умолчанию оно равно 3). Например, уровень 4 перед началом процедуры копирования выведет вам сводку опций работы утилиты:</p>
<pre>$ rdiff-backup -v 4 /var/log ~/log.backup
Using rdiff-backup version 1.2.8
Unable to import win32security module. Windows ACLs
not supported by filesystem at /var/log
escape_dos_devices not required by filesystem at /var/log
-----------------------------------------------------------------
Detected abilities for source (read only) file system:
  Access control lists                         On
  Extended attributes                          On
  Windows access control lists                 Off
  Case sensitivity                             On
  Escape DOS devices                           Off
  Escape trailing spaces                       Off
  Mac OS X style resource forks                Off
  Mac OS X Finder information                  Off
-----------------------------------------------------------------
Unable to import win32security module. Windows ACLs
not supported by filesystem at log.backup/rdiff-backup-data/rdiff-backup.tmp.0
escape_dos_devices not required by filesystem at log.backup/rdiff-backup-data/rdiff-backup.tmp.0
-----------------------------------------------------------------
Detected abilities for destination (read/write) file system:
  Ownership changing                           On
  Hard linking                                 On
  fsync() directories                          On
  Directory inc permissions                    On
  High-bit permissions                         On
  Symlink permissions                          Off
  Extended filenames                           On
  Windows reserved filenames                   Off
  Access control lists                         On
  Extended attributes                          On
  Windows access control lists                 Off
  Case sensitivity                             On
  Escape DOS devices                           Off
  Escape trailing spaces                       Off
  Mac OS X style resource forks                Off
  Mac OS X Finder information                  Off
-----------------------------------------------------------------
Backup: must_escape_dos_devices = 0
Starting mirror /var/log to log.backup</pre>
<p>В то время как девятый уровень будет сообщать о каждом шаге:</p>
<pre>$ rdiff-backup -v 9 /var/log ~/log.backup
...
Tue Mar  6 04:50:07 2012  Processing changed file wtmp.1
Tue Mar  6 04:50:07 2012  Regular copying ('wtmp.1',) to log.backup/rdiff-backup.tmp.121
Tue Mar  6 04:50:07 2012  Writing file object to log.backup/rdiff-backup.tmp.121
Tue Mar  6 04:50:07 2012  Copying attributes from ('wtmp.1',) to log.backup/rdiff-backup.tmp.121
Tue Mar  6 04:50:07 2012  Setting time of log.backup/rdiff-backup.tmp.121 to 1330553626
Tue Mar  6 04:50:07 2012  Renaming log.backup/rdiff-backup.tmp.121 to log.backup/wtmp.1
Tue Mar  6 04:50:07 2012  Copying attributes from () to log.backup
Tue Mar  6 04:50:07 2012  Setting time of log.backup to 1330980760
Tue Mar  6 04:50:07 2012  Touching log.backup/rdiff-backup-data/extended_attributes.2012-03-06T04:50:07+02:00.snapshot
Tue Mar  6 04:50:07 2012  Touching log.backup/rdiff-backup-data/access_control_lists.2012-03-06T04:50:07+02:00.snapshot
Tue Mar  6 04:50:08 2012  Writing mirror marker log.backup/rdiff-backup-data/current_mirror.2012-03-06T04:50:07+02:00.data
Tue Mar  6 04:50:08 2012  Cleaning up
Tue Mar  6 04:50:08 2012  Touching log.backup/rdiff-backup-data/error_log.2012-03-06T04:50:07+02:00.data
...</pre>
<h3>Удалённое резервное копирование</h3>
<p>Этот тип копирования выполнить настолько же просто, как и локальное. Всё, что меняется&nbsp;&mdash; это формат указания источника/получателя. Также на удалённой системе должна быть установлена rdiff-backup и работать SSH-сервер. Например следующая команда:</p>
<pre>$ rdiff-backup -v 5 /var/log backup@my-server.com::/var/backups/log.host123</pre>
<ol>
<li>установит соединение с сервером my-server.com при помощи SSH;</li>
<li>запустит на сервере rdiff-backup в режиме <strong>--server</strong>;</li>
<li>выполнит передачу файлов с локальной системы серверу my-server.com в каталог /var/backups/log.host123</li>
</ol>
<p>То же самое будет работать и в обратном направлении, т. е., если вам необходимо выполнить копирование удалённых файлов в локальную систему, просто поменяйте местами источник с получателем в опциях утилиты:</p>
<pre>$ rdiff-backup -v 5 backup@my-server.com::/var/log /var/backups/logs-my-server.com</pre>
<h3>Получение информации о результатах копирования</h3>
<p>Обычно многословный вывод команд требуется в период отладки и написания сценариев, не более. Для ежедневного мониторинга результатов работы утилиты желательно иметь лишь краткую сводку. Для этого rdiff-backup предлагает отдельную опцию &#39;--print-statistics&#39;:</p>
<pre>$ rdiff-backup --print-statistics /var/log ~/log.backup
Warning: Access Control List file not found
--------------[ Session statistics ]--------------
StartTime 1331003360.00 (Tue Mar  6 05:09:20 2012)
EndTime 1331003385.71 (Tue Mar  6 05:09:45 2012)
ElapsedTime 25.71 (25.71 seconds)
SourceFiles 139
SourceFileSize 7006201 (6.68 MB)
MirrorFiles 339
MirrorFileSize 16991862 (16.2 MB)
NewFiles 65
NewFileSize 1504824 (1.44 MB)
DeletedFiles 265
DeletedFileSize 12116918 (11.6 MB)
ChangedFiles 74
ChangedSourceSize 5501377 (5.25 MB)
ChangedMirrorSize 4874944 (4.65 MB)
IncrementFiles 404
IncrementFileSize 2136990 (2.04 MB)
TotalDestinationSizeChange -7848671 (-7.49 MB)
Errors 0
--------------------------------------------------</pre>
<h3>Включение исключение файлов</h3>
<p>&laquo;Не все йогурты одинаково полезны&raquo;&nbsp;&mdash; гласит народная пословица. Это же касается и файлов при резервном копировании. Часто-густо в копируемых каталогах попадаются файлы, размер которых весьма немаленький, а смысла включать их в бэкап нет. Здесь у rdiff-backup (как, впрочем и у всех остальных утилит подобного рода) предусмотрены свои возможности. Используя опцию <strong>&#39;--exlude&#39;</strong>, вы можете исключать отдельные файлы и каталоги:</p>
<pre>$ rdiff-backup --exclude /proc / backup@my-server.com::/var/backups</pre>
<p>Эту опцию можно использовать сколько угодно раз:</p>
<pre>$ rdiff-backup --exclude /proc --exclude /mnt --exclude /tmp / backup@my-server.com::/var/backups</pre>
<p>Иногда проще указать то, что нужно скопировать, вместо того, что НЕ нужно. Следующая команда скопирует, например, <strong>/usr/local/bin</strong>, пропустив при этом <strong>/usr/bin</strong>:</p>
<pre>$ rdiff-backup --include /usr/local --exclude /usr / backup@my-server.com::/var/backups</pre>
<p>Обратите внимание, что при множественном использовании опций &#39;--include&#39; / &#39;--exclude&#39; их приоритет зависит от порядка появления в команде.</p>
<p>rdiff-backup позволяет использовать шаблоны подобные тем, которые используются в rsync:<strong> &#39;**&#39;</strong> эквивалентны любому пути, а <strong>&#39;*&#39;</strong>&nbsp;&mdash; любому пути без завершающего слеша. Так, например, следующая команда скопирует <strong>/usr/local</strong> и <strong>/var</strong>, но пропустит всё остальное:</p>
<pre>$ rdiff-backup --include /usr/local --include /var --exclude '**' / /backup</pre>
<p>Обратите внимание на кавычки. Они нужны, поскольку большинство оболочек обрабатывают звёздочки как спецсимволы, превращая их в маски.</p>
<p>Пример чуть посложнее:</p>
<pre>$ rdiff-backup --include '**txt' --exclude /usr/local/games --include /usr/local --exclude /usr --exclude /backup --exclude /proc / /backup</pre>
<p>Эта команда скопирует все файлы, имена которых заканчиваются суффиксом &#39;txt&#39;. Обратите внимание: будут скопированы также все txt-файлы также из каталогов, /usr/local и /backup, поскольку первый --include имеет более высокий приоритет.</p>
<p>Вообще, утилита rdif--backup предлагает довольно богатый набор опция для фильтрации файлов, перечислять который в полном объёме нет смысла, поскольку всё &laquo;уже украдено до нас&raquo; в <a href="http://www.nongnu.org/rdiff-backup/rdiff-backup.1.html">man-странице</a> приложения. Тем, кто ещё туда не заглядывал, скажу что вы можете фильтровать файлы на основе регулярных выражений, типе самих файлов (символически/жесткие ссылки, сокеты, устройства, FIFO и т. п.), а также на основе файловых списков включений/исключений, при чём сами файловые списки можно передавать через stdin.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/' addthis:title='Резервное копирование при помощи rdiff-backup' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/rezervnoe-kopirovanie-pri-pomoshhi-rdiff-backup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Как получить информацию об оперативной памяти в Linux</title>
		<link>http://www.ashep.org/2012/kak-poluchit-informaciyu-ob-operativnoj-pamyati-v-linux/</link>
		<comments>http://www.ashep.org/2012/kak-poluchit-informaciyu-ob-operativnoj-pamyati-v-linux/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 09:41:20 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Железо]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[dmidecode]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[htop]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[ОЗУ]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2771</guid>
		<description><![CDATA[Продолжая линию предыдущей заметки, сегодня вашему вниманию предлагаю консольный способ получения информации об ОЗУ в Linux. Получение информации об использовании памяти Думаю, всем известна программа free, но на всякий случай, для тех, кто ещё не в курсе. При помощи команды free можно получить информацию об используемой/свободной памяти в вашей системе, в том числе и swap: [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/kak-poluchit-informaciyu-ob-operativnoj-pamyati-v-linux/' addthis:title='Как получить информацию об оперативной памяти в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Продолжая линию <a href="http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/">предыдущей заметки</a>, сегодня вашему вниманию предлагаю консольный способ получения информации об ОЗУ в Linux.</p>
<img class="aligncenter size-full wp-image-2773" title="RAM" src="http://www.ashep.org/wp-content/uploads/2012/03/RAM.png" alt="" width="256" height="180" /><br />
<span id="more-2771"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Получение информации об использовании памяти</h3>
<p>Думаю, всем известна программа <a href="http://linux.die.net/man/1/free">free</a>, но на всякий случай, для тех, кто ещё не в курсе. При помощи команды <strong>free</strong> можно получить информацию об используемой/свободной памяти в вашей системе, в том числе и swap:</p>
<pre>$ free
             total       used       free     shared    buffers     cached
Mem:       2062064    1493344     568720          0      82672     526624
-/+ buffers/cache:     884048    1178016
Swap:      1951740      59396    1892344</pre>
<p>Или же более человечный вариант вывода:</p>
<pre>$ free -m
             total       used       free     shared    buffers     cached
Mem:          2013       1669        343          0         86        624
-/+ buffers/cache:        959       1053
Swap:         1905         58       1847</pre>
<p>Ну и конечно же, стоит упомянуть традиционные <a href="http://linux.die.net/man/1/top">top</a> и <a href="http://htop.sourceforge.net/">htop</a>:</p>
<p><img class="aligncenter size-thumbnail wp-image-2774" title="top" src="http://www.ashep.org/wp-content/uploads/2012/03/top-600x252.png" alt="" width="600" height="252" /></p>
<p><img class="aligncenter size-thumbnail wp-image-2775" title="htop" src="http://www.ashep.org/wp-content/uploads/2012/03/htop-600x252.png" alt="" width="600" height="252" /></p>
<h3>Получение информации об аппаратной части</h3>
<p>Если вам необходимо получить информацию об установленных платах, не открывая корпус компьютера, можно воспользоваться утилитой <a href="http://www.nongnu.org/dmidecode/">dmidecode</a>, предназначенной для извлечения различного рода данных об установленном железе. Чтобы получить данные об установленной памяти, необходимо попросить <strong>dmidecode</strong> вывести информацию только 17 типа DMI:</p>
<pre># dmidecode --type 17
dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x002D, DMI type 17, 27 bytes
Memory Device
    Array Handle: 0x002B
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 72 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM0
    Bank Locator: BANK0
    Type: DDR2
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer0
    Serial Number: SerNum0
    Asset Tag: AssetTagNum0
    Part Number: PartNum0
Handle 0x002F, DMI type 17, 27 bytes
Memory Device
    Array Handle: 0x002B
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 72 bits
    Size: 1024 MB
    Form Factor: DIMM
    Set: None
    Locator: DIMM1
    Bank Locator: BANK1
    Type: DDR2
    Type Detail: Synchronous
    Speed: Unknown
    Manufacturer: Manufacturer1
    Serial Number: SerNum1
    Asset Tag: AssetTagNum1
    Part Number: PartNum1
...</pre>
<p>Информацию о контроллере памяти можно получить, указав типы DMI 5 и 6:</p>
<pre># dmidecode --type 5,6
dmidecode 2.9
SMBIOS 2.5 present.

Handle 0x0008, DMI type 5, 24 bytes
Memory Controller Information
    Error Detecting Method: 64-bit ECC
    Error Correcting Capabilities:
        None
    Supported Interleave: One-way Interleave
    Current Interleave: One-way Interleave
    Maximum Memory Module Size: 1024 MB
    Maximum Total Memory Size: 4096 MB
    Supported Speeds:
        70 ns
        60 ns
        50 ns
    Supported Memory Types:
        DIMM
        SDRAM
    Memory Module Voltage: 3.3 V
    Associated Memory Slots: 4
        0x0009
        0x000A
        0x000B
        0x000C
    Enabled Error Correcting Capabilities:
        None

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM0
    Bank Connections: 0 5
    Current Speed: 160 ns
    Type: ECC DIMM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK
Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
    Socket Designation: DIMM1
    Bank Connections: 0 5
    Current Speed: 162 ns
    Type: ECC DIMM
    Installed Size: 1024 MB (Single-bank Connection)
    Enabled Size: 1024 MB (Single-bank Connection)
    Error Status: OK
...</pre>
<p>А указав тип DMI 16, можно получить краткую информацию о пределах возможностей подсистемы управления памятью, установленной на материнской плате:</p>
<pre># dmidecode --type 16
dmidecode 2.9
SMBIOS 2.5 present.
Handle 0x002B, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 8 GB
    Error Information Handle: Not Provided
    Number Of Devices: 4</pre>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/kak-poluchit-informaciyu-ob-operativnoj-pamyati-v-linux/' addthis:title='Как получить информацию об оперативной памяти в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/kak-poluchit-informaciyu-ob-operativnoj-pamyati-v-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как получить информацию о жёстких дисках в Linux</title>
		<link>http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/</link>
		<comments>http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 11:26:02 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Железо]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[hdparm]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[lshw]]></category>
		<category><![CDATA[SMART]]></category>
		<category><![CDATA[smartctl]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2762</guid>
		<description><![CDATA[Возникала ли у вас хоть раз необходимость получить информацию о жёстких дисках, установленных в системе, не проникая внутрь  корпуса компьютера? Тем, кто сталкивался с такой необходимостью, но так и не нашёл решения, а также тем, кому в будущем это может пригодиться, посвящается сегодняшняя заметка. Для Linux существует несколько утилит, при помощи которых можно получить интересующую [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/' addthis:title='Как получить информацию о жёстких дисках в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Возникала ли у вас хоть раз необходимость получить информацию о жёстких дисках, установленных в системе, не проникая внутрь  корпуса компьютера? Тем, кто сталкивался с такой необходимостью, но так и не нашёл решения, а также тем, кому в будущем это может пригодиться, посвящается сегодняшняя заметка.</p>
<img class="aligncenter size-full wp-image-2766" title="Диск" src="http://www.ashep.org/wp-content/uploads/2012/02/Toshiba-MKxx61GSYG-self-erasing-hard-drive.jpg" alt="" width="410" height="294" /><br />
<span id="more-2762"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Для Linux существует несколько утилит, при помощи которых можно получить интересующую вас информацию о жёстких дисках, установленных в системе. В первую очередь я рекомендую вам  <strong>hdparm</strong>, утилиту с интерфейсом командной строки, умеющую среди всего прочего извлекать огромное количество разнообразной информацию из  подсистемы драйверов дисков Linux.</p>
<h3>hdparm</h3>
<p>Эта утилита устанавливается по умолчанию в большинстве современных Linux-дистрибутивов и требует root-привилегий для работы. Чтобы получить информацию об устройстве, откройте терминал и запустите <strong>hdparm</strong> с ключом <strong>-I</strong>, передав путь к интересующему вас устройству:</p>
<pre># hdparm -I /dev/sda
ATA device, with non-removable media
	Model Number:       SAMSUNG HD321KJ
	Serial Number:      S0MQJ9DQ103691
	Firmware Revision:  CP100-12
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5
Standards:
	Used: ATA-8-ACS revision 3b
	Supported: 8 7 6 5
Configuration:
	Logical		max	current
	cylinders	16383	16383
	heads		16	16
	sectors/track	63	63
	--
	CHS current addressable sectors:   16514064
	LBA    user addressable sectors:  268435455
	LBA48  user addressable sectors:  625142448
	Logical/Physical Sector size:           512 bytes
	device size with M = 1024*1024:      305245 MBytes
	device size with M = 1000*1000:      320072 MBytes (320 GB)
	cache/buffer size  = 16384 KBytes (type=DualPortCache)
Capabilities:
	LBA, IORDY(can be disabled)
	Queue depth: 32
	Standby timer values: spec'd by Standard, no device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	Recommended acoustic management value: 254, current value: 0
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 udma7
	     Cycle time: min=120ns recommended=120ns
	PIO: pio0 pio1 pio2 pio3 pio4
	     Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
	Enabled	Supported:
	    	SMART feature set
	    	Security Mode feature set
	   *	Power Management feature set
	   *	Write cache
	   *	Look-ahead
	   *	Host Protected Area feature set
	   *	WRITE_BUFFER command
	   *	READ_BUFFER command
	   *	NOP cmd
	   *	DOWNLOAD_MICROCODE
	    	SET_MAX security extension
	    	Automatic Acoustic Management feature set
	   *	48-bit Address feature set
	   *	Device Configuration Overlay feature set
	   *	Mandatory FLUSH_CACHE
	   *	FLUSH_CACHE_EXT
	   *	SMART error logging
	   *	SMART self-test
	   *	General Purpose Logging feature set
	   *	64-bit World wide name
	   *	WRITE_UNCORRECTABLE_EXT command
	   *	Segmented DOWNLOAD_MICROCODE
	   *	Gen1 signaling speed (1.5Gb/s)
	   *	Gen2 signaling speed (3.0Gb/s)
	   *	Native Command Queueing (NCQ)
	   *	Host-initiated interface power management
	   *	Phy event counters
	    	DMA Setup Auto-Activate optimization
	    	Device-initiated interface power management
	   *	Software settings preservation
	   *	SMART Command Transport (SCT) feature set
	   *	SCT Long Sector Access (AC1)
	   *	SCT LBA Segment Access (AC2)
	   *	SCT Error Recovery Control (AC3)
	   *	SCT Features Control (AC4)
	   *	SCT Data Tables (AC5)
Security:
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
		frozen
	not	expired: security count
		supported: enhanced erase
	112min for SECURITY ERASE UNIT. 112min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50000f009b103691
	NAA		: 5
	IEEE OUI	: 0000f0
	Unique ID	: 09b103691
Checksum: correct</pre>
<h3>lshw</h3>
<p>Утилита <strong>lshw</strong> предназначена для получения информации об оборудовании (не только дисковом), установленном в системе, и умеет выводить полученные данные в приятном глазу TXT-формате, HTML или XML. В современных Linux-дистрибутивах программа по умолчанию не всегда устанавливается, так что перед её использованием установите её, используя штатный менеджер пакетов.</p>
<p>Чтобы при помощи <strong>lshw</strong> получить информацию о дисковых устройствах, выполните следующую команду:</p>
<pre># lshw -class disk -class storage
  *-storage               
       description: SATA controller
       product: MCP65 AHCI Controller
       vendor: nVidia Corporation
       physical id: a
       bus info: pci@0000:00:0a.0
       logical name: scsi0
       logical name: scsi1
       version: a3
       width: 32 bits
       clock: 66MHz
       capabilities: storage pm msi ht ahci_1.0 bus_master cap_list emulated
       configuration: driver=ahci latency=0 maxlatency=1 mingnt=3
       resources: irq:44 ioport:c080(size=8) ioport:c000(size=4) ioport:bc00(size=8) ioport:b880(size=4) ioport:b800(size=16) memory:f9efc000-f9efdfff
     *-disk
          description: ATA Disk
          product: SAMSUNG HD321KJ
          physical id: 0
          bus info: scsi@0:0.0.0
          logical name: /dev/sda
          version: CP10
          serial: S0MQJ9DQ103691
          size: 298GiB (320GB)
          capabilities: partitioned partitioned:dos
          configuration: ansiversion=5 signature=ea89ea89
     *-cdrom
          description: DVD-RAM writer
          product: DVD RW AD-7200S
          vendor: Optiarc
          physical id: 1
          bus info: scsi@1:0.0.0
          logical name: /dev/cdrom
          logical name: /dev/cdrw
          logical name: /dev/dvd
          logical name: /dev/dvdrw
          logical name: /dev/scd0
          logical name: /dev/sr0
          version: 1.04
          serial: [
          capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram
          configuration: ansiversion=5 status=ready
        *-medium
             physical id: 0
             logical name: /dev/cdrom</pre>
<p>Если вас интересует лишь информация об установленных дисках в системе, вы можете воспользоваться следующей командой:</p>
<pre># lshw -short -C disk
H/W path    Device      Class       Description
===============================================
/0/a/0      /dev/sda    disk        320GB SAMSUNG HD321KJ
/0/a/1      /dev/cdrom  disk        DVD RW AD-7200S</pre>
<h3> GNOME Disk Utility</h3>
<p>Пользователи GNOME могут обратиться за помощью к специализированной GUI-утилите, позволяющей кроме получения информации об установленных устройствах, оперировать дисковыми разделами и выполнять ряд тестов устройств. Запустить утилиту можно из меню GNOME или из командной строки:</p>
<pre>$ palimpsest</pre>
<p>Пример информации о диске:</p>
<p style="text-align: center;"><a href="http://www.ashep.org/wp-content/uploads/2012/02/linux_disk_utility-full.png"><img class="aligncenter size-thumbnail wp-image-2764" title="GNOME Disk Utility" src="http://www.ashep.org/wp-content/uploads/2012/02/linux_disk_utility-full-600x336.png" alt="" width="600" height="336" /></a></p>
<p>Пример вывода информации SMART:</p>
<h3><a href="http://www.ashep.org/wp-content/uploads/2012/02/smart-disk-data.png"><img class="aligncenter size-full wp-image-2765" title="GNOME Disk Utility" src="http://www.ashep.org/wp-content/uploads/2012/02/smart-disk-data.png" alt="" width="598" height="933" /></a>smartctl</h3>
<p>При помощи утилиты <a href="http://www.ashep.org/tag/smartctl">smartctl</a> вы можете получить подробную информацию о состоянии здоровья ваших устройств, поддерживающих SMART. Пример вывода информации о SATA-устройстве:</p>
<pre># smartctl -d ata -a -i /dev/sda
smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
=== START OF INFORMATION SECTION ===
Device Model:     TOSHIBA MK5061GSYF
Serial Number:    71XXXYYZ
Firmware Version: MF000D
User Capacity:    500,107,862,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Fri Feb 24 05:27:29 2012 IST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status:  (0x00)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Disabled.
Self-test execution status:      (  36)	The self-test routine was interrupted
					by the host with a hard or soft reset.
Total time to complete Offline
data collection: 		 ( 120) seconds.
Offline data collection
capabilities: 			 (0x5b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					No Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 136) minutes.
SCT capabilities: 	       (0x003d)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.
SMART Attributes Data Structure revision number: 128
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   050    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1650
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   099   099   000    Old_age   Always       -       34237
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       120
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       42
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       23
193 Load_Cycle_Count        0x0032   099   099   000    Old_age   Always       -       13971
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       39 (Lifetime Min/Max 21/48)
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       3536073
200 Multi_Zone_Error_Rate   0x0032   100   100   000    Old_age   Always       -       9143982
240 Head_Flying_Hours       0x0032   099   099   000    Old_age   Always       -       28415
241 Total_LBAs_Written      0x0032   100   100   000    Old_age   Always       -       741418060
242 Total_LBAs_Read         0x0032   100   100   000    Old_age   Always       -       450708673
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Interrupted (host reset)      40%       343         -
# 2  Short offline       Completed without error       00%       186         -
# 3  Short offline       Completed without error       00%        71         -
# 4  Short offline       Completed without error       00%         0         -
# 5  Short offline       Completed without error       00%         0         -
SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.</pre>
<p style="text-align: right;">Источник: <a href="http://www.cyberciti.biz/faq/find-hard-disk-hardware-specs-on-linux/">CyberCiti.Biz</a></p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/' addthis:title='Как получить информацию о жёстких дисках в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/kak-poluchit-informaciyu-o-zhyostkix-diskax-v-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>eCryptfs и шифрование домашнего каталога в Linux</title>
		<link>http://www.ashep.org/2012/ecryptfs-i-shifrovanie-domashnego-kataloga-v-linux/</link>
		<comments>http://www.ashep.org/2012/ecryptfs-i-shifrovanie-domashnego-kataloga-v-linux/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 09:01:14 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[eCryptFS]]></category>
		<category><![CDATA[mount]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[шифрование]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2666</guid>
		<description><![CDATA[Многие обращали внимание на предложение Ubuntu во время установки зашифровать домашний каталог пользователя. Я до недавних пор всегда его игнорировал из соображений &#171;хрен знает, что они там выдумали, разбираться неохота&#187;, но однажды любопытство пересилило и нашлось свободное для познания сей тайны время. Всех, кому интересно, приглашаю под кат. Лучший способ научиться чему-то&#160;&#8212; это сделать самостоятельно. [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/ecryptfs-i-shifrovanie-domashnego-kataloga-v-linux/' addthis:title='eCryptfs и шифрование домашнего каталога в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Многие обращали внимание на предложение Ubuntu во время установки зашифровать домашний каталог пользователя. Я до недавних пор всегда его игнорировал из соображений &laquo;хрен знает, что они там выдумали, разбираться неохота&raquo;, но однажды любопытство пересилило и нашлось свободное для познания сей тайны время. Всех, кому интересно, приглашаю под кат.</p>
<img class="size-full wp-image-2667 aligncenter" title="Шифрование домашнего каталога в Ubuntu" src="http://www.ashep.org/wp-content/uploads/2012/02/ecryptfs-ubuntu-01.jpg" alt="" width="600" height="451" /><br />
<span id="more-2666"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Лучший способ научиться чему-то&nbsp;&mdash; это сделать самостоятельно. В качестве подопытного кролика было решено взять <strong>Debian 6.0.3</strong>, оказавшуюся под рукой и не шифровавшей домашние каталоги пользователей. На ней весь процесс и производился. Если у вас в качестве ОС используется нечто совсем далёкое, гарантий, что процесс настройки будет таким же&nbsp;&mdash; никаких.</p>
<h3>Как это работает</h3>
<p>Для организации защиты ваших персональных данных в Ubuntu разработчики предпочли <a href="https://launchpad.net/ecryptfs">eCryptfs</a>&nbsp;&mdash; файловую систему, работающую &laquo;поверх&raquo; любой другой обычной ФС и прозрачно шифрующую/дешифрующую содержимое файлов. Криптографические метаданные eCryptfs хранит в заголовках каждого файла, таким образом вы можете без проблем переносить любой файл между различными системами. Всё это счастье реализовано на уровне ядра Linux, обеспечивая хороший уровень производительности по сравнению с FUSE-шифрованием (например, <a href="http://www.ashep.org/tag/encfs/">EncFS</a>).</p>
<h3>Установка</h3>
<p>Всё, что нужно для работы eCryptfs, во всех современных Linux-дистрибутивах имеются по умолчанию &laquo;из коробки&raquo;. Если же ядро Linux вы собирали самостоятельно, то удостоверьтесь, что в вашей сборке присутствует необходимый модуль:</p>
<pre># modprobe ecryptfs &amp;&amp; lsmod | grep ecryptfs</pre>
<p>Далее, для работы с eCryptfs нам понадобятся userspace-инструменты, которые в Debain/Ubuntu легко устанавливаются из пакета:</p>
<pre># apt-get install ecryptfs-utils</pre>
<h3>Монтирование eCryptfs</h3>
<p>Чтобы лучше понять и увидеть на практике, как работает eCryptfs, смонтируем какой-нибудь каталог и посмотрим, что происходит в реальности. Для начала создадим пустой каталог, который будем шифровать:</p>
<pre># mkdir /mnt/ecryptfs-demo</pre>
<p>Теперь смонтируем созданный каталог используя eCryptfs:</p>
<p># mount -t ecryptfs /mnt/ecryptfs-demo/ /mnt/ecryptfs-demo/</p>
<p>Обратите внимание, что исходным и целевым каталогом команде <strong>mount</strong> указан один и тот же каталог. Это несколько &laquo;нетрадиционно&raquo; для операции монтирования, однако вполне допустимо и удобно. Если вас это запутывает, вы можете использовать разные точки с более осмысленными именами, вроде:</p>
<p># mount -t ecryptfs /mnt/plaintext/ /mnt/encrypted/</p>
<p>После ввода команды вам необходимо ввести пароль для ключа шифрования:</p>
<pre>Passphrase:</pre>
<p>Введите пароль, не забывая о том, что<strong> его утеря будет означать невозможность получения данных!</strong> После ввода пароля вам будет предложено выбрать алгоритм шифрования, с по-умолчанию выбранным <a href="http://ru.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>:</p>
<pre>Select cipher:
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 2) blowfish: blocksize = 16; min keysize = 16; max keysize = 56 (not loaded)
 3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
 4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]:</pre>
<p>Далее вам необходимо выбрать размер ключа:</p>
<pre>Select key bytes:
 1) 16
 2) 32
 3) 24
Selection [16]:</pre>
<p>Значением следующей опции вы разрешаете или запрещаете доступ к файлам, которые не были зашифрованы при помощи eCrypfs:</p>
<pre>Enable plaintext passthrough (y/n) [n]:</pre>
<p>Шифровать или нет имена файлов:</p>
<pre>Enable filename encryption (y/n) [n]:</pre>
<p>Далее вы увидите сводку выбранных опций (их можно использовать в опциях монтирования в будущем):</p>
<pre>Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=8f9887d2339cafb0</pre>
<p>Если вы впервые монтируете и/или сигнатура этого монтирования не сохранена в кэше, то вас вежливо предупредят о том, что вы могли ввести пароль неверно:</p>
<pre>WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.</pre>
<p>Если всё ок, можно подтверждать монтирование:</p>
<pre>Would you like to proceed with the mount (yes/no)? : yes</pre>
<p>Чтобы избежать в будущем появления вышеуказанного предупреждения, вы можете добавить сигнатуру монтирования eCryptfs в файл:</p>
<pre>Would you like to append sig [8f9887d2339cafb0] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : yes</pre>
<p>Если всё прошло успешно, вы получите соответствующее сообщение:</p>
<pre>Successfully appended new sig to user sig cache file
Mounted eCryptfs</pre>
<p>Теперь скопируем что-нибудь в смонтированный каталог:</p>
<pre># cp /etc/passwd /mnt/ecryptfs-demo/</pre>
<p>Посмотрим его содержимое и размер:</p>
<pre># cat /mnt/ecryptfs-demo/passwd
...

# file /mnt/ecryptfs-demo/passwd
/mnt/ecryptfs-demo/passwd: ASCII text
# ls -l /mnt/ecryptfs-demo/passwd
-rw-r--r-- 1 root root 911 Feb  7 01:18 /mnt/ecryptfs-demo/passwd</pre>
<p>Теперь отмонтируем eCryptfs и посмотри, как изменился наш файл:</p>
<pre># umount /mnt/ecryptfs-demo/

# file /mnt/ecryptfs-demo/passwd
/mnt/ecryptfs-demo/passwd: data
# ls -l /mnt/ecryptfs-demo/passwd
-rw-r--r-- 1 root root 12288 Feb  7 01:18 /mnt/ecryptfs-demo/passwd</pre>
<p>Заглянув же вовнутрь файла, вы увидите там лишь двоичные данные.</p>
<h3>pam_ecryptfs</h3>
<p>Ещё одной довольно интересной и полезной штукой, идущей в поставке eCryptfs, является PAM-модуль <strong>pam_ecryptfs</strong>. Вызывается этот модуль во время логина пользователя и работает следующим образом. Если в домашнем каталоге обнаруживается файл <strong>~/.ecryptfs/wrapped-passphrase</strong>, а также файл <strong>~/.ecryptfs/auto-mount</strong> то модуль pam_ecryptfs расшифровывает содержимое файла <strong>~/.ecryptfs/wrapped-passphrase</strong>, используя пароль пользователя. Далее расшифрованное содержимое используется в качестве пароля при монтировании каталога <strong>~/.Private</strong> в точку <strong>~/Private</strong>. Таким образом, пользователю не нужно дополнительно монтировать каталог с личными зашифрованными данными, всё происходит автоматически. Для того, чтобы модуль работал, он должен быть соответствующим образом объявлен в <strong>/etc/pam.d/common-auth</strong>:</p>
<pre>auth    required        pam_ecryptfs.so unwrap</pre>
<p>и в /etc/pam.d/common-session:</p>
<pre>session optional        pam_ecryptfs.so unwrap</pre>
<h3>Зашифрованный персональный каталог Private</h3>
<p>Чтобы пользователям было сухо и комфортно при самостоятельном создании Private-каталогов, разработчики включили в поставку eCryptfs специальный shell-скрипт <strong>ecryptfs-setup-private</strong>, который делает всю работу по подготовке персонального шифрованного хранилища:</p>
<ol>
<li>создаёт каталоги  <strong>~/.Private</strong> и <strong>~/Private</strong>;</li>
<li>шифрует пароль монтирования и сохраняет его в <strong>~/.ecryptfs/wrapped-passphrase</strong>;</li>
<li>позволяет настроить опции автомонтирования/размонтирования и т. п.</li>
</ol>
<p>Работает сценарий очень просто и при запуске в режиме &laquo;по умолчанию&raquo; не требует никаких дополнительных параметров:</p>
<pre>$ ecryptfs-setup-private</pre>
<p>На следующий запрос введите ваш пароль, который используете при аутентификации в системе:</p>
<pre>Enter your login passphrase:</pre>
<p>После вам будет предложено ввести пароль, который будет использоваться при монтировании. Если не заполнять это поле, то пароль будет сгенерирован автоматически:</p>
<pre>Enter your mount passphrase [leave blank to generate one]:</pre>
<p>Очередное напоминание для забывчивых:</p>
<pre>************************************************************************
YOU SHOULD RECORD YOUR MOUNT PASSPHRASE AND STORE IT IN A SAFE LOCATION.
  ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
THIS WILL BE REQUIRED IF YOU NEED TO RECOVER YOUR DATA AT A LATER TIME.
************************************************************************</pre>
<p>создание файлов, каталогов и тестирование:</p>
<pre>Done configuring.
Testing mount/write/umount/read...
Testing succeeded.</pre>
<p>И, наконец, сообщение о том, что теперь достаточно перевойти в систему, чтобы начать пользоваться благами цивилизации:</p>
<pre>Logout, and log back in to begin using your encrypted directory.</pre>
<p>Заново авторизуйтесь с системе и посмотрите, смонтировался ли каталог <strong>~/.Private</strong>:</p>
<pre>$ mount | grep Private
/home/ashep/.Private on /home/ashep/Private type ecryptfs (ecryptfs_sig=1ed127ee6eb43a05,ecryptfs_fnek_sig=2f5ceedfd83a052d,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)</pre>
<p>Всё отлично, самое время проверить работоспособность нашего нового хранилища:</p>
<pre>$ echo "Hello, world" &gt; ~/Private/hello.txt
$ ls -l ~/.Private/
total 12
-rw-r--r-- 1 ashep ashep 12288 Feb  7 03:14 ECRYPTFS_FNEK_ENCRYPTED.FWYjLCvTq1c39ETk7I99JlZPttqOZToCEDxsV7hasxemXl1ISz2J-43cKk--</pre>
<p>Теперь, когда вы выйдите из системы, модуль pam_ecryptfs автоматически размонтирует точку <strong>~/Private</strong>, таким образом оставив ваши данные в зашифрованном каталоге <strong>~/.Private</strong>. Если вы не хотите, чтобы каталог <strong>~/Private</strong> монтировался и/или размонтировался автоматически, удалите соответственно файл <strong>~/.ecryptfs/auto-mount</strong> и/или <strong>~/.ecryptfs/auto-umount</strong>.</p>
<p>Также имейте ввиду, что сценарий <strong>ecryptfs-setup-private</strong> принимает ряд опций, при помощи которых вы можете управляет его поведением:</p>
<pre>$ ecryptfs-setup-private --help

Usage:

/usr/bin/ecryptfs-setup-private [-f|--force] [-w|--wrapping] [--nopwcheck] [-n|--no-fnek]
  [-u|--username USER] [-l|--loginpass LOGINPASS]
  [-m|--mountpass MOUNTPASS]

 -f, --force      Force overwriting of an existing setup
 -w, --wrapping   Use an independent wrapping passphrase,
                  different from the login passphrase
 -n, --no-fnek    Do not encrypt filenames; If this flag is
                  omitted, and the kernel supports filename
                  encryption, then filenames will be encrypted
 -u, --username   Username for encrypted private mountpoint,
                  defaults to yourself
 -l, --loginpass  Login/Wrapping passphrase for USER,
                  used to wrap MOUNTPASS
 --nopwcheck      Do not check the validity of the specified
                  login password (useful for LDAP user accounts)
 --noautomount    Setup this user such that the encrypted private
                  directory is not automatically mounted on login
 --noautoumount   Setup this user such that the encrypted private
                  directory is not automatically unmounted at
                  logout
 -m, --mountpass  Passphrase for mounting the ecryptfs directory,
                  defaults to randomly generated 16 bytes
 -b, --bootstrap  Bootstrap a new user's entire home directory
                  Generates a random mount passphrase, which
          will be wrapped when the new login passphrase
          is set. SHOULD ONLY BE CALLED FROM 'adduser'.
 --undo           Provide instructions on how to undo an
                  encrypted private setup
   Be sure to properly escape your parameters according to your
   shell's special character nuances, and also surround the
   parameters by double quotes, if necessary.</pre>
<h3>Полное шифрование домашнего каталога</h3>
<p>Идея хранения критически-важных данных в отдельном каталоге очень даже недурна собой, но не лишена очевидного недостатка. А именно: вы обязаны постоянно выбирать, что нужно шифровать, а что не нужно. Ну, или хранить вообще всё в Private-каталоге, что, мягко-говоря, не очень удобно. Вместо того, чтобы выделять отдельный каталог, не лучше ли зашифровать вообще весь домашний каталог? Именно это и предлагает вам Ubuntu при установке, и именно eCryptfs она для этого использует!</p>
<p>Если вы при установке выбрали опцию, показанную на скриншоте в начале статьи, то вы уже являетесь счастливым защищённым от врага пользователем. Если же это не так, но вам очень хочется спрятать от чужих глаз свои данные в случае чего и вы уже поняли, что eCryptfs&nbsp;&mdash; это именно то, что вам нужно для этого, то нет проблем!</p>
<p>Основная загвоздка при полном шифровании домашнего каталога состоит в том, что необходимо &laquo;вынести&raquo; каталог с зашифрованными данными за пределы точки монтирования. Разработчики Ubuntu решили проблему очень просто:</p>
<pre># ls -l /home/ashep/.Private
lrwxrwxrwx 1 ashep ashep 30 2011-12-07 04:44 /home/ashep/.Private -&gt; /home/.ecryptfs/ashep/.Private</pre>
<p>То есть, в домашнем каталоге находится лишь символическая ссылка, следуя которой, eCryptfs монтирует нужный каталог. При этом, точка монтирования переопределена в файле <strong>~/.ecryptfs/Private.mnt</strong> и указывает на домашний каталог пользователя, т. е., в данном случае, на <strong>/home/ashep</strong>. Гениально и просто!</p>
<p>Чтобы избавить вас от необходимости перемещать файлы и настраивать вручную все пути и символические ссылки, разработчики предлагают shell-сценарий <strong>ecryptfs-migrate-home</strong>, который проделает всю &laquo;грязную&raquo; работу за вас. Также разработчики предупреждают о том, что этот сценарий может сделать ваши данные недоступными, если вдруг что-то пойдёт не так, <strong>поэтому обязательно сделайте <a href="http://www.ashep.org/tag/backup/">резервную копию</a> перед тем, как будете запускать скрипт!</strong> Также перед запуском убедитесь, что в системе установлены утилиты <a href="http://www.ashep.org/tag/rsync/"><strong>rsync</strong></a> и <strong>lsof</strong>, а также в том, что на разделе, где находится <strong>/home</strong>, имеется достаточно свободного места<strong>.<br />
</strong></p>
<p>Сценарий необходимо запускать от root, передав в качестве параметра логин пользователя, который &laquo;мигрирует&raquo;. Пользователь не должен находится в системе, а также от его имени не должно быть запущено ни одного процесса.</p>
<pre># ecryptfs-migrate-home -u ashep</pre>
<pre>INFO:  Checking disk space, this may take a few moments.  Please be patient.
INFO:  Checking for open files in /home/ashep

************************************************************************
YOU SHOULD RECORD YOUR MOUNT PASSPHRASE AND STORE IT IN A SAFE LOCATION.
  ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
THIS WILL BE REQUIRED IF YOU NEED TO RECOVER YOUR DATA AT A LATER TIME.
************************************************************************

Done configuring.

INFO:  Encrypted home has been set up, encrypting files now...this may take a while.

========================================================================
Some Important Notes!

 1. The file encryption appears to have completed successfully, however,
    ashep MUST LOGIN IMMEDIATELY, _BEFORE_THE_NEXT_REBOOT_,
    TO COMPLETE THE MIGRATION!!!

 2. If ashep can log in and read and write their files, then the migration is complete,
    and you should remove /home/ashep.81yFQbNJ.
    Otherwise, restore /home/ashep.81yFQbNJ back to /home/ashep.

 3. ashep should also run 'ecryptfs-unwrap-passphrase' and record
    their randomly generated mount passphrase as soon as possible.
 4. To ensure the integrity of all encrypted data on this system, you
    should also encrypted swap space with 'ecryptfs-setup-swap'.
========================================================================</pre>
<p>Если всё пройдёт успешно, то, как требует сценарий, <strong>мигрировавший пользователь должен войти в систему до перезагрузки</strong>. Также обратите внимание, что скрипт оставляет копию незашифрованных данных в отдельном каталоге (в приведённом примере это <strong>/home/ashep.81yFQbNJ</strong>), который необходимо удалить после того, как пользователь определит, что всё прошло успешно.</p>
<p>Теперь, когда мигрировавший пользователь войдёт в систему, его домашний каталог будет смонтирован следующим образом:</p>
<pre>$ mount | grep Private
/home/ashep/.Private on /home/ashep type ecryptfs (ecryptfs_sig=d8324d90c49de223,ecryptfs_fnek_sig=c4c68e3df79abc0a,ecryptfs_cipher=aes,ecryptfs_key_bytes=16)</pre>
<p>при этом <strong>~/.Private</strong> является символической ссылкой на каталог за пределами домашней папки:</p>
<pre>$ ls -l /home/ashep/.Private
lrwxrwxrwx 1 ashep ashep 30 Feb  7 03:48 /home/ashep/.Private -&gt; /home/.ecryptfs/ashep/.Private</pre>
<hr />
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/ecryptfs-i-shifrovanie-domashnego-kataloga-v-linux/' addthis:title='eCryptfs и шифрование домашнего каталога в Linux' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/ecryptfs-i-shifrovanie-domashnego-kataloga-v-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Grub2: запоминание последней загруженной ОС</title>
		<link>http://www.ashep.org/2012/grub2-zapominanie-poslednej-zagruzhennoj-os/</link>
		<comments>http://www.ashep.org/2012/grub2-zapominanie-poslednej-zagruzhennoj-os/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 03:30:29 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[Grub2]]></category>
		<category><![CDATA[загрузка]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2648</guid>
		<description><![CDATA[У меня, как думаю, и у многих читателей, в компьютере установлено более одной ОС. Специфика моей работы такова, что какой-то период времени я чаще всего использую только одну ОС. По прошествии некоторого времени я &#171;переключаюсь&#187; на использование другой ОС, опять-таки, лишь на какой-то промежуток времени. И так далее. Основное неудобство, которое мне доставляла такая схема [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/grub2-zapominanie-poslednej-zagruzhennoj-os/' addthis:title='Grub2: запоминание последней загруженной ОС' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>У меня, как думаю, и у многих читателей, в компьютере установлено более одной ОС. Специфика моей работы такова, что какой-то период времени я чаще всего использую только одну ОС. По прошествии некоторого времени я &laquo;переключаюсь&raquo; на использование другой ОС, опять-таки, лишь на какой-то промежуток времени. И так далее. Основное неудобство, которое мне доставляла такая схема работы, это необходимость выбирать нужную ОС в меню <strong>Grub</strong> при загрузке. Иными словами, мне было нужно, чтобы загрузчик помнил, какую ОС последней я использовал, и автоматически загружал её, если я не выберу что-либо другое в меню загрузки за отведённое время. Решение быстрое и простое.</p>
<img class="size-full wp-image-2662 aligncenter" title="OS choice" src="http://www.ashep.org/wp-content/uploads/2012/02/grub-savedefault.png" alt="" width="250" height="233" /><br />
<span id="more-2648"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Всё, что нужно для того, чтобы осуществить задуманное, это добавить переменную <strong>GRUB_SAVEDEFAULT</strong>  в файл <strong>/etc/defaul/grub</strong> и установить её значение равным <strong>true</strong>:</p>
<pre>GRUB_SAVEDEFAULT=true</pre>
<p>После чего сообщить <strong>Grub</strong> о том, что по умолчанию мы хотим загружать именно последнюю выбранную ОС:</p>
<pre>GRUB_DEFAULT="saved"</pre>
<p>и обновить конфигурацию:</p>
<pre># update-grub2</pre>
<p>Всё! Теперь в 98% случаев можно наслаждаться собственной ленью выбирать ОС для загрузки :) И да, не забудьте, что если каталог <strong>/boot</strong> вашей системы расположен на <strong>RAID</strong>, <strong>LVM</strong> или файловой системе <strong>ZFS</strong>, то <strong>Grub</strong>, <a href="http://www.gnu.org/software/grub/manual/grub.html#Environment-block">по определённым причинам</a>,  не сможет сохранять ваш последний выбор.</p>
<hr />
<p>Давно подумываете о приобретении новенького телевизора в гостиную? Тем, кто собрался <a href="http://vipmb.ru/philips_298_0">купить LED-телевизор Philips</a>, будет не лишним посетить каталог интернет-магазинов, чтобы выбрать подходящую модель по низкой цене.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/grub2-zapominanie-poslednej-zagruzhennoj-os/' addthis:title='Grub2: запоминание последней загруженной ОС' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/grub2-zapominanie-poslednej-zagruzhennoj-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программный RAID в Linux. Расширение массива</title>
		<link>http://www.ashep.org/2012/programmnyj-raid-v-linux-rasshirenie-massiva/</link>
		<comments>http://www.ashep.org/2012/programmnyj-raid-v-linux-rasshirenie-massiva/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 21:59:39 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2639</guid>
		<description><![CDATA[Как известно, дискового пространства много не бывает и, рано или поздно, многие сталкиваются с необходимостью добавления в массив новых дисков. О том, как это делается при использовании драйвера md&#160;&#8212; в сегодняшней заметке. Расширение массива, которое можно проводить для всех уровней RAID, кроме нулевого, состоит из двух (трёх для RAID 4/5) этапов: добавления нового устройства, расширения [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-rasshirenie-massiva/' addthis:title='Программный RAID в Linux. Расширение массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Как известно, дискового пространства много не бывает и, рано или поздно, многие сталкиваются с необходимостью добавления в массив новых дисков. О том, как это делается при использовании драйвера <strong>md</strong>&nbsp;&mdash; в сегодняшней заметке.</p>
<img class="size-full wp-image-2641 aligncenter" title="hdd" src="http://www.ashep.org/wp-content/uploads/2012/01/hdd.jpg" alt="" width="250" height="215" /><br />
<span id="more-2639"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Расширение массива, которое можно проводить для всех уровней RAID, кроме нулевого, состоит из двух (трёх для RAID 4/5) этапов: добавления нового устройства, расширения массива (и, для RAID 5/6, расширения файловой системы). Обо всём по порядку.</p>
<h3>Добавление нового устройства</h3>
<p>Допустим, у нас имеется массив RAID-5 общей ёмкостью 16GiB, состоящий из трёх устройств, ёмкостью по 8 GiB каждое:</p>
<pre>#  mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Jan 31 17:23:21 2012
     Raid Level : raid5
     Array Size : 16774144 (16.00 GiB 17.18 GB)
  Used Dev Size : 8387072 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Tue Jan 31 17:28:43 2012
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a1f02ec1:81276abd:595fe0f9:8c9b3bd0
         Events : 48
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd</pre>
<p>и к нему понадобилось добавить новый диск, находящийся за файлом <strong>/dev/sde</strong>, ёмкостью также 8 GiB. На устройстве /dev/md0 в данный момент у нас расположена файловая система ext4, размеров 16 GiB. Целью добавления нового устройства является увеличение размера файловой системы.</p>
<p>Добавить новое устройство к массиву очень просто:</p>
<pre># mdadm --add /dev/md0 /dev/sde
mdadm: added /dev/sde</pre>
<p>Посмотрим на состояние массива:</p>
<pre># mdadm --detail /dev/md0
...
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd
       4       8       64        -      spare   /dev/sde</pre>
<p>Как видим, диск <strong>/dev/sde</strong> добавился как запасной, то есть, он зарезервирован для массива на случай выхода из строя одного из дисков, и не используется. Теперь. когда в массиве есть свободное (неактивное) устройство, можно расширить массив:</p>
<pre># mdadm --grow --raid-devices=4 --backup-file=/root/md0_growing.backup /dev/md0
mdadm: Need to backup 3072K of critical section.</pre>
<p>Обратите внимание на опцию <em>--backup-file</em>. Значением этой опции является путь к файлу, в который записываются критически-важные данные, пока массив расширяется. Содержимое этого файла пригодится вам в случае, если вдруг в момент расширения массива процесс будет внезапно прерван отключением питания сервера или чем-то подобным. Логично этот файл сохранять на диске, который не является частью расширяемого массива :)</p>
<p>Посмотрим на состояние массива теперь:</p>
<pre># mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Jan 31 17:23:21 2012
     Raid Level : raid5
     Array Size : 16774144 (16.00 GiB 17.18 GB)
  Used Dev Size : 8387072 (8.00 GiB 8.59 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Tue Jan 31 17:47:10 2012
          State : clean, recovering
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

 Reshape Status : 14% complete
  Delta Devices : 1, (3-&gt;4)

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a1f02ec1:81276abd:595fe0f9:8c9b3bd0
         Events : 102
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd
       4       8       64        3      active sync   /dev/sde</pre>
<p>Как видим, ёмкость массива осталась (пока) прежней, количество активных устройств увеличилось, как мы и просили, статус массива сменился на <em>recovering</em>, поскольку драйвер <strong>md</strong> занялся перестроением массива:</p>
<pre>Reshape Status : 14% complete
Delta Devices : 1, (3-&gt;4)</pre>
<p>После того, как процесс расширения будет завершён, посмотрим на размер массива:</p>
<pre>Array Size : 25161216 (24.00 GiB 25.77 GB)</pre>
<p>чего мы, собственно, и ожидали. Однако, как обстоят дела с файловой системой?</p>
<pre># mount /dev/md0 /mnt/md0
# df -h /dev/md0
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               16G  172M   15G   2% /mnt/md0</pre>
<p>Как видно, файловая система осталась прежнего размера, поскольку ей ничего неизвестно о наших операциях с массивом.</p>
<h3>Расширение файловой системы</h3>
<p>Чтобы изменить размер файловой системы ext2/&frac34;, необходимо воспользоваться утилитой <strong>resize2fs</strong>, которая умеет изменять размер ФС на лету, если у вас ядро &gt;= 2.6. Вызванная без параметров, утилита расширит файловую систему до максимально возможного размера:</p>
<pre># resize2fs /dev/md0
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/md0 is mounted on /mnt/md0; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/md0 to 6290304 (4k) blocks.
The filesystem on /dev/md0 is now 6290304 blocks long.</pre>
<p>Умножив 6290304 блока на 4 KiB, получим 25162416 KiB или же 24 GiB, что соответствует размеру массива.</p>
<pre># df -h /dev/md0
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0               24G  172M   23G   1% /mnt/md0</pre>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-rasshirenie-massiva/' addthis:title='Программный RAID в Linux. Расширение массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/programmnyj-raid-v-linux-rasshirenie-massiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Мониторинг системы при помощи logwatch</title>
		<link>http://www.ashep.org/2012/monitoring-sistemy-pri-pomoshhi-logwatch/</link>
		<comments>http://www.ashep.org/2012/monitoring-sistemy-pri-pomoshhi-logwatch/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:22:44 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[logwatch]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2597</guid>
		<description><![CDATA[Удобную штуку всё таки придумали&#160;&#8212; лог-файлы. Всегда можно &#171;вернуться в прошлое&#187; и отыскать нужное событие. Особенно полезными лог-файлы оказываются при всякого рода расследованиях: причин нестабильности работы какого-нибудь демона или даже попыток несанкционированного проникновения в систему. Однако частенько бывает так, что &#171;курить логи&#187; администратор начинает уже слишком поздно, когда система пришла в нерабочее состояние. А ведь [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/monitoring-sistemy-pri-pomoshhi-logwatch/' addthis:title='Мониторинг системы при помощи logwatch' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Удобную штуку всё таки придумали&nbsp;&mdash; лог-файлы. Всегда можно &laquo;вернуться в прошлое&raquo; и отыскать нужное событие. Особенно полезными лог-файлы оказываются при всякого рода расследованиях: причин нестабильности работы какого-нибудь демона или даже попыток несанкционированного проникновения в систему. Однако частенько бывает так, что &laquo;курить логи&raquo; администратор начинает уже слишком поздно, когда система пришла в нерабочее состояние. А ведь в большинстве случаев неприятному событию предшествует громкое &laquo;кричание&raquo; системы в лог-файлах, на которое если вовремя среагировать, можно много чего предотвратить. Конечно же, ежедневное рассматривание содержимого лог-файлов системы&nbsp;&mdash; занятие нереальное и глупое, особенно если объёмы логов составляют не пять строчек, да и что нам, время девать некуда? В сегодняшней заметке речь пойдёт об известной многим администраторам  автоматическом просмотрщике логов <strong>logwatch</strong>.</p>
<p><a href="http://www.ashep.org/wp-content/uploads/2012/01/LD-medic-black_270x270_a.jpg"><img class="size-full wp-image-2600 aligncenter" title="logwatch" src="http://www.ashep.org/wp-content/uploads/2012/01/LD-medic-black_270x270_a.jpg" alt="" width="250" height="250" /></a></p>
<span id="more-2597"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Задачей <strong>logwatch</strong> является избавить вас от необходимости создавать велосипеды в области автоматического анализа лог-файлов. Являясь модульной по своей архитектуре, утилита предоставляет вам возможность легко (если знаете Perl) расширять перечень анализируемых типов лог-файлов. Перечень же типов лог-файлов, которые <strong>logwatch</strong> умеет анализировать &laquo;из коробки&raquo;, впечатляет: начиная от <em>/var/log/messages</em> и заканчивая логами CISCO-оборудования. Результаты анализа утилита группирует и помещает в отчёт, который может как выводиться в <em>stdout</em>, так и отправляться электронной почтой. Формат отчёта предлагается в двух вариантах: plaintext или HTML, при этом вы можете регулировать уровень детализации отчёта исходя из собственных потребностей.</p>
<h3>Установка</h3>
<p>Установить утилиту можно либо из <a href="http://sourceforge.net/projects/logwatch/files/">исходников</a>, либо же пользуясь штатным менеджером пакетов, благо <strong>logwatch</strong> присутствует в репозиториях всех популярных дистрибутивов. В Ubuntu/Debian утилита легко устанавливается командой:</p>
<pre># apt-get install logwatch</pre>
<p>В процессе установки из пакета в Debian/Ubuntu <strong>logwatch</strong> автоматически не создаёт нужного ей для хранения временных файлов каталога <em>/var/cache/logwatch</em>, и вам необходимо сделать это самостоятельно:</p>
<pre># mkdir /var/cache/logwatch</pre>
<p>Файлы конфигурации <strong>logwatch</strong> по умолчанию находятся в <em>/usr/share/logwatch</em>, и если вы намерены редактировать какой-либо из них, то делать это нужно не с оригинальным файлом, а с его копии, размещённой в каталоге <em>/etc/logwatc</em>h.</p>
<h3>Настройка</h3>
<p>Основной файл конфигурации <strong>logwatch</strong> находится в <em>/usr/share/logwatch/default.conf/logwatch.conf</em> и прежде, чем редактировать, скопируйте его:</p>
<pre># cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/</pre>
<p>Файл <em>logwatch.conf</em> очень хорошо само-документирован и настолько прост, что у вас не должно быть сложностей с его исправлением.  Среди опций, обычно затрагиваемых при конфигурации, можно отметить следующие:</p>
<ul>
<li><strong>LogDir</strong>&nbsp;&mdash; путь к каталогу, в котором программа будет искать файлы, обычно это /var/log;</li>
<li><strong>TmpDir</strong>&nbsp;&mdash; путь к каталогу, в котором утилита будет размещать временные файлы. По умолчанию это <em>/var/cache/logwatch</em>, который мы с вами создали ранее;</li>
<li><strong>Output</strong>&nbsp;&mdash; указывает программе метод вывода отчёта. Может быть: <strong>stdout</strong> (в поток стандартного вывода), <strong>mail</strong> (почтовым сообщением) или <strong>file</strong> (в файл);</li>
<li><strong>Format</strong>&nbsp;&mdash; определяет формат отчёта. Может иметь значение <strong>text</strong> или <strong>html</strong>;</li>
<li><strong>MailTo</strong>&nbsp;&mdash; определяет адрес получателя отчёта, если <em>Output = mail</em>;</li>
<li><strong>MailFrom</strong>&nbsp;&mdash; определяет адрес отправителя отчёта, если <em>Output = mail</em>;</li>
<li><strong>Filename</strong>&nbsp;&mdash; задаёт путь к файлу отчёта, если <em>Ouput = file</em>;</li>
<li><strong>Archives</strong>&nbsp;&mdash; используется для указания утилите необходимости анализа не только текущих лог-файлов, но и архивных (например <em>messages.1, messages.2.gz</em> и т. п.). Принимает значения <strong>Yes</strong> или <strong>No</strong>;</li>
<li><strong>Range</strong>&nbsp;&mdash; за какой период времени отбирать анализируемые сообщения: <strong>All</strong>, <strong>Today</strong> или <strong>Yesterday</strong>;</li>
<li><strong>Detail</strong>&nbsp;&mdash; определяет уровень детализации отчёта. Может принимать как числовые значения от <strong>0</strong> (минимум детализации) до <strong>10</strong> (максимум). Также можно использовать синонимы: <strong>Low</strong>, <strong>Med</strong> и <strong>High</strong>, которые соответственно равны числовым <strong>0</strong>, <strong>5</strong> и <strong>10</strong>;</li>
<li><strong>Service</strong>&nbsp;&mdash; этот параметр указывает программе имя службы, логи которой необходимо анализировать. Может иметь значение <strong>All</strong> или имя службы (имя файла из каталога <em>/usr/share/logwatch/scripts/services/</em>). Если необходимо анализировать логи более одной службы, но не всех, то опцию <strong>Service</strong> следует определить несколько раз с указанием имён нужных служб, по одной за раз. Если же необходимо анализировать лог-файлы всех служб, кроме некоторых, то необходимо сначала определить <em>Service = All</em>, а затем перечислить мена ненужных служб, предварив их знаком &laquo;минус&raquo;, например: <em>Service = &laquo;-zz-network&raquo;</em>;</li>
</ul>
<p>Настраиваемые параметры анализатора для каждой службы  можно найти в <em>/usr/share/logwatch/default.conf/services</em>, а пути размещения лог-файлов каждой службы&nbsp;&mdash; в <em>/usr/share/logwatch/default.conf/logfiles</em>. Обычно значений параметров, определённых в этих файлах, достаточно для корректной работы, если в вашей системе все файлы хранятся в каталогах по умолчанию и имеют стандартные имена. Если же у вас в системе некоторые файлы расположены в специфических местах, то вам следует указать <strong>logwatch</strong>, где их искать. Рассмотрим на примере лог-файлов <em>Apache</em>, конфигурация для которого расположена в файле <em>/usr/share/logwatch/default.conf/logfiles/http</em>:</p>
<pre>########################################################
#   Define log file group for httpd
########################################################

# What actual file?  Defaults to LogPath if not absolute path....
LogFile = httpd/*access_log
LogFile = apache/*access.log.1
LogFile = apache/*access.log
LogFile = apache2/*access.log.1
LogFile = apache2/*access.log
LogFile = apache2/*access_log
LogFile = apache-ssl/*access.log.1
LogFile = apache-ssl/*access.log

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are...
#If you use a "-" in naming add that as well -mgt
Archive = archiv/httpd/*access_log.*
Archive = httpd/*access_log.*
Archive = apache/*access.log.*.gz
Archive = apache2/*access.log.*.gz
Archive = apache2/*access_log.*.gz
Archive = apache-ssl/*access.log.*.gz

# Expand the repeats (actually just removes them now)
*ExpandRepeats
# Keep only the lines in the proper date range...
*ApplyhttpDate</pre>
<p>Как видим, <strong>logwatch</strong> использует опцию <strong>LogFile</strong> для определения маски имён лог-файлов, и опцию <strong>Archive</strong>&nbsp;&mdash; для маски архивов. Обратите внимание, что маски файлов указываются относительно каталога, определённого в опции <strong>LogDir</strong> основного файла конфигурации.  Допустим, у вас есть отдельный каталог для хранения логов <em>Apache</em>, скажем, для отдельного домена. В этом случае необходимо скопировать файл <em>/usr/share/logwatch/default.conf/logfiles/http.conf</em> в <em>/etc/logwatch/conf/logfiles</em> и добавить в него несколько строк:</p>
<pre>LogFile = apache2/mydomain.com/access.log
LogFile = apache2/mydomain.com/access.log.1
Archive = apache2/mydomain.com/access.log.*.gz</pre>
<h3>Запуск</h3>
<p>После того, как файлы конфигурации готовы и проверены, достаточно лишь запустить утилиту:</p>
<pre># logwatch</pre>
<p>и приступить к анализу полученной информации. Естественно, анализом лог-файлов стоит заниматься как можно чаще, поэтому обычно запуск <strong>logwatch</strong> осуществляют по расписанию, а многие дистрибутивы автоматически добавляют запуск <strong>logwatch</strong> в ежедневное расписание планировщика. Например, в Ubuntu/Debian:</p>
<pre>$ ls -l /etc/cron.daily/*logwatch*
-rwxr-xr-x 1 root root 268 Mar  4  2011 /etc/cron.daily/00logwatch</pre>
<p>Удачного вам анализа!</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/monitoring-sistemy-pri-pomoshhi-logwatch/' addthis:title='Мониторинг системы при помощи logwatch' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/monitoring-sistemy-pri-pomoshhi-logwatch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программный RAID в Linux. Тестирование и мониторинг</title>
		<link>http://www.ashep.org/2012/programmnyj-raid-v-linux-testirovanie-i-monitoring/</link>
		<comments>http://www.ashep.org/2012/programmnyj-raid-v-linux-testirovanie-i-monitoring/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 10:49:55 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2585</guid>
		<description><![CDATA[Ваш RAID-массив создан, собран и корректно работает, придавая надёжности хранению данных, а вам&#160;&#8212; ощущения уверенности в завтрашнем дне. Однако же, ничто не вечно, а жёсткие диски особенно. Ваша же задача, как системного администратора, состоит в том, чтобы поддерживать работу администрируемой вами системы, частью которой могут быть и RAID-массивы. О том, как и откуда получать информацию [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-testirovanie-i-monitoring/' addthis:title='Программный RAID в Linux. Тестирование и мониторинг' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Ваш RAID-массив создан, собран и корректно работает, придавая надёжности хранению данных, а вам&nbsp;&mdash; ощущения уверенности в завтрашнем дне. Однако же, ничто не вечно, а жёсткие диски особенно. Ваша же задача, как системного администратора, состоит в том, чтобы поддерживать работу администрируемой вами системы, частью которой могут быть и RAID-массивы. О том, как и откуда получать информацию о состоянии md-массивов&nbsp;&mdash; в сегодняшней заметке.</p>
<img class="size-full wp-image-2587 aligncenter" title="Monitoring" src="http://www.ashep.org/wp-content/uploads/2012/01/monitoring.png" alt="" width="250" height="250" /><br />
<span id="more-2585"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Чтобы получить подробную информацию, а также узнать, в каком состоянии находится массив, можно воспользоваться опцией <strong>--detail</strong> из режима <strong>misc</strong> утилиты <strong>mdadm</strong>. Ниже предоставлен пример вывода для массива RAID-1, состоящего из трёх дисков, который мы создавали в <a href="http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/">предыдущей заметке</a>:</p>
<pre># mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:09:29 2012
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 196
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd</pre>
<p>Как видим, все три устройства являются активными и синхронизированными, иными словами всё хорошо. Теперь давайте представим (к сожалению, у меня нет возможности физически сломать одно из устройств, входящих в рассматриваемый массив), что один из дисков вышел из строя (вспомним, что для RAID-1/5/6 это допустимо). В случае &laquo;железных&raquo; проблем драйвер md автоматически пометит диск как сбойный и исключит его дальнейшее использование в массиве; в нашем же тестовом случае мы сделаем это программно. Итак, сделаем устройство <strong>/dev/sdc</strong> сбойным:</p>
<pre># mdadm --fail /dev/md0 /dev/sdc
mdadm: set /dev/sdc faulty in /dev/md0</pre>
<p>И посмотрим, что изменилось:</p>
<pre># mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:26:25 2012
          State : clean, degraded
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 198

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       0        0        1      removed
       2       8       48        2      active sync   /dev/sdd
       1       8       32        -      faulty spare   /dev/sdc</pre>
<p>Первое, что видим: массив стал неполным (<em>degraded</em>). хотя и продолжает функционировать (<em>clean</em>) :</p>
<pre>State : clean, degraded</pre>
<p>Сразу же оцениваем ситуацию. Вместо трёх активных устройств у нас осталось всего два:</p>
<pre>Active Devices : 2
Working Devices : 2</pre>
<p>и один диск сбойный:</p>
<pre>Failed Devices : 1</pre>
<p>В самом конце mdadm любезно предоставляет подробную информацию об устройствах, входящих массив, отметив что второй по счёту диск был удалён:</p>
<pre>0       8       16        0      active sync   /dev/sdb
1       0        0        1      removed
2       8       48        2      active sync   /dev/sdd</pre>
<p>а после&nbsp;&mdash; информацию об удалённом диске:</p>
<pre>1       8       32        -      faulty spare   /dev/sdc</pre>
<p>Из всего становится понятно, что наш RAID-1 работает на двух дисках и что надо-что-то решать с вышедшим из строя устройством. Прежде всего, его необходимо отключить от массива:</p>
<pre># mdadm --manage --remove /dev/md0 /dev/sdc
mdadm: hot removed /dev/sdc from /dev/md0</pre>
<p>Далее уже по обстоятельствам. Первым делом стоит изучить содержимое логов ядра и попытаться определить причину сбоя. Причины могут быть разные, начиная от проблем с интерфейсным кабелем или питанием, до полного выхода диска из строя. Если физически с диском всё порядке и ошибка была вызвана, например, некачественным кабелем, то после её устранения и подключения диска, необходимо вернуть его в массив:</p>
<pre># mdadm --manage --re-add /dev/md0 /dev/sdc
mdadm: re-added /dev/sdc</pre>
<p>Если всё в порядке, драйвер <strong>md</strong> тут же приступит к операции восстановления массива до &laquo;полного&raquo; состояния путём синхронизации данных на вернувшийся диск:</p>
<pre># mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Jan 12 12:24:16 2012
     Raid Level : raid1
     Array Size : 8387572 (8.00 GiB 8.59 GB)
  Used Dev Size : 8387572 (8.00 GiB 8.59 GB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 04:57:37 2012
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 3% complete

           Name : debian-test0:0  (local to host debian-test0)
           UUID : a51bea1f:59677b56:1a4a2cbe:8a258729
         Events : 206
    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      spare rebuilding   /dev/sdc
       2       8       48        2      active sync   /dev/sdd</pre>
<p>И, в случае успешного восстановления, массив вернётся к своему нормальному состоянию, которое было приведено в начале заметки.</p>
<p>Если же устройство, которое вышло из строя, к жизни вернуть не представляется возможным, то после замены его новым, вместо опции <strong>--re-add</strong> следует использовать опцию <strong>--add</strong>:</p>
<pre># mdadm --manage --add /dev/md0 /dev/sdc
mdadm: added /dev/sdc</pre>
<h3>Мониторинг</h3>
<p>Вопрос, который возникает в первую очередь: а как, собственно, администратору узнать о том, что с массивом что-то неладно? Не заглядывать же постоянно в логи системы! Для целей мониторинга и оповещения о событиях, среди режимов работы утилиты <strong>mdadm</strong> предусмотрен режим <strong>monitor</strong>, позволяющий в качестве средств оповещения использовать как традиционный <strong>syslog</strong>, так и отправку уведомлений почтой. В этом режиме утилита, как правило, работает в режиме демона и запускается init-сценария во время старта системы.</p>
<p>В частности в Ubuntu/Debian запускающий сценарий называется <strong>mdadm</strong> и по-умолчанию включён. Если вы хотите получать уведомления не только в <strong>syslog</strong>, но и электронной почтой, добавьте исправьте строку в <strong>/etc/default/mdadm</strong>:</p>
<pre>DAEMON_OPTIONS="--syslog"</pre>
<p>на</p>
<pre>DAEMON_OPTIONS="--syslog --mail root@localhost"</pre>
<p>и перезапустите демон:</p>
<pre># service mdadm restart
Stopping MD monitoring service: mdadm --monitor.
Starting MD monitoring service: mdadm --monitor.</pre>
<p>Тем, кому необходимо запускать <strong>mdadm</strong> в режиме монитора из собственных сценариев или же в целях тестирования, можно воспользоваться командой:</p>
<pre># mdadm --monitor --scan --syslog --mail root@localhost</pre>
<p>Если же нужно, чтобы <strong>mdadm</strong> запустилась в режиме демона и не занимала консоль, просто добавьте опцию <strong>--daemonize</strong>:</p>
<pre># mdadm --monitor --scan --syslog --mail root@localhost --daemonize</pre>
<hr />
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-testirovanie-i-monitoring/' addthis:title='Программный RAID в Linux. Тестирование и мониторинг' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/programmnyj-raid-v-linux-testirovanie-i-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Шпаргалки для начинающих никсоидов</title>
		<link>http://www.ashep.org/2012/shpargalki-dlya-nachinayushhix-niksoidov/</link>
		<comments>http://www.ashep.org/2012/shpargalki-dlya-nachinayushhix-niksoidov/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 08:53:58 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Общее]]></category>
		<category><![CDATA[Рабочий стол]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[начинающим]]></category>
		<category><![CDATA[обои]]></category>
		<category><![CDATA[шпаргалки]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2570</guid>
		<description><![CDATA[Те, кто только начинают постигать путь командной строки, и даже те, кто уже давненько &#171;в теме&#187;, иногда сталкиваются с ситуацией, когда &#171;блин, ну вот помню, что команда делает, а как её звать&#160;&#8212; вылетело из головы&#187;. Не знаю, у кого как, а меня пару раз такие ситуации изрядно выводили из себя и дело доходило до звонков [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/shpargalki-dlya-nachinayushhix-niksoidov/' addthis:title='Шпаргалки для начинающих никсоидов' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[Те, кто только начинают постигать путь командной строки, и даже те, кто уже давненько &laquo;в теме&raquo;, иногда сталкиваются с ситуацией, когда &laquo;блин, ну вот помню, что команда делает, а как её звать&nbsp;&mdash; вылетело из головы&raquo;. Не знаю, у кого как, а меня пару раз такие ситуации изрядно выводили из себя и дело доходило до звонков знакомым с просьбой о помощи. Когда-то давно были попытки вести заметки в небольшом блокнотике, который то и дело терялся в самый нужный момент, ведь не очень часто бывает нужен. В итоге самым эффективным методом для меня лично оказался обычный набор листочков, прилепленный на стену, которая рядом с рабочим местом. Самой большой проблемой в таком варианте оказалась необходимость обновлять содержимое этих листочков, ведь сразу всё, что нужно, не впишешь.<br />
<img class="size-full wp-image-2571 aligncenter" title="Шпаргалки" src="http://www.ashep.org/wp-content/uploads/2012/01/books.jpg" alt="" width="250" height="235" /><br />
<span id="more-2570"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p>
Сама по себе идея не нова и используется многими, кто ощущает необходимость в структурном хранении необходимых, но не слишком часто используемых знаний. Кто-то хранит, как и я, всё на отдельных шпаргалках, дополняя и распечатывая их по мере необходимости, кто-то размещает подобные шпаргалки прямо на рабочем столе. Да много вариантов может быть, если проявить смекалку.</p>
<p>Недавно наткнулся в Сети на неплохую подборку частых полезностей, которую можно распечатать и использовать в настольном варианте, чем радостно <a href="http://dl.dropbox.com/u/397277/bash_shell_cheat_sheetV2.pdf">делюсь</a> с читателями. Блог автора, на всякий случай: <a href="http://freeworld.posterous.com">http://freeworld.posterous.com</a>. Также есть устаревшая <a href="http://dl.dropbox.com/u/397277/terminal_cheat_sheetV2/index.htm">онлайн-версия</a>, для тех кому вдруг не подходит PDF-вариант.</p>
<p>Ещё одна шпаргалка размером с простыню, но весьма структурированная и мегаполезная есть <a href="http://cb.vu/unixtoolbox.xhtml">здесь</a>. На стену в полном объёме не вывесишь, но деражть на рабочем столе в виде <a href="http://cb.vu/unixtoolbox.pdf">PDF</a>&nbsp;&mdash; вполне.</p>
<p>Для почитателей же &laquo;настольных&raquo; вариантов шпаргалок существует масса разнообразных обоев. Из интересных полезняшек, найденных в Сети, хочу поделиться популярной обойкой с коллекцией команд UNIX/Linux, разбитых по категориям:</p>
<p><a href="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-01.jpg"><img class="size-thumbnail wp-image-2573 aligncenter" title="Useful Wallpapers" src="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-01-600x480.jpg" alt="" width="600" height="480" /></a></p>
<p>небольшой подборкой памятной информации для убунтоидов:</p>
<p><a href="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-03.png"><img class="size-thumbnail wp-image-2574 aligncenter" title="Useful Wallpapers" src="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-03-600x480.png" alt="" width="600" height="480" /></a></p>
<p>и коллекцией шорткатов для пользователей Ubutu Unity:</p>
<p><a href="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-02.png"><img class="size-thumbnail wp-image-2575 aligncenter" title="Useful Wallpapers" src="http://www.ashep.org/wp-content/uploads/2012/01/useful-wallpapers-02-600x400.png" alt="" width="600" height="400" /></a></p>
<p>Специально для защитников авторских прав: обои найдены в Сети и точное авторство каждого из них установить сейчас уже трудно, да и не вижу смысла. Гугл в помощь! ;)</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/shpargalki-dlya-nachinayushhix-niksoidov/' addthis:title='Шпаргалки для начинающих никсоидов' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/shpargalki-dlya-nachinayushhix-niksoidov/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Программный RAID в Linux. Сборка массива</title>
		<link>http://www.ashep.org/2012/programmnyj-raid-v-linux-sborka-massiva/</link>
		<comments>http://www.ashep.org/2012/programmnyj-raid-v-linux-sborka-massiva/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 19:17:30 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[mdstat]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[raidtab]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2544</guid>
		<description><![CDATA[В предыдущей статье, посвящённой созданию программного RAID-массива, мы рассматривали метаданные md, основные режимы работы утилиты mdadm, а также  процесс создания нового RAID-массива и файловой системы на нём. Всё, вроде бы, понятно, но мы не коснулись одного существенного вопроса: как поведёт себя система после перезагрузки? Откуда ядро узнает из каких частей и какой именно массив вам [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-sborka-massiva/' addthis:title='Программный RAID в Linux. Сборка массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p>В предыдущей <a href="http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/">статье</a>, посвящённой созданию программного RAID-массива, мы рассматривали метаданные <strong>md</strong>, основные режимы работы утилиты <strong>mdadm</strong>, а также  процесс создания нового RAID-массива и файловой системы на нём. Всё, вроде бы, понятно, но мы не коснулись одного существенного вопроса: как поведёт себя система после перезагрузки? Откуда ядро узнает из каких частей и какой именно массив вам нужен? Об этом&nbsp;&mdash; ниже.</p>
<p><img class="size-full wp-image-2546 aligncenter" title="Картинка с dreamstime.com" src="http://www.ashep.org/wp-content/uploads/2012/01/constructor-game-elements-thumb18694560.jpg" alt="" width="324" height="254" /></p>
<span id="more-2544"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Сборка массива вручную</h3>
<p>Для сборки ранее созданного массива вам понадобится режим <strong>assemble</strong> утилиты <strong>mdadm</strong>. Допустим, наш ранее созданный массив имел конфигурацию RAID-1 и состоял из трёх устройств: <strong>/dev/sdb</strong>, <strong>/dev/sdc</strong> и <strong>/dev/sdc</strong>, и был создан командой:</p>
<pre># mdadm --create --raid-devices=3 --level=raid1 /dev/md0 /dev/sdb /dev/sdc /dev/sdd</pre>
<p>Вспомним, что сразу после создания массива, утилита <strong>mdadm</strong> автоматически активирует его, то есть <em>собирает</em> и делает доступным через блочное устройство <strong>/dev/mdX</strong>. Если же вы остановите активный массив при помощи команды (предварительно размонтировав файловые системы, располагающиеся в массиве):</p>
<pre># mdadm --stop /dev/md0</pre>
<p>или же просто перезагрузите систему, то для того, чтобы опять активировать массив, вам необходимо его собрать. Зная, на каких устройствах хранятся элементы массива, можно произвести его сборку:</p>
<pre># mdadm --assemble /dev/md0 /dev/sdb /dev/sdc /dev/sdd</pre>
<p>Обратите внимание, что мы не указываем уровень конфигурации RAID, поскольку об этом утилита <strong>mdadm</strong> узнаёт из суперблоков элементов массива. Если всё прошло успешно, вы получите сообщение:</p>
<pre>mdadm: /dev/md0 has been started with 3 drives.</pre>
<p>Вспомним, что проверить состояние массива можно в файле <strong>/proc/mdstat</strong>:</p>
<pre># cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid1 sdb[0] sdd[2] sdc[1]
      8387572 blocks super 1.2 [3/3] [UUU]
          resync=PENDING
unused devices: &lt;none&gt;</pre>
<h3>Автоматическая сборка массива</h3>
<p>Ещё одним преимуществом, которое даёт использование суперблоков (а точнее постоянных суперблоков, смотрите ниже), является возможность &laquo;автосборки&raquo; массива, когда вам не нужно перечислять устройства, входящие в состав массива. <strong>mdadm</strong> отыщет их самостоятельно:</p>
<pre># mdadm --assemble --scan
mdadm: /dev/md/0 has been started with 3 drives.</pre>
<p>Как видим, утилита без особых трудностей и посторонней помощи отыскала все нужные устройства и собрала их, активировав массив <strong>/dev/md/0</strong>.</p>
<h3>Автоматическая сборка массива во время загрузки системы</h3>
<p>В старые-добрые времена, когда арбузы на деревьях были совсем ещё зелёные, системным администраторам приходилось вручную описывать массивы и их компоненты в специальном файле <a href="http://linux.about.com/library/cmd/blcmdl5_raidtab.htm">/etc/raidtab</a>, чтобы драйвер <strong>md</strong> мог разобраться что к чему. Подход вроде бы традиционный и практичный, однако что делать, если RAID-массив необходимо собрать раньше, чем смонтирована ФС, на которой располагается файл <strong>/etc/raidtab</strong> (ситуация типична для случаев, когда необходимо загрузить систему, расположенную на RAID-массиве)? Выход был найден: были придуманы <em>постоянные суперблоки</em> (<em>Persistent Superblocks</em>).</p>
<p>Постоянные суперблоки располагаются на каждом устройстве, входящем в массив и содержат в себе всю необходимую информацию для того, чтобы драйвер <strong>md</strong> смог собрать массив. Иными словами файл конфигурации <strong>/etc/raidtab</strong> просто &laquo;перенесли&raquo; прямо в область суперблоков. Таким образом, когда ядро загружает драйвер <strong>md</strong>, у того есть возможность тут же собрать массив, просканировав доступные в системе блочные устройства на предмет наличия постоянных суперблоков. Например, предлагаю взглянуть на фрагмент файла <strong>/var/log/dmesg</strong> с системы в которой сконфигурирован массив, рассматриваемый в примерах выше:</p>
<pre>[    5.022639] md: bind&lt;sdc&gt;
[    5.026939] md: bind&lt;sdd&gt;
[    5.029737] md: bind&lt;sdb&gt;
[    5.060274] raid1: raid set md0 active with 3 out of 3 mirrors
[    5.060503] md0: detected capacity change from 0 to 8588873728</pre>
<p>В следующей статье мы рассмотрим основы мониторинга программных RAID-массивов.</p>
<hr />
<p>Программный RAID является прекрасным бюджетным решением, однако если речь идёт о больших объёмах данных, повышенной отказоустойчивости и безопасности хранения данных, лучше использовать иные решения, например <a href="http://server-city.ru/market/sistemy_hraneniya_dannyh/sistemy_hraneniya_dannyh_dell/sistemy_hraneniya_podklyuchaemye_napryamuyu_das/sistema_hraneniya_dannyh_dell_powervault_md3200/">массив хранения DELL MD3220</a> или ему подобные. Поддержка SATA и SAS накопителей со скоростью передачи до 6 гигабит на порт, горячая замена дисков, одновременная поддержка до восьми серверов, а также создание до 128 моментальных копий&nbsp;&mdash; всё это повысит надёжность и скорость работы вашей инфраструктуры хранения данных, а также заметно снизит количество головной боли.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-sborka-massiva/' addthis:title='Программный RAID в Linux. Сборка массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/programmnyj-raid-v-linux-sborka-massiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программный RAID в Linux. Метаданные, mdadm и создание массива</title>
		<link>http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/</link>
		<comments>http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 15:21:39 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[md]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[mdstat]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2511</guid>
		<description><![CDATA[В сегодняшней заметке рассмотрим что такое метаданные md, режимы работы утилиты mdadm, а также создадим наш первый RAID массив. Метаданные md Каждое устройство в RAID-массиве md может содержать метаданные (не путайте с метаданными файловых систем), иногда называемые суперблоком (superblock). Информация из суперблоков на устройствах, входящих в массив, позволяет драйверу md корректно заново собирать массив после [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/' addthis:title='Программный RAID в Linux. Метаданные, mdadm и создание массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">В сегодняшней заметке рассмотрим что такое метаданные <strong>md</strong>, режимы работы утилиты <strong>mdadm</strong>, а также создадим наш первый RAID массив.</p>
<img class=" wp-image-2512 aligncenter" title="Картинка с linux-mag.com" src="http://www.ashep.org/wp-content/uploads/2012/01/storage.jpg" alt="" width="250" height="250" /><br />
<span id="more-2511"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Метаданные md</h3>
<p style="text-align: left;">Каждое устройство в RAID-массиве <strong>md</strong> может содержать <em>метаданные</em> (не путайте с <a href="http://www.ashep.org/2011/chto-takoe-inode/">метаданными файловых систем</a>), иногда называемые <em>суперблоком (superblock)</em>. Информация из суперблоков на устройствах, входящих в массив, позволяет драйверу <strong>md</strong> корректно заново собирать массив после его остановки. Особенностью суперблока является то, что данных хранимые в нём, содержатся в процессорно-независимом формате, то есть вы можете свободно перемещать RAID-массив между различными платформами.</p>
<h3>Массивы без метаданных</h3>
<p>Наличие суперблоков является крайне желательным в большинстве случаев, однако есть ситуации, когда лучше их не использовать:</p>
<ul>
<li>в предыдущих версиях драйвер <strong>md</strong> поддерживал только <em>линейные (linear)</em> и <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-0/">RAID-0</a> конфигурации, в которых суперблок не использовался, поскольку в данных случаях это не критически-важный момент. Вы можете пересобрать такой массив, включив использование суперблоков, но <strong>md</strong> поддерживает работу и без них из соображений обратной совместимости;</li>
<li>являясь прозрачным слоем поверх устройств, предназначенным для тестирования массивов, псевдо-уровень RAID <em>FAULTY</em> не нуждается в суперблоках;</li>
<li>поскольку <em>MULTIPATH</em>-массивы для <strong>md</strong> представляют всего одно устройство, смысла в использовании суперблока попросту нет;</li>
<li>в некоторых случаях выгоднее не использовать суперблоки в RAID1-массивах.</li>
</ul>
<h3>Режимы работы mdadm</h3>
<p style="text-align: left;">Утилита <strong>mdadm</strong>, речь о которой шла в <a href="http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/">предыдущей заметке</a>, имеет 9 основных режимов работы. В повседневной жизни обычно требуются только первые три, в то время как остальные пригодятся в случае восстановления массива после сбоев или изменения его параметров.</p>
<ul>
<li>Режим <strong>Create</strong> предназначен для создания массивов, размещая суперблоки на каждом устройстве;</li>
<li>в режиме <strong>Assemble</strong> утилита <strong>mdadm</strong> выполняет сборку массива из компонент, созданных ранее. Компоненты для сборки могут быть как указаны вручную, так и найдены автоматически. Обычно необходимость в этом режиме работы <strong>mdadm</strong> возникает у сценариев загрузки системы;</li>
<li>режим <strong>Monitor</strong> используется для наблюдения за изменением состояния устройств массива. Поскольку в конфигурациях <em>Linear</em> и <em>RAID0</em> не может быть <em>spare (запасных)</em>, <em>fault</em><em>(сбойных)</em> и <em>missing (потерянных)</em> устройств, то для таких конфигураций режим <strong>Monitor</strong> работать не будет, ибо нечего отслеживать;</li>
<li>в режиме <strong>Build</strong> утилита <strong>mdadm</strong>может выполнять сборку массива из устройств, не содержащих суперблоков. При работе с массивами такого типа для <strong>mdadm</strong> нет разницы между созданием нового массива или сборкой существующего, поскольку у неё нет возможности определить, инициализировались ли уже указанные устройства или нет. Пользуйтесь этим режимом только в том случае, если вы абсолютно уверены  в том, что вы делаете;</li>
<li>режим <strong>Grow</strong> используется в случаях, когда вам необходимо расширить или каким-либо образом реорганизовать ваш массив. На сегодняшний день можно расширять массив путём изменения размера составных устройств в массивах RAID &frac14;/5/6 и количества активных устройств в массивах RAID1;</li>
<li>режим <strong>Manage</strong> предназначен для выполнения разнообразных операций, вроде добавления запасных или удаления сбойных устройств;</li>
<li>команды режима <strong>Misc</strong> предназначены для выполнения &laquo;всяких-разных&raquo; операций, которые не вошли в предыдущие режимы;</li>
<li>режим <strong>Incremental Assembly</strong> позволяет добавлять или удалять одно устройство в/из массива;</li>
<li>в режиме <strong>Auto-detect</strong> утилита просит ядро Linux активировать автоматически определённые массивы.</li>
</ul>
<h3>Планирование массива</h3>
<p style="text-align: left;">Прежде чем создавать массив, естественно, нужно определиться, из чего он будет состоять. Обратите внимание, что для <strong>mdadm</strong> устройством является не обязательно физическая &laquo;железка&raquo;. Это может быть любое блочное устройство, т. е. даже дисковые разделы. На данном этапе предположим, что у нас имеется три одинаковых жёстких диска одинакового размера: <strong>/dev/sdb, /dev/sdc и /dev/sdd</strong>, из которых мы и создадим наш первый массив.</p>
<h3>Создание массива</h3>
<p style="text-align: left;">В общем случае новый RAID-массив создаётся  следующим образом:</p>
<pre># mdadm --create --raid-devices=&lt;n&gt; --level=&lt;level&gt; &lt;md-device&gt; &lt;block-device-1&gt; ... &lt;block-device-n&gt;</pre>
<p style="text-align: left;">где:</p>
<ul>
<li><strong>n</strong>&nbsp;&mdash; количество устройств, входящих в массив;</li>
<li><strong>level</strong>&nbsp;&mdash; уровень RAID, один из: <strong>linear, raid0, raid1, raid4, raid5, raid6, raid10</strong> или <strong>multipath</strong> (опций на самом деле больше, многие из которых являются синонимами, но пока что опустим их, дабы не загромождать статью);</li>
<li><strong>md-device</strong>&nbsp;&mdash; путь к файлу блочного устройства, которое будет представлять массив;</li>
<li><strong>block-device-1 ... block-device-n</strong>&nbsp;&mdash; компоненты массива устройства.</li>
</ul>
<h3>Linear</h3>
<p style="text-align: left;">Как уже <a href="http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/">говорилось</a>, в этом режиме компоненты массива последовательно &laquo;склеиваются&raquo; и в массивах такого типа нет избыточной информации для восстановления данных в случае чего. Данный тип массива может пригодиться вам, если необходимо &laquo;слепить&raquo; из нескольких небольших разделов и/или дисков один раздел большой ёмкости, а надёжность хранения данных вас не особо заботит. В случае с нашими тремя дисками команда создания linear-массива будет выглядеть так:</p>
<pre># mdadm --verbose --create --raid-devices=3 --level=linear /dev/md0 /dev/sdb /dev/sdc /dev/sdd</pre>
<p style="text-align: left;">Если всё прошло успешно, <strong>mdadm</strong> сообщит вам об этом и автоматически активрует массив:</p>
<pre>mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.</pre>
<p style="text-align: left;"><em>Не забывайте, что если хотя бы одна из компонент массива выйдет из строя, вы потеряете весь массив!</em></p>
<h3>RAID-0</h3>
<p style="text-align: left;">Если у вас есть два или более устройств примерно одного размера, вы можете создать RAID-0-массив:</p>
<pre># mdadm --verbose --create --raid-devices=3 --level=raid0 /dev/md0 /dev/sdb /dev/sdc /dev/sdd
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.</pre>
<p style="text-align: left;">Так же, как и в случае с linear-массивом, в RAID-0 не создаётся информация для восстановления, так что <em>если хотя бы одна из компонент массива выйдет из строя, вы потеряете весь массив!</em></p>
<h3 style="text-align: left;">RAID-1</h3>
<p style="text-align: left;">Вот, собственно, здесь начинается RAID в буквальном (<em>redundant</em>, не забыли?) смысле этого слова. Представим, что у нас имеется два диска, которые мы хотим объединить в зеркало. Нет ничего проще:</p>
<pre style="text-align: left;"># mdadm --verbose --create --raid-devices=2 --level=raid1 /dev/md0 /dev/sdb /dev/sdc</pre>
<p style="text-align: left;">Одной очень приятно &laquo;фишкой&raquo; <strong>md</strong> является возможность иметь т. н. <em>spare (запасные)</em> устройства, которые могут автоматически подключаться ядром в случае выхода из строя компонент массива. Именно в RAID-1 можно начинать пользоваться этой возможностью, поскольку для двух предыдущих уровней эта функция не поддерживается по понятным причинам. Допустим, необходимо создать такой же массив, как мы только что создали, но при этом нужно указать системе, что имеется один запасной диск <strong>/dev/sdd</strong>, который необходимо ввести в строй взамен вышедшего, если вдруг такое произойдёт. Делается это при помощи опции <strong>--spare-devices</strong>, передав ей количество запасных устройств, а также пути к их файлам:</p>
<pre style="text-align: left;"># mdadm --verbose --create --raid-devices=2 --level=raid1 /dev/md0 /dev/sdb /dev/sdc --spare-devices=1 /dev/sdd</pre>
<p style="text-align: left;">Чтобы узнать, в каком состоянии находится синхронизация данных между устройствами массива, необходимо взглянуть на содержимое файла <strong>/proc/mdstat</strong>:</p>
<pre style="text-align: left;"># cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdd[2](S) sdc[1] sdb[0]
      8387572 blocks super 1.2 [2/2] [UU]
      [=&gt;...................]  resync =  6.2% (524224/8387572) finish=4.4min speed=29123K/sec</pre>
<p>Из содержимого приведённого примера видно, что синхронизация закончена на 6.2%, идёт на скорости 29123К/сек и должна закончиться приблизительно через четыре с половиной минуты. Синхронизация выполняется системой в фоновом режиме в то время, когда сама система простаивает. То есть, влияние синхронизации на скорость работы системы сведено к минимуму.</p>
<h3>RAID-4/5/6</h3>
<p>При наличии трёх и более дисков, вы можете создать массив уровня RAID-4/5.</p>
<pre># mdadm --verbose --create --raid-devices=3 --level=raid5 /dev/md0 /dev/sdb /dev/sdc /dev/sdd</pre>
<p>Конечно же, на этих уровнях никто не отменял возможности использовать запасные диски:</p>
<pre># mdadm --verbose --create --raid-devices=3 --level=raid5 /dev/md0 /dev/sdb /dev/sdc /dev/sdd --spare-devices=1 /dev/sde</pre>
<p>А если у вас в запасе есть 4 и более дисков, можно позволить себе RAID-6:</p>
<pre># mdadm --verbose --create --raid-devices=4 --level=raid6 /dev/md0 /dev/sdb /dev/sdc /dev/sdd /dev/sde</pre>
<p>или</p>
<pre># mdadm --verbose --create --raid-devices=4 --level=raid6 /dev/md0 /dev/sdb /dev/sdc /dev/sdd /dev/sde --spare-devices=1 /dev/sdf</pre>
<h3>Состояние массивов</h3>
<p>Узнать, в каком состоянии находятся массивы и их компоненты, можно из содержимого файла <strong>/proc/mdstat</strong>, как мы это делали в разделе о создании массива RAID-1. Подробнее о том, что можно извлечь из инофрмации,хранящейся в этом файле, мы поговорим в следующих статьях.</p>
<h3>Создание разделов и файловых систем, монтирование</h3>
<p>После того, как массив создан и активирован, им можно пользоваться как обычным блочным устройством. То есть, создать таблицу разделов</p>
<pre># fdisk /dev/md0</pre>
<p>и/или файловую систему:</p>
<pre># mkfs.ext4 /dev/md0p1</pre>
<p>смонтировать её:</p>
<pre># mount /dev/md0p1 /mnt/raid0</pre>
<p>и пользоваться на здоровье ;)</p>
<h3>Что дальше</h3>
<p>В следующей заметке мы рассмотрим процесс сборки массива из существующих компонент, а также настройку его автоматической сборки при загрузке системы.</p>
<hr />
<p>Пока сисадмины настраивают RAID-массивы, офис не стоит на месте, и копировальная техника то и дело требует дозаправки. Качественная <a href="http://www.orser.ru/index.php?option=com_content&amp;view=article&amp;id=43&amp;Itemid=41">заправка картриджей Canon</a> и других известных производителей&nbsp;&mdash; в сервисном центре ОРСЕР. Любые работы, связанные с принтерами и копирами, качественно и в срок!</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/' addthis:title='Программный RAID в Linux. Метаданные, mdadm и создание массива' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/programmnyj-raid-v-linux-metadannye-mdadm-i-sozdanie-massiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программный RAID в Linux. Подготовка системы</title>
		<link>http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/</link>
		<comments>http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 08:22:13 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[ядро]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2500</guid>
		<description><![CDATA[Продолжая серию статей, посвящённых RAID, займёмся наконец практической частью. В этой небольшой заметке мы рассмотрим действия, необходимые для того, чтобы подготовить Linux-систему к работе с программным RAID. Программный RAID является, как правило, более медленным в работе, нежели аппаратный. Зато вы не зависите от надёжности китайской электроники, за которую к тому же нужно платить. Драйвер ядра [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/' addthis:title='Программный RAID в Linux. Подготовка системы' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Продолжая серию статей, посвящённых RAID, займёмся наконец практической частью. В этой небольшой заметке мы рассмотрим действия, необходимые для того, чтобы подготовить Linux-систему к работе с программным RAID. Программный RAID является, как правило, более медленным в работе, нежели аппаратный. Зато вы не зависите от надёжности китайской электроники, за которую к тому же нужно платить.</p>
<img class="size-full wp-image-2501 aligncenter" title="Фото с сайта media.bestofmicro.com" src="http://www.ashep.org/wp-content/uploads/2012/01/raidsetup-0.jpg" alt="" width="300" /><br />
<span id="more-2500"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<h3>Драйвер ядра</h3>
<p style="text-align: left;">Первое, с чего необходимо начать, это с проверки наличия драйвера <a href="http://linux.die.net/man/4/md">md</a> в ядре вашей системы. Именно драйвер md (аббревиатура от <em>Multiple Devices</em>) занимается управлением всем Software RAID хозяйством в Linux и без его присутствия в системе работать ничего не будет.</p>
<p style="text-align: left;"><strong>md</strong> поддерживает: <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-1-i-raid-2/">1 (mirror — зеркалирование)</a>, <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-4/">4 (разделение данных между несколькими дисками, плюс отдельный диск для хранения данных чётности)</a>, <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-5/">5 (то же, что и RAID-4, но данные чётности разпределяются между всеми дисками массива</a><a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-5/">)</a>, <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-6-i-gibridnyj-raid/">6 (то же, что и RAID-5, но количество данных чётности удвоено)</a> и <a href="http://en.wikipedia.org/wiki/Nested_RAID_levels">10 (mirror из нескольких stripe-массивов)</a> уровни RAID, то есть все уровни, которые используются на сегодняшний день.</p>
<p style="text-align: left;">Кроме всего прочего <strong>md</strong> поддерживает так называемые псевдо-RAID уровни (то есть, массивы, не содержащие избыточной информации для восстановления): <a href="http://www.ashep.org/2011/vvedenie-v-raid-raid-0/">RAID0 (stripe) — разделение данных между несколькими дисками)</a>, <strong>LINEAR</strong> — последовательно объединённые диски, <strong>MULTIPATH</strong> — набор из нескольких интерфейсов к одному и тому же устройству, а также <strong>FAULTY</strong> — предназначенный для тестирования уровень поверх одного устройства, в котором могут эмулироваться сбои и ошибки в работе.</p>
<p style="text-align: left;">Обо всём перечисленном и даже больше мы поговорим с следующих статьях, а теперь самое время проверить, как обстоят дела в поддержкой программного RAID в вашей системе.</p>
<p style="text-align: left;">Драйвер md в системе может быть как частью ядра, так и динамически-загружаемым модулем. При написании этой заметки использовалась <strong>Debian 6</strong> с ядром «из коробки» со всеми необходимыми модулями:</p>
<pre># ls -1 /lib/modules/2.6.32-5-686/kernel/drivers/md
...
faulty.ko
linear.ko
md-mod.ko
multipath.ko
raid0.ko
raid10.ko
raid1.ko
raid456.ko
raid6_pq.ko
...</pre>
<p style="text-align: left;">Если вы собирали ядро самостоятельно или набор «стандартных» модулей вашего дистрибутива отличается, то вам необходимо пересобрать ядро соответствующим образом.</p>
<p>После того, как все необходимые модули готовы, попробуем загрузить основной модуль драйвера md:</p>
<pre># modprobe md_mod</pre>
<p style="text-align: left;">В случае, если вы не получили никаких ошибок в процессе загрузки модуля, в файловой системе <a href="../2011/nemnogo-ob-ispolzovanii-proc/">/proc</a> должен появится файл <strong>/proc/mdstat</strong>, содержащий информацию ос состоянии RAID-массивов в вашей системе. Пока в системе нет ни одного массива, содержимое этого файла будет таким:</p>
<pre># cat /proc/mdstat
Personalities :
unused devices: &lt;none&gt;</pre>
<h3>Утилита mdadm</h3>
<p style="text-align: left;">Как можно догадаться из названия утилиты, её предназначение — управление md-устройствами. Набор функций, выполняемых этой утилитой настолько огромен, что является темой отдельных статей. Таким образом, знакомиться с возможностями этой утилиты мы будем по ходу событий, на практике.</p>
<p style="text-align: left;">Если вы используете один из популярных дистрибутивов Linux, то с установкой <strong>mdadm</strong> проблем быть не должно. Так, например, в Debian/Ubuntu:</p>
<pre># apt-get install mdadm</pre>
<p style="text-align: left;">в Gentoo:</p>
<pre># emerge mdadm</pre>
<p style="text-align: left;">в RedHat/CentOS:</p>
<pre># yum install mdadm</pre>
<p style="text-align: left;">Те же, кто любит или по каким-то другим причинам вынужден собирать ПО из исходников, может получить последнюю версию <a href="http://www.kernel.org/pub/linux/utils/raid/mdadm/">исходных кодов mdadm</a> и скомпилировать утилиту самостоятельно.</p>
<p style="text-align: left;">На этом всё. Ваша система готова к созданию и работе с программными RAID-массивами. В следующей заметке мы рассмотрим режимы работы утилиты <strong>mdadm</strong>, узнаем что такое метаданные в понимании драйвера <strong>md</strong>, как и где они могут располагаться, а также создадим свой первый RAID0-массив.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/' addthis:title='Программный RAID в Linux. Подготовка системы' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2012/programmnyj-raid-v-linux-podgotovka-sistemy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Введение во вложенный RAID</title>
		<link>http://www.ashep.org/2011/vvedenie-vo-vlozhennyj-raid/</link>
		<comments>http://www.ashep.org/2011/vvedenie-vo-vlozhennyj-raid/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 13:22:54 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Система]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2436</guid>
		<description><![CDATA[В предыдущих заметках, посвящённых RAID, мы с вами познакомились с осовными базовыми уровнями RAID. Для многих, я уверен, в этих заметках не оказалось ничего нового, однако на мой взгляд, полезно время от времени возвращаться к основам и освежать некоторую информацию в памяти. В данном случае речь идёт об &#171;одиночных&#187; уровнях RAID, таких как RAID-0, RAID-1, [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2011/vvedenie-vo-vlozhennyj-raid/' addthis:title='Введение во вложенный RAID' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В предыдущих <a href="http://www.ashep.org/tag/raid">заметках, посвящённых RAID</a>, мы с вами познакомились с осовными базовыми уровнями RAID. Для многих, я уверен, в этих заметках не оказалось ничего нового, однако на мой взгляд, полезно время от времени возвращаться к основам и освежать некоторую информацию в памяти. В данном случае речь идёт об &laquo;одиночных&raquo; уровнях RAID, таких как RAID-0, RAID-1, RAID-5, RAID-6, то есть тех, которые в номере уровня имеют один разряд. Вспомните, что основным предназначением RAID является увеличение производительности и/или избыточности хранимой информации. Именно для решения этих задач базовые уровни RAID и были разработаны.</p>
<img class="size-full wp-image-2444 aligncenter" title="Nested RAID" src="http://www.ashep.org/wp-content/uploads/2011/06/Xserve_Closeup.jpg" alt="" width="250" height="188" /><br />
<span id="more-2436"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p style="text-align: justify;">В предыдущих заметках мы выяснили, что одни уровни RAID нацелены на увеличение производительности, другие&nbsp;&mdash; на повышение надёжности хранения данных за счёт добавления избыточности. Существуют также некоторые базовые уровни RAID, которые пытаются решать обе задачи одновременно, однако у них получается не совсем хорошо, поскольку в их реализации больше уделено внимания избыточности, нежели производительности. Через какое-то время стало очевидно, что используя любой из базовых уровней RAID, не удастся достичь &laquo;всего и сразу&raquo;. Именно поэтому люди придумали использовать одновременно сразу несколько уровней RAID, объединяя их в один, что позволило достичь лучшего соотношения &laquo;надёжность/производительность&raquo;.</p>
<p style="text-align: justify;">В следующих нескольких статьях мы с вами рассмотрим дальнейшее развитие концепции RAID, которая подразумевает объединение нескольких уровней RAID в один и называется <em>&laquo;вложенный RAID&raquo;</em>, иногда называемый <em>&laquo;гибридный RAID&raquo;</em>.</p>
<p style="text-align: justify;">Причины, по которым был придуман и используется вложенный RAID, остаются теми же: стремление повысить <em>надёжность</em> хранения и/или <em>производительность</em> обработки данных. Обычно вложенный RAID используется там, где нужно максимально сбалансировать показатели надёжности и производительности. Изначально вложенный RAID разрабатывался как средство повышения производительности избыточных RAID, таких как RAID-1 или же для повышения надёжности производительных RAID, таких как RAID-0.</p>
<p style="text-align: justify;">Вложенный RAID можно представить в виде приготовления блюда. Например, вы берёте RAID-1, затем добавляете к нему RAID-5, смешиваете получившееся с RAID-0 для повышения производительности и получаете готовое &laquo;блюдо&raquo;. Чуть позже мы с вами ещё вернёмся к этой метафоре, когда будем рассматривать технические подробности реализации программного RAID под Linux.</p>
<p style="text-align: justify;">Вложенные уровни RAID обычно обозначаются набором цифр, а не одиночной цифрой, как это принято в базовых уровнях RAID. Чаще всего вложенный RAID помечается двухразрядным числом и записывается как <em>&laquo;RAID-X+Y&raquo;</em> или <em>&laquo;RAID-XY&raquo;</em> (в случае использования двух уровней), где X и Y&nbsp;&mdash; уровни базовых RAID, которые использовались при построении вложенного уровня. Например, вложенный уровень может записываться как &laquo;RAID-10&raquo;. В этом случае X=RAID-1, а Y=RAID-0. В описанной схеме нумерации вложенных уровней RAID первое слева число, X&nbsp;&mdash; это номер нижнего уровня. Таким образом, в приведённом примере записи RAID-10, на нижнем уровне будет находится RAID-1.</p>
<p style="text-align: justify;">Вторая слева цифра в двухзначном номере вложенного RAID определяет номер верхнего уровня. В случае с RAID-10, где нижним уровнем является RAID-1, верхним уровнем становится RAID-0. Таким образом, RAID-0 работает поверх RAID-1 (производительность поверх надёжности).</p>
<p style="text-align: justify;">Порядок следования цифр в номере гибридного RAID, как вы уже поняли, очень важен. RAID-X+Y это не тоже самое, что RAID-Y+X. RAID-Y+X строится, начиная с RAID-Y внизу, заканчивая RAID-X наверху. В RAID-X+Y всё строится с точностью, но наоборот: X&nbsp;&mdash; снизу, Y&nbsp;&mdash; сверху.</p>
<p style="text-align: justify;">Вы можете подумать, что RAID-10 и RAID-01, должно быть, одинаковы в плане показателей производительности и надёжности. В какой-то степени это предположение истинно, эти два гибридных уровня действительно имеют примерно одинаковые характеристики. Однако между ними обнаруживается огромная разница в случаях, когда дело доходит до выхода гибридного массива из строя. Речь идёт о количестве дисков, с которых необходимо считать и на которые нужно произвести запись в процессе регенерации. В последующих заметках мы с вами рассмотрим этот момент.</p>
<p style="text-align: justify;">Ну и напоследок. Вы вовсе не обязаны ограничиваться двумя базовыми уровнями при построении гибридного RAID. Вы можете строить настолько глубокий вложенный RAID, насколько позволит программное и/или аппаратное обеспечение, которое вы используете. Так что, никто не мешает вам соорудить что-нибудь наподобие RAID-XYZ.</p>
<p style="text-align: justify;">В следующей статье мы рассмотрим принцип построения и работы RAID-0+1.</p>
<p style="text-align: right;">Источник: <a href="http://www.linux-mag.com/id/7928/">linux-mag.com</a></p>
<hr />
<p>Всем поклонникам популярной мобильной платформы от Apple посвящается. Большая коллекция <a href="http://www.appinside.ru/">приложений для iPhone</a> и iPad, обзоры популярных приложений, бесплатные игры. Всё это&nbsp;&mdash; на сайте appinside.ru!</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2011/vvedenie-vo-vlozhennyj-raid/' addthis:title='Введение во вложенный RAID' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2011/vvedenie-vo-vlozhennyj-raid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Что такое inode</title>
		<link>http://www.ashep.org/2011/chto-takoe-inode/</link>
		<comments>http://www.ashep.org/2011/chto-takoe-inode/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 17:43:50 +0000</pubDate>
		<dc:creator>ashep</dc:creator>
				<category><![CDATA[Общее]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[inode]]></category>
		<category><![CDATA[файловая система]]></category>

		<guid isPermaLink="false">http://www.ashep.org/?p=2416</guid>
		<description><![CDATA[На просторах Сети часто-густо можно встретить обсуждения работы файловых систем. В подобных дискуссиях часто можно встретить термин &#171;inode&#187;&#160;&#8212; индексный дескриптор. Многие новички задаются вопросом: &#171;что же такое, этот inode?&#187;, поскольку без понимания значения этого термина они не могут вникнуть в суть обсуждения тех или иных тонкостей работы файловых систем. В этой заметке мы с вами [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2011/chto-takoe-inode/' addthis:title='Что такое inode' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">На просторах Сети часто-густо можно встретить обсуждения работы файловых систем. В подобных дискуссиях часто можно встретить термин <em>&laquo;inode&raquo;</em>&nbsp;&mdash; <em>индексный дескриптор</em>. Многие новички задаются вопросом: &laquo;что же такое, этот inode?&raquo;, поскольку без понимания значения этого термина они не могут вникнуть в суть обсуждения тех или иных тонкостей работы файловых систем. В этой заметке мы с вами попробуем разобраться, что же такое inode и с чем её едят. Автор не является экспертом в области файловых систем, поэтому будет рад любым конструктивным замечаниям и поправкам.</p>
<img class="size-full wp-image-2424 aligncenter" title="Filesystem" src="http://www.ashep.org/wp-content/uploads/2011/06/filesystem.jpg" alt="" width="314" height="302" /><br />
<span id="more-2416"></span>
<div style="margin-bottom: 5px; text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-1230167300848028";
/* 468x60 */
google_ad_slot = "1268117829";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<p style="text-align: justify;">Файловые системы, как правило, состоят из двух частей:</p>
<ol>
<li>метаданных, т. н. данных о данных;</li>
<li>самих данных.</li>
</ol>
<p style="text-align: justify;">Первый пункт звучит довольно забавно: &laquo;данные о данных&raquo;, однако он является ключевым моментов в работе файловых систем. Если быть более точным, метаданные содержат информацию о данных, хранящихся на диске, таких как имена файлов, время их создания, права доступа и так далее. Роль метаданных крайне важна, поскольку без них файловая система представляла бы из себя лишь набор байт, в котором невозможно было бы определить что и где физически находится на диске.</p>
<h3 style="text-align: justify;">Индексный дескриптор</h3>
<p style="text-align: justify;">В общем случае в файловых системах операционных систем *NIX с каждым файлом и каталогом связан соответствующий дескриптор&nbsp;&mdash; inode, который обычно обозначается  целым числом и в котором хранятся метаданные. Происхождение термина &laquo;inode&raquo; точно неизвестно. Из <a href="http://ru.wikipedia.org/wiki/Inode">статьи на Википедии</a>, согласно словам Дениса Ритчи, одного из первых разработчиков UNIX-систем:</p>
<blockquote>
<p style="text-align: justify;">Честно говоря, я мало об этом знаю. Это был всего лишь термин, который мы начали использовать. &#39;Индекс&#39;, как я полагаю, использовался из-за несколько необычной структуры файловой системы, хранившая информацию о доступе к файлам в плоском (двумерном) массиве на диске, а вся информация об иерархии каталогов хранилась отдельно. Таким образом, и-номер являлся индексом в этом массиве, и-нод&nbsp;&mdash; выбранным элементом массива. (Приставка &#39;и-&#39; использовалась в первой версии руководства; со временем дефис перестали употреблять).</p>
</blockquote>
<p style="text-align: justify;">Каким образом создаются дескрипторы и вообще, создаются ли они, зависит от реализации конкретной файловой системы. Некоторые файловые системы создают дескрипторы в момент создания файловой системы, в результате располагая фиксированным количеством индексных дескрипторов, то есть фиксированным пределом количества файлов, хранящихся в ФС.  Так, например, работает файловая система <em>Ext-3</em>. Таким образом получается, что вы в какой-то момент не сможете создать файл, даже если свободного пространства на диске будет достаточно. Такое случается крайне редко, но, тем не менее, не исключено. Если, используя такую файловую систему, вам понадобиться больше индексных дескрипторов, вам придётся заново создавать ФС, средств увеличить количество inode без потери данных нет.</p>
<p style="text-align: justify;">Одним из способов обойти вышеописанное поведение ФС являются <a href="http://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D1%82%D0%B5%D0%BD%D1%82">экстенты</a> и/или динамическое выделение индексных дескрипторов. Такие системы могут динамически расширяться и/или увеличивать количество inode.</p>
<p style="text-align: justify;">Индексные дескрипторы не являются чем-то мистическим, они являются частью Linux. Вы можете увидеть их присутствие, например при помощи команды <em>&#39;ls -i&#39;</em>:</p>
<pre>laytonjb@laytonjb-laptop:~/Documents/FEATURES/STORAGE088$ ls -il
total 1024
8847368 -rw-r--r-- 1 laytonjb laytonjb 115020 2011-04-24 07:33 Figure_1.png
8847366 -rw-r--r-- 1 laytonjb laytonjb  39200 2011-04-24 07:38 Figure_2.png
8847361 -rw-r--r-- 1 laytonjb laytonjb  30691 2011-04-24 07:40 Figure_3.png
8847367 -rw-r--r-- 1 laytonjb laytonjb  28835 2011-04-24 07:42 Figure_4.png
8847363 -rw-r--r-- 1 laytonjb laytonjb 115103 2011-04-24 07:43 Figure_5.png
8847362 -rw-r--r-- 1 laytonjb laytonjb 125513 2011-04-24 07:44 Figure_6.png
8847365 -rw-r--r-- 1 laytonjb laytonjb  77831 2011-04-24 07:44 Figure_7.png
7790593 -rw-r--r-- 1 laytonjb laytonjb  15632 2011-04-26 19:40 storage088.html
8847364 -rw-r--r-- 1 laytonjb laytonjb    183 2011-04-24 07:33 text1.txt
3089319 drwxr-xr-x 2 laytonjb laytonjb   4096 2011-04-24 07:54 TRIM_WORKS
5554211 -rw-r--r-- 1 laytonjb laytonjb 449110 2011-04-24 07:52 trim_works.tar.gz</pre>
<p style="text-align: justify;">Числа в первом столбце и есть номера inode. Также обратите внимание на каталог "TRIM_WORKS”, который тоже имеет номер inode, связанный с ним.</p>
<p style="text-align: justify;">Linux, которая в большинстве реализаций является POSIX-совместимой ОС, требует обязательного наличия атрибутов файла, располагающегося на ФС, в частности:</p>
<ul>
<li>размер файла в байтах;</li>
<li>идентификатор устройства;</li>
<li>идентификатор владельца файла;</li>
<li>идентификатор группы-владельца файла;</li>
<li>режим доступа к файлу, определяющий кто и какой доступ имеет к файлу;</li>
<li>дополнительные системные и пользовательские флаги, которые дополнительно могут ограничивать доступ к файлу и его модификацию;</li>
<li>таймштампы, отражающие время модификации индексного дескриптора (<em>ctime, changing time</em>), время модификации содержимого файла (<em>mtime, modification time</em>) и время последнего доступа к файлу (<em>atime, access time</em>);</li>
<li>счётчик для учёта количества жёстких ссылок на файл;</li>
<li>указатели на физические блоки диска, в которых хранится содержимое файла (об этом ниже).</li>
</ul>
<p style="text-align: justify;">Любая POSIX-совместимая Linux ОС должна хранить указанную информацию в индексных дескрипторах или же быть способной представлять эту информацию так, будто бы она хранится в них. Например, <a href="http://www.ashep.org/goto/http://ru.wikipedia.org/wiki/ReiserFS">ReiserFS</a> не использует традиционные inode. Вместо этого для хранения метаданных  в ReiserFS используется комбинированное <a href="http://www.ashep.org/goto/http://ru.wikipedia.org/wiki/B%2B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D1%8C%D1%8F">B&plusmn;дерево</a>, к роли ключей которого выступают универсальные идентификаторы объектов. Однако при запросе информации ReiserFS предоставляет её в POSIX-совместимом виде.</p>
<h3 style="text-align: justify;">Структура указателя индексного дескриптора</h3>
<p style="text-align: justify;">Согласно POSIX, в файловой системе есть элемент, называемый <a href="http://en.wikipedia.org/wiki/Inode_pointer_structure">inode pointer structure</a>&nbsp;&mdash; <em>структурой указателя индексного дескриптора</em>. Как говорилось выше, inode хранит метаданные, включая список блоков на диске, в которых располагается непосредственно содержимое файла. Структура указателя индексного дескриптора используется для извлечения списка дисковых блоков, ассоциированных с файлом.</p>
<p style="text-align: justify;">Согласно описанию с Википедии, эта структура хранит 11 или 13, а в самых современных ФС&nbsp;&mdash; 15 указателей. Назначение этих указателей следующее:</p>
<ul>
<li>12 указателей используются для хранения номеров блоков, содержащих непосредственно данные файла, и называются <em>прямыми указателями</em>;</li>
<li>один <em>одиночный косвенный указатель</em>. Этот указатель указывает на блок прямых указателей, хранящих данные файла;</li>
<li>один <em>двойной косвенный указатель</em>. Указывает на блок одиночных косвенных указателей;</li>
<li>один <em>тройной косвенный указатель</em>. Указывает на блок двойных косвенных указателей.</li>
</ul>
<p>Чтобы вышеописанное было проще понять, взгляните на иллюстрацию, взятую с Википедии:</p>
<p><img class="size-full wp-image-2421 aligncenter" title="Ext2-inode" src="http://www.ashep.org/wp-content/uploads/2011/06/Ext2-inode.gif" alt="" width="456" height="286" /></p>
<p style="text-align: justify;">На рисунке выше вы можете видеть прямые, одиночные косвенные и двойные косвенные блоки. Тройные косвенные блоки одним уровнем глубже двойных.</p>
<h3 style="text-align: justify;">Заключение</h3>
<p style="text-align: justify;">Концепция inode является фундаментальной частью *NIX , а также других ОС. По своей сути смысл inode является очень простым для понимания&nbsp;&mdash; это всего лишь метаданные о данных. То есть, он хранит полезную информацию о данных, хранящихся на диске. Такой информацией является, например, идентификатор владельца файла, идентификатор его группы-владельца, права доступа к файлу, а также различные временные штампы. Таким образом, когда вы используете, например, команду &#39;ls&#39;, она извлекает информацию о метаданных файлов и каталогов из их индексных дескрипторов.</p>
<p style="text-align: justify;">Некоторые файловые системы, например Ext3, создают все индексные дескрипторы в момент создания файловой системы. Такой подход может быть не совсем удачным, поскольку вы не сможете создавать новые файлы в случае, если все доступные inode будут использованы, даже если на диске достаточно места. Чтобы избежать подобных ограничений, можно использовать файловые системы вроде Ext4 и XFS, которые создают индексные дескрипторы по мере необходимости.</p>
<p style="text-align: justify;">Понимание назначения inode может оказаться весьма полезным для читателя. Вооружённые даже базовыми знаниями об inode, вы сможете лучше оценивать возможности различных файловых систем при выборе подходящей для вашей задачи.</p>
<p style="text-align: right;">Источник: <a href="http://www.ashep.org/goto/http://www.linux-mag.com/id/8658/">linux-mag.com</a></p>
<hr />
<p style="text-align: justify;">Давно ищете хорошего сотрудника в свой бизнес и уже соврешенно сбились с ног? Подобрать и подготовить хорошего <a href="http://www.frigate.su/ru/services/454/">продавца</a> для вас смогут в агенстве &laquo;Фрегат&raquo;. Кстати, тем, кто ищет хорошую работу, тоже будет полезно обратиться в агенство.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.ashep.org/2011/chto-takoe-inode/' addthis:title='Что такое inode' ><a class="addthis_button_twitter"></a><a class="addthis_button_evernote"></a><a class="addthis_button_facebook"></a><a class="addthis_button_vk"></a><a class="addthis_button_mymailru"></a><a class="addthis_button_moikrug"></a><a class="addthis_button_compact"></a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ashep.org/2011/chto-takoe-inode/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

