книги хакеры / журнал хакер / 107_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
Хакер
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.ProBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Рис.1. Диспетчер задач, вкладка Processes
мощностипроцессора,быстродействиядисковойподсистемыит.д.Вслепую нетак-топростоопределить,гдепроисходитзатыкикакойименнокомпонент внаибольшейстепениответственензапроизводительность.Авотсобравданныесосчетчиковпроизводительностизанекотороевремя(например,задень илинеделю),мысможемточновыяснить,чтопроисходитвнутрисервера.
ГоворитьмыбудемобанглийскойверсииWin2k3(другойвраспоряжении мыщъх’апростонет),приводя«родные»названиясчетчиков.Пользователямрусскойверсиипредлагаетсясыгратьвувлекательнуюигру«Как этоназывалосьворигинале?!»,ночитателиунассосмекалкой,иктаким передрягамимнепривыкать,темболеечтобольшинствоназванийпереведеноправильноиобратныйпереводбольшойпроблемынесоставит.
СчеТчики ПРОиЗВОДиТельНОСТи В ДиСПеТчеРе ЗАДАч
Диспетчерзадач,вызываемыйпо<Alt-Ctrl-Del>или<Ctrl-Shift-Esc>,
позволяетотображатьпарудесятковважнейшихсчетчиковпроизводительностидлякаждогоизпроцессов(вкладкаProcesses,смотририс.1). Добавление/удалениесчетчиковосуществляетсячерез«ViewSelect Columns».КнаиболееполезнымсчетчикамотносятсязагрузкаЦП(CPU Usage)иобъемвиртуальнойпамяти,потребляемойпроцессом(Memory Usage),чтопозволяетбыстронаходитьпроцессы,жрущиеЦПипамять. ВкладкаPerformance(смотририс.2)рисуеткрасивыеграфикизагрузки ЦПиобщегоколичествавыделеннойпамяти,чтовместесдругойважной информациейпозволяетоценитьсреднюю/мгновеннуюнагрузкунасервер.Соответственно,вовкладкеNetworkingможнонайтиграфикобщей загруженностисетиповсеминтерфейсам(смотририс.3).
СчеТчики ПРОиЗВОДиТельНОСТи В кОНСОли УПРАВлеНиЯ
«Мониторпроизводительности»,вызываемыйчерез«Start AdministrativeToolsPerformance»(perfmon.msc),представляетсобой основноесредстводляработысосчетчикамипроизводительности,отображаяихзначенияввидеграфика(смотририс.4),диаграммы(смотри рис.5)илитаблицы(смотририс.6).Такжеимеетсявозможностьзаписи историизначенийвлог-файл,созданияисториисобытийилиопределен- нойреакциинадостижениесчетчикомнекоторогопорога(например, запускапрограммыилиотправкиуведомленияадминистратору).Всеэти действияосуществляютсячерезветвьPerformanceLogs-n-Alerts,располо- женнуювлевомокне.Интуитивнопонятныйинтерфейснесоздаетникакихпроблем,и«Мониторпроизводительности»осваиваетсязанесколько минутдажебезчтениядокументации.
ОБЗОР ВАжНейшиХ СчеТчикОВ ПРОиЗВОДиТельНОСТи
Счетчиковпроизводительности—тысячи,ирассказатьокаждомизних нетникакойвозможности.Некоторуюинформациюможнонарытьв
Рис.4. «Монитор производительности», отображение счетчиков в виде графика
базезнанийиMSDN,однакоMicrosoftдаетлишьформальноеописание, невдаваясьвподробности.Междутеминтерпретацияпоказаний—дело непростое,итутестьмножествотонкостей,незнаниекоторыхможетпривестикгрубымошибкам.Мыщъхотобралсдесятокважнейшихсчетчиков ирастерзалихвпухипрах.
Processor: % Processor Time
Отображаетзагрузкупроцессоравпроцентах,номалоктоизадминистраторовзадумывается,впроцентахотчего.Каждомупотокуотпускается определенныйквантвремени,поистечениикоторогопланировщикпринудительноотберетунегоуправление,передаваяегопотоку,ближевсех стоящемувочереди(планировкаочередипотоков—отдельнаяпесня,ив различныхсистемахонареализованапо-разному).Однакопотокможет вернутьнеизрасходованныйостатоккванта,обратившиськпланировщи- ку,например,черезAPI-функциюSleep(0).
СчетчикProcessorTimeнасамомделеизмеряетнезагрузкупроцессоракак таковую,аготовностьпланировщикапредоставитьуправлениепотокупо первомутребованию.Правильноспроектированнаяпрограммапрактическинезагружаетпроцессор,дажееслизанимаетсятакими«тяжелыми» операциями,каксжатие,криптографияит.д.Акриваяпрограммадает 100%-нуюзагрузкунезависимоотмощностипроцессора(дляэтогоей достаточнопростовойтивдлинныйцикл—ибаста).
Таким образом, 100%-ная загрузка ЦП указывает на наличие одной или нескольких кривых программ. Переход на более мощный ЦП не решает проблемы, и тормоза остаются. В таком случае необходимо найти процесс, который грузит ЦП (удобнее всего это делать через диспетчер задач или систему Alert «Монитора производительности»), и убить его, после чего деинсталлировать соответствующее ему приложение и воспользоваться более корректно написанным программным пакетом. Если же это невозможно, остается либо мириться с тормозами, либо приобрести многопроцессорную машину, тогда загрузка со 100% сразу упадет до 50%. Кстати говоря, на HT-процессо- рах 50%-ная загрузка равносильна 100%, поскольку загрузка одного виртуального процессора парализует работу другого со всеми вытекающими отсюда последствиями.
Внормальныхжеусловияхсредняязагрузкапроцессоранедолжнапревышать85%.Впротивномслучаенеобходимонаращиватьчастотупроцессора/системнойшины/оперативнойпамятиилижеувеличиватьколичествокамней,естественно,убедившись,чтомыимеемделосреальной,ане липовойзагрузкойЦП,вызваннойкривымПО.Аубедитьсявэтомочень просто:слегкатормозимпроцессор(большинствосовременныхматерей позволяетэтоделать«налету»)исмотрим:еслизагрузканеизменилась, значитвиноватоПОиЦПтутсовсемнепричем.
xàêåð 11 /107/ 07 |
149 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис.2. Диспетчер задач, вкладка Performance
System: Processor Queue Length
Длинаочередипотоков,простаивающихвожиданиипроцессора.Естественно,чемдлиннееочередь,темнижепроизводительность.Еслисреднестатистическаядлинаочередипревышает10потоков,имеетсмыслзадуматьсяодобавлениивсистемуновыхпроцессоров,чтобыповыситьпроизводительность. Болеедешевоерешение—увеличитьтаковуючастоту,чтобыочередьпотоков продвигаласьбыстрее,аеедлина,соответственно,сокращалась.Однакооно работаеттольковтехслучаях,когдавсепрограммыделятсянеиспользованнымиквантамивремени,впротивномслучаедлинаочередиостанетсяпрежней, посколькудлительностьквантанезависитоттактовойчастоты.
Server Work Queues: Queue Length
Рабочаяочередьсервера.Чемкороче,темлучше.Еслидлинаочереди меньшечетырехзапросов,серверначинаетреальнотормозить,время откликаувеличиваетсяиклиентычувствуютсебякрайненекомфортно. Узкимместомможетбытьипроизводительностьдисковойподсистемы,и недостаточнаячастота(иликоличество)процессоров,инехваткаоперативнойпамяти,поэтомуоднозначныхрекомендацийпоустранениюэтой проблемы,увы,несуществует.
Memory: Page Faults/Sec
Количествоотказовстраницвсекунду.«Отказомстраницы»называется ситуация,когдапроцессуказываетнастраницувиртуальнойпамяти, отсутствующуюврабочемнаборе.Внекоторыхруководствахвстречается утверждение,чтоприизбыткеоперативнойпамятиотказовстраницвообщеневозникает,ноэтонеболеечемрасхожеезаблуждение.
Призапускеисполняемогофайла(подключениидинамическойбиблиотеки)системагрузитеговпамятьнесразу,апонеобходимости,частями. Припервомобращениикстранице(длинакоторойвбольшинствеслучаев равна4Кб)возникаетfaultисистемасчитываеткусочекфайлавпамять. Памятьподстектакжевыделяетсянесразу.Навершинестекарасполагаетсяспециальная«сторожевая»страница,приобращенииккоторой генерируетсяотказ,указывающийнанеобходимостьвыделениядополнительногостековогопространства.
Такимобразом,наличиеотказовстраниц—этонетольконормальное,но ивообщенеизбежноеявление,котороеможетбытьнесвязаносфайлом подкачки.Однакоесливсекундунаблюдаетсяпятьилиболееотказов,то, скореевсего,мыимеемделосхроническимнедостаткомоперативной памяти,увеличениеобъемакоторойпозволитсущественноповыситьпро-
Рис.3. Диспетчер задач, вкладка Networking
изводительность.Каквариант—можнооптимизироватьфайлподкачки, нообэтомниже.
Memory: Pages/Sec
Интенсивностьобменасфайломподкачки(страницвсекунду).Сюдаже входятфайлы,проецируемыевпамять(скоторымиработаютнекоторые программы),исамиисполняемыефайлыидинамическиебиблиотеки, трактуемыекакфайлыподкачки,доступныетольконачтение.Следовательно,дажееслиотключитьподкачку,установивегоразмервноль,этот счетчиквсеравнопродолжитупорноработать.Такчтотрактоватьего показаниянужносумом.Еслиинтенсивностьобменасфайломподкачки превышает10страницвсекунду,дляувеличенияпроизводительности необходимолибодобавитьоперативнойпамяти,либоперенестифайл подкачкинаотдельныйдиск,желательноподключенныйкдругомуIDEконтроллеру(поумолчаниюфайлподкачкирасполагаетсянасистемном диске,чтонеестьхорошо).Приинтенсивностиобменав60иболеестраницвсекундурекомендуетсяиспользоватьпрограммныйилиаппаратный RAIDуровня0.Чембольшедисковмызадействуем,тембыстреебудет происходитьобменданными.Какминимумнеобходимовыделитьодин дискдлякаждых60страниц.Тоестьприинтенсивностиобменав180 страницвсекундунамнеобходимопокрайнеймеретридиска,накоторых будетразмещентолькофайлподкачкиибольшеничего.Однакопроизводительностьвсеравнобудетоставатьсянизкойдотехпор,покамыне установимдополнительнуюоперативнуюпамять,такчтоRAID-массив можнорассматриватьлишькаквременноерешениепроблемы.Исключениесоставляютслучаи,когдатребуемоеколичествооперативнойпамяти простонеподдерживаетсяжелезом(точнее,ееподдержкаобходится чересчурдорого)илучшемиритьсяснизкойпроизводительностью,чем вкладыватьогромныесредствавбыстродействие.
Memory: Available Bytes
Количестводоступнойфизическойпамятивбайтах.Вомногихруководствахутверждается,чтоеслифизическойпамятинет,значитвсеуходитв свопимыимеемтормоза,аеслиналичествуетхотябынесколькодесятков мегабайт,значитфизическаяпамятьещенеисчерпана,подкачкане используетсяисервершуруетскрейсерскойскоростью.Насамомделеэто оченьбольшоеупрощение.Допустим,мыимеем1ГбRAM,апотребности серверасоставляют10Гб.Вопрос:какоеколичествофизическойпамяти покажетсчетчик?Ответ:возможно,инольбайт,нокрайнемаловероят-
150 |
xàêåð 11 /107/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Рис.5. «Монитор производительности», отображение счетчиков в виде диаграммы
но.Предположим,чтопроцессосвободил10Мб(например,потомучтоот сервераотключилсяклиент).ЕсливсяэтапамятьразмещаласьвRAM,то количествосвободнойфизическойпамятиувеличитсяна10Мб,притом что~9Гббудутболтатьсявфайлеподкачки.Еслисистемаинтенсивно выделяет/освобождаетбольшоеколичествопамяти,топоказанияэтого счетчикамогутдостигать25%иболееотобщегообъемафизической памяти,ноэтоещенезначит,чтопамятидостаточно,инужносмотреть наколичествообращенийкфайлуподкачки,чтоописановыше.
Memory: Committed Bytes
Общееколичествовыделеннойпамятивбайтах.Еслионопревышаетобъемфизическойпамяти,частьстраницвытесняетсявфайлподкачки,что, какправило,приводиткснижениюпроизводительности.Есликоличество выделеннойпамятинепревышаетразмерфизической,тосерверлетает нафорсаже,иникакихособыхкомментариевтутнетребуется.Ноэто идеализированнаяситуация,ивреальнойжизнипамятисплошьирядом оказываетсянедостаточно.Сампосебеобъемвыделеннойпамятиниочем неговорит!Вытеснениередкоиспользуемогокода/данныхвсвоппракти- ческинеснижаетпроизводительности,итутопять-такинужносмотретьна интенсивностьобменасфайломподкачки.
PhysicalDisk: Current Disk Queue Length
Длинаочередизапросовначтение/записькфизическомудиску.Чемкороче,темлучше.Есливочередипостояннонаходитсядваиболеезапросов, тоэтонеестьхорошоидляувеличенияпроизводительностирекомендуетсяобзавестисьпрограммнымилиаппаратнымRAID’омилииспользовать болеебыстрыедиски.Каквариант—можнореорганизоватьразмещение программиданных,распределивихпоразнымразделам,илипросто запуститьдефрагментатор.
PhysicalDisk: % Disk Time
Времязанятостидиска,втечениекоторогоонобрабатывалзапросына чтение/запись,впроцентах.Еслизагруженностьдискадостигает100%, тообразуетсяконкретныйзатор,требующийпереходанаRAID-массивы, использованияболеебыстродействующихвинчестеровилидефрагментации.Загрузкаменее80%считаетсявполнедопустимой.
LogicalDisk: % Free Space
Объемсвободногодисковогопространствавпроцентах.Еслидискзапол-
Рис.6. «Монитор производительности», отображение счетчиков в виде таблицы
няетсяна80%иболее,файловаясистемаNTFSвсилусвоихконструктивныхособенностейначинаетконкретнотормозить,аеслисвободногопространстваостаетсяменее10%,происходитнеобратимаяфрагментация $MTF-файла,хранящегоданныеобовсехостальныхфайлахнадиске.То естьеслидискхотябыоднаждыокажетсязаполненнымболеечемна90%, рекомендуетсяскопироватьданныенадругойноситель,отформатировать егоивернутьданныеобратно.Или,каквариант,установитьв«Мониторе производительности»Alertнаэтотсчетчикипризаполнениидискана80% начатьудалятьвременныефайлы,кэшилиоправлятьsmsсуведомлением.
Network Interface: Bytes Total/sec
Загруженностьсетевогоинтерфейсавбайтахвсекунду.Чемближеона подбираетсякегопропускнойспособности,темхужедляпользователей. Ксожалению,втакойситуацииоченьмалочтоможнопредпринять(переходсо100 мегабитногоEthernet’aнагигабитныйнепредлагать).Разве чтопересмотретьполитикудокументооборота,напримерперенестичасть файловссерверанарабочиестанцииилиустановитьещеодинсервер,но этоужетребуетсерьезныхвложений.
Network Interface: Output Queue Length
Длинаочередизапросовксетевомуинтерфейсу.Видеале,никакойочере- дибытьнедолжно,но1-2запросасчитаютсявполнеприемлемыми,авот дальнейшийросточередивызываетощутимоепадениепроизводительности.Причинойможетбытьинедостаточнаяпропускнаяспособность сетевыхканалов,имедленнаяобработказапросовнасервере,обусловленнаятормознутостьюпроцессора,нехваткойпамятиит.д.Такчтоуниверсальныхрешенийтутнет,инужносмотретьнаостальныесчетчики производительности,описанныевыше.
Заключение
Работа со счетчиками производительности требует глубоких знаний в области устройства операционной системы, и слепое следование рекомендациям обычно приводит к неоправданному наращиванию аппаратных мощностей, а сервер все равно продолжает тормозить.
Обидно? Обидно! Но что поделаешь. Интерпретация показаний счетчиков производительности редко бывает однозначна, и, прежде чем принимать какое-то решение, рекомендуется проштудировать «Внутреннее устройство Windows» Руссиновича и «Современные операционные системы» Таненбаума.z
xàêåð 11 /107/ 07 |
151 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
Хакер.Pro
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
|
|
|
|
X |
|
|
|
|
|
|||
|
|
|
|
|
- |
|
|
|
|
|
d |
|
||
|
|
|
|
|
F |
|
|
|
|
|
|
t |
|
|
|
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
r |
||
|
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
|
|
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
телефоннуюсеть
asterisk: самый попУлярный сервер ip телефонии
Несмотря на развитие различных систем обмена информацией, таких как электронная почта и службы мгновенного обмена сообщениями, обычный телефон еще долго будет оставаться самым популярным средством связи. Ключевым событием в истории телекоммуникаций и интернета стало появление технологии передачи голоса поверх IP-сетей, поэтому за последние годы изменилось само понятие телефона. Использование VoIP современно, удобно, дешево, так как можно объединить удаленные офисы, даже не прибегая к услугам операторов телефонной связи. Какие еще доводы нужны для того, чтобы поднять свой сервер IP-телефонии?
ПРОекТ ASTeriSk
Поадресуen.wikipedia.org/wiki/List_of_SIP_softwareнаходитсяодиниз самыхбольшихсписковсерверовиклиентовSIP(протоколустановления сессиидляработыпользовательскихсеансов,включающихпередачу видеоданныхиголоса).Вэтомсписке10серверов,распространяемых подсвободнойлицензией,ноадминистраторычащевсегопредпочитают AsteriskIP-PBX(www.asterisk.org).Этотпроектвозник,можносказать, случайно—егосоздательМаркСпенсер(MarkSpencer;кстати,Gaim/ Pidginтожеегорукдело)неимелдостаточноденег,чтобыкупитьдлясвоей компанииобычнуюАТС,ипотомувынужденбылсоздаватьегософтовую реализацию.Открытостькодаспособствовалабыстромуроступопулярностиновогопродуктакаксредиразработчиков,такисредипотребителей.ВыпускаетсяAsteriskподдвойнойлицензией.КромеGNUGPLвозможносозданиезакрытыхмодулей,содержащихпроприетарныйкод.Такой подходпозволяетвключитьподдержкузакрытыхкодековиоборудования. Несмотрянасвоюсофтовость,AsteriskобладаетвсемифункциямиклассическойАТСидажебольше.Воттольконекоторыеизних:центробработки вызовов,голосоваяпочта,возможностьпроведенияконференций,чтов
итогеделаетегомощнойилегкорасширяемойплатформойдлясоздания телекоммуникационногосервисалюбогомасштаба.Поддерживаются практическивсепопулярныепротоколыIP-телефонии(SIP,H.323,MGCP, Skinny/SCCP,GoogleTalk,Skype),собственныйIAXинекоторыедругиедля работывидеоифакса.КромеобслуживаниялокальныхклиентовAsterisk умеетпередаватьголосовойтрафикмеждусерверами.Естьмодулидля сопряжениясаналоговыми(FXO/FXS)ицифровыми(Т1/E1)линиями. Еслифункциональностинедостаточно,длянаписаниядиалпланаможно воспользоватьсясобственнымязыкомAsterisk,создатьмодульнаCи либоиспользоватьуниверсальныйинтерфейсинтеграциисвнешними системамиобработкиданныхAGI.Чтобыупроститьразработкумодулей, предназначенныхдлярешенияразличныхзадач,предложенонесколь-
коуровнейAPI(channel,application,codec,fileformat).Поэтомуновые возможности(например,кодеки)появляютсявAsteriskоченьбыстрои ихвнедрениепроходитбезболезненно.Кромеэтого,модульностьAsterisk позволяетадминистраторамподключатьтольконеобходимыефункции, модифицируясистемуподсвоинужды.СерверAsteriskможноустановить накомпьютерах,работающихподуправлениемGNU/Linux,Free/Net/
152 |
xàêåð 11 /107/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
Хакер
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.ProBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Пакеты Ubuntu
OpenBSD,MacOSX/Darwin,Open/Solaris.Клиентыдоступныпракти-
ческидлявсехсистем,втомчислеиWindows.Исключениесоставляют драйверыZaptelиISDN-устройств,реализациикоторыхпокаестьнедля всехплатформ.
УСТАНОВкА ASTeriSk
Ксожалению,четкихуказанийнасчетаппаратныхсредствдатьневоз- можно—слишкоммноготонкостейинюансов,поэтомузапримерными конфигурациямикомпьютеровотсылаюнастраницусайтаvoip.rus.net «ПроизводительностьAsterisk-систем»(voip.rus.net/tiki-index.php?page =Asterisk+dimensioning).Еслитвояцель—знакомствосAsterisk,можно использоватьодиниздистрибутивов,вкоторыхужеимеетсянастроенный иполностьюготовыйкработесервер:AsteriskNow(www.asterisknow.org), Trixbox(www.trixbox.org),VoIPonCD(www.voiponcd.com).
Asterisk присутствует в репозитариях пакетов большинства дистри-
бутивов. Так, в Ubuntu команда sudo apt-cache search asterisk выдает приличный список пакетов, после установки которых сразу же можно приступать к настройке. Но установка из репозитария имеет один минус — как правило, в нем версия Asterisk прилично отстает от текущей, которую можно скачать с официального сайта. Поэтому рассмотрим универсальный способ установки на примере того же Ubuntu, хотя все сказанное (за редким исключением) относится и к остальным дистрибутивам.
Устанавливаемпакеты,необходимыедлякомпиляции:
$ sudo apt-get install build-essential automake autoconf bison flex libtool libncurses5-dev libssl-dev
Крометого,настоятельнорекомендуетсяустановитьбиблиотекуlibpri, дажееслиненужнаподдержкаPrimaryRateISDN(первичныйтипцифровойсетисинтеграциейуслуг).Этоможносделатьлибочерезрепозитарий: sudoapt-getinstalllibpri1.2,либоиспользуяисходныетексты:
$ wget -c downloads.digium.com/pub/libpri/libpri- 1.4-current.tar.gz
Компиляциябиблиотекистандартна,поэтомунебудемнаэтомостанавливаться.
ТеперьскачиваемссайтаисходныетекстыAsteriskиконфигурируем:
$ wget -c downloads.digium.com/pub/asterisk/asterisk- 1.4.11.tar.gz
$ tar xzvf asterisk-1.4.11.tar.gz $ cd asterisk-1.4.11
$ ./configure --prefix=/usr
Сборка zaptel
Поокончанииработыскриптавконсолимыувидимэмблемупроектаи некоторуюинформациюонастройках.
$ make
$ sudo make install
Примечание:еслипроизводитсяустановкаверсии1.2,тодляподдержки форматаmp3передкомандойmakeследуетввести«makempg123»,версия 1.4уженикакнереагируетнаэтукоманду.
Послекомпиляции,помимовсегопрочего,будутустановленыследующие исполняемыефайлы:
1./usr/sbin/asterisk—демонсервераAsterisk,которыйиобеспечивает всюработу;
2./usr/sbin/safe_asterisk—скриптдлязапуска,перезапускаипроверки работысервераAsterisk;
3./usr/sbin/astgenkey—скриптдлясозданиязакрытогоипубличногоRSA ключейвформатеPEM,которыенеобходимыдляработыAsterisk.
Чтобыустановитьшаблоныконфигурационныхфайловидокументацию, набираем:
$ sudo make samples
Примерыконфигурационныхфайловбудутскопированыв/etc/asterisk. Есливэтомкаталогеуженаходятсяфайлыконфигурации,онибудутпереименованыспрефиксом«.old».Длясборкидокументациипотребуется пакетdoxygen;еслиегонет,устанавливаем:
$ sudo apt-get install doxygen $ sudo make progdocs
Аналогичноставимипакетсрасширениямиasterisk-addons(этотшагне обязательный,егоможносмелопропустить).Многиемодули,входящиев составэтогонабора,являютсяэкспериментальными.Ихстоитустанавли- вать,толькоеслитребуетсязаписьинформациивБД,поддержкаmp3-фай-
ловипротоколаooh323c(ObjectiveSystemsOpenH.323forC):
$ wget -c downloads.digium.com/pub/asterisk/asterisk- addons-1.4.2.tar.gz
$ tar xzvf asterisk-addons-1.4.2.tar.gz $ cd asterisk-addons-1.4.2
$ ./configure; make; sudo make install; sudo make samples
УстановкаAsteriskзакончена.Сначаларекомендуетсязапуститьсерверв отладочномрежимеипросмотретьвыводнаналичиеошибок:
xàêåð 11 /107/ 07 |
153 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Конфигурируем Asterisk
$ sudo /usr/sbin/asterisk -vvvgc
Еслиполучаемсообщение«AsteriskReady»иприглашениеконсолиуправления,значитвсевпорядке.Выходим:
*CLI> stop now
Теперьможнопереходитькдальнейшейнастройке.
Настройка поддержки интерфейсных карт
Если планируется подключение сервера Asterisk с помощью специальных интерфейсных плат к обычным телефонным сетям, следует позаботиться о наличии соответствующих драйверов, реализованных в виде модуля ядра. Но даже если таких устройств в компьютере нет, эти драйверы все равно рекомендуется установить. Дело в том, что во всех Zaptel-устройствах есть таймер, и для полноценной работы сервера IP-телефонии он является необходимым. Но если Zaptel-устройства под рукой нет, для его эмуляции можно использовать специальный драйвер
— ztdummy.
Изрепозитарияустанавливаемпакетыzaptel,zaptel-sourceисобираем модулиподсвоюсистему:
$ sudo apt-get install zaptel zaptel-source $ sudo module-assistant prepare
$sudo m-a -t build zaptel
В/usr/srcпоявитсяпакетzaptel-modules-*_i386.deb,устанавливаемегос помощьюdpkg.Послеэтогопроверяемработумодулейядра:
$ sudo depmod -a
$sudo modprobe ztdummy
Иеслинужнаподдержкаустройств:
$ sudo modprobe zaptel $ sudo modprobe wcfxo
Чтобыобеспечитьихавтоматическуюзагрузку,выполняемследующую команду:
$ echo ‘ztdummy\nzaptel\nwcfxo’ >> /etc/modules
СоздаемправиладляUDEV:
Информация о коннекте клиента
$sudomcedit/etc/udev/rules.d/51 zaptel.rules
KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"
KERNEL="zapchannel", NAME="zap/channel"
KERNEL="zappseudo", NAME="zap/pseudo"
KERNEL="zap0-9*", NAME="zap/%n"
ТакжеможноиспользоватьисходныетекстыилиCVS-версиюдрайвера. Присамостоятельнойкомпиляциипонадобятсязаголовочныефайлыядра (илиисходныетексты):
$ sudo apt-get install linux-headers-`uname -r`
Создадимсимволическуюссылку,чтобыAsteriskнашелисходникиядра:
$ sudo ln -s /usr/src/linux-headers-2.6.20-15 generic /usr/src/linux-2.6
Теперьполучаемпоследнююверсиюдрайверов:
$ cd /usr/src
$ wget -c downloads.digium.com/pub/zaptel/zaptel- 1.4 current.tar.gz
Компилируемиустанавливаем:
$ tar xzvf zaptel-1.4 current.tar.gz $ cd /usr/src/zaptel-1.2.17.1
$ ./configure $ make
$sudo make install
Ичтобывручнуюнесоздаватьконфигурационныефайлы:
$sudo make config
Послеэтойкомандыбудетсозданскриптдляавтоматическогозапускамодулей,
входящихвсоставZaptel,иконфиг/etc/default/zaptel(или/etc/sysconfig/ zaptel),вкоторомбудетуказано,какиемодулинеобходимозагружать.Рекомендуювэтомфайлеоставитьтольконеобходимое.Пробуемзагрузитьмодуль:
$ sudo modprobe ztdummy $ lsmod | grep ztdummy
154 |
xàêåð 11 /107/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
ztdummy |
6184 0 |
zaptel189860 1 ztdummy
Всенормально.Послеустановкивсистемепоявятсяещедвафайла:
1./etc/zaptel.conf—описываетконфигурациюаппаратногообеспечения;
2./etc/asterisk/zapata.conf—настройкисервераAsteriskдляработы драйвераZap-канала.
Подробныеуказаниядлявсевозможныхустройствданывдокументации. Нарусскомпоэтомуповодуможнопочитатьвдокументе«Конфигурация драйвераядраZaptel»(voip.rus.net/tiki-index.php?page=Asterisk+config +zaptel.conf).Нонаэтомнеостанавливаемся,впередиунасещемного работы.Посленастройкипроверяемработукомандойztcfg-vv.
Регистрация пользователей
Еслитеперьпосмотретьвкаталог/etc/asterisk,можнообнаружить большоеколичествофайлов.Норазмержурнальнойстатьипозволяетнам познакомитьсятолькоснекоторымиизних.Так,вasterisk.confуказаны каталоги,которыебудетзадействоватьAsteriskвовремяработы,расположениеивладелецсокета,используемогодляподключенияудаленной консолиуправления,атакжедефолтныепараметрызапускасервера.Некоторыекаталогивовремяустановкинесоздаются,этопридетсясделать вручную:
$ sudo mkdir -p /var/{run,log,spool}/asterisk
$ sudo adduser --system –-no-create-home asterisk $ sudo addgroup --system asterisk
Добавимпользователяasteriskвгруппуaudio:
$ sudo adduser asterisk audio
$ sudo chown asterisk:asterisk /var/run/asterisk
$ sudo chown -R asterisk:asterisk /var/{log,spool}/ asterisk
Дальшенасинтересуетфайлsip.conf,гдеопределяютсясерверыиклиенты SIP,скоторымибудетдружитьнашAsterisk.Каждыйизнихпредставленв файлеотдельнымблоком,которыйначинаетсясоглавления,заключенноговквадратныескобки.Параметроввsip.confдовольномного,ограни- чимсялишьдобавлениемSIP-аккаунта:
$sudomcedit/etc/asterisk/sip.conf
[grinder]
type=friend
host=dynamic
;defaultip=192.168.1.200
username=grinder
secret=password
language=ru
nat=no
canreinvite=no
context=office callerid=grinder <1234> mailbox=1234@office
;перед использованием параметра allow следует отключить все кодеки
disallow=all
;порядок следования кодеков не имеет значения allow=ulaw
allow=alaw
Полеtypeуказывает,чтоможетделатьэтотклиент.Призначенииuserему будетразрешенотолькоприниматьвходящиезвонки,приpeerонсможет толькозвонить,аfriendозначаетвседействиясразу,тоестьuser+peer.
ВполеhostуказываетсяIP-адрес,скоторогоразрешеноподключение этогоклиента.Еслионможетподключатьсяслюбогоадреса,указываем
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
>> ХАКЕР.PROto BUY |
|
|
|
m |
|||||
w Click |
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
host=dynamic.Ачтобывэтомслучаевызватьклиента,когдаонещене зарегистрирован,вdefaultipследуетзаписатьIP-адрес,покоторомуего всегдаможнобудетнайти.Вusernameиsecretуказываемлогинипароль, используемыеклиентомприподключении.ПараметрLanguageзадает кодязыкаприветствийиспецифичныенастройкисигналовтелефонов, которыеопределенывфайлеindications.conf.Приработеклиентаза NAT’омвсоответствующемполенеобходимоустановитьзначениеyes. ОтключениеcanreinviteзаставляетвесьголосовойRTP-трафикпрохо- дитьчерезAsterisk.ЕсликлиентыподдерживаютSIPre-invites,имможно разрешитьсоединятьсянапрямую,указавcanreinvite=yes.Полесontext определяетпланнабора,вкоторыйпопадаютвызовы,поступающиеот этогоклиента,аcallerid—строку,котораябудетвыводитьсяпризвонкеот клиента.Поумолчаниюиспользуетсяконтекстdefault,которыйберетвсе настройкиизконтекстаdemo.Последнийпредназначенисключительно длядемонстрационныхцелей,врабочейсистеменеобходимосоздатьсвой контекст.Полеmailboxуказываетнаголосовойящик1234вконтексте office.Остальныеклиентынастраиваютсяаналогично.
ПослеопределенияSIP-аккаунтовнашиклиентымогутрегистрироваться насервереAsteriskисовершатьисходящиевызовы.Чтобыунихбылавозможностьприниматьзвонки,следуетобратитьсякфайлуextensions.conf, вкоторомописываетсяпланнабора(Dialplan),распределяющийзвонкив системе.Здесьжеуказываютсявсеразрешенныерасширения.
$sudomcedit/etc/asterisk/extensions.conf
[office]
include => default
exten => 1234,1,Dial(SIP/grinder,20) exten => 1234,2,Voicemail(grinder)
Здесьвсепросто.Запользователемgrinderзакрепляемномер1234,и,если оннеответитназвонок,емуможнобудетоставитьсообщениенаголосовойпочте.Цифрапосленомераозначаетприоритет,которыйопределяет последовательностьвыполнениязадач.Теперь,еслиAsteriskзапущен,сле- дуетподключитьсякегоконсоли,выполнивнатойжемашинеasterisk-r,и спомощьюкомандыreloadзаставитьегоперечитатьконфигурационные файлы.Естьикомандыдляперезагрузкиконкретногофайла.Например, планнабораперечитываетсякомандойextensionsreload.
Серверготовкприемуклиентов.Поадресуwww.asteriskguru.com/ tutorials/configuration_asterisk_softphone.htmlвыбираемсебесофт-
клиентипробуемсоединиться.Мне,например,нравитсябесплатная версияпростойипонятнойвиспользованиипрограммыZoIPer(ранее
Idefisk,www.zoiper.com/free.php).ЕстьверсиидляLinux,WindowsиMac OSX.Ещеодиннеплохойитакжемультиплатформенныйклиент—X-Lite (www.xten.com).Есливсенормально,вконсолидолжнопоявитьсясообще-
ниевроде«RegisteredSIP‘grinder’at192.168.0.1port5060»,набираемномер извоним.МынастроилиAsteriskвминимальнойконфигурации,ноэто далеконевсе,чтоонможет.Закадромосталосьподключениекдругому серверуIP-телефонии,парковкавызова,музыкавовремяожидания,бил- линг,использованиеGUIдляадминистрированиясервераипрочее,номы постараемсявосполнитьэтипробелывследующихстатьях.z
ПроектCallWeaver
Чтобыизбежатьпроблемсдвойнымлицензированием,былсоздан форкAsterisk,названныйCallWeaver(www.callweaver.org/blog).
Правда,онобладаетменьшейфункциональностью,ноподдерживает большоеколичествопротоколовиработупоаналоговымицифровым каналам.Разработчикиотказалисьотztdummy,однакотеперьядро должнобытьсобраносTimerFrequency1000HZ.ЧтобывUbuntuсамо- мунепересобиратьядро,достаточноустановитьпакетlinux-lowlatency (заподробностямиобращайсякстатье«Наперегонкисовременем»из рубрикиUnixoid—прим.редактора).
xàêåð 11 /107/ 07 |
155 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
E |
|
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
|
||
P |
|
|
|
NOW! |
o |
|
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> Хакер.Pro |
|
|||||||
|
|
|
|
|
|
m |
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
|
df |
|
n |
e |
|
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
одинамических дисках
рассматриваем однУ из ключевых возможностей системы Управления дисками в WindoWs server 2003
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Динамические диски таят в себе множество загадок и скрытых подводных камней. Отношение администраторов к ним далеко не однозначно, и они уже успели подпортить себе репутацию, загубив немало данных, восстановление которых стоит денег и к тому же далеко не всегда возможно. Мыщъх, специализирующийся на подъеме файловых систем после падения, раскурил эту тему сразу же после того, как получил диск с Win2k, и нарыл немало полезной инфы, которой и делится с читателями.
кРАТкий иСТОРичеСкий ЭкСкУРС
Динамические диски появились еще в NT 4.0, только там они назывались мультидисками (multidisk) и представляли собой обыкновенные программные RAID’ы, широко распространенные в мире UNIX. Информация о конфигурации мультидисков хранилась в реестре, и крах системы приводил к потере всех данных. Потеря всех данных происходила и при полной переустановке системы или попытке перенести жесткий диск на систему с другой NT. Эти недостатки нивелировали все достоинства мультидисков, существенно ограничивая область их применения. Начиная с Win2k, Microsoft слегка усовершенствовала менеджер дисковой подсистемы, и теперь информация о конфигурации хранится непосредственно на самом диске, откуда считывается в реестр при первом монтировании мультидиска.
Помаркетинговымсоображенияммультидискибылипереименованыв динамическиедиски(dynamicdisk),иMicrosoftразвернулацелуюкомпаниюпоихпродвижениюнарынок.НоеслиприобновленииNT4.0до Win2kинформацияосуществующихмультидискахнормальносчитываласьизреестра,топопыткаобновленияNT4.0доXPилиServer2003/2008 ведеткнеобратимойпотереданных,которыенеобходимопредварительноскопироватьнадругойноситель.Востальномжединамическиедиски посравнениюсмультидискаминепретерпелиникакихсущественных изменений.Однакоотказотреестракакотосновногохранилищаин- формацииоконфигурацииRAID-массивасоздаетвсепредпосылкидля переходасобычныхдисковнадинамические.Но,преждечемпринимать окончательноерешение,необходимовзвеситьвсезаипротив,чеммы сейчас,собственно,изаймемся.
156 |
xàêåð 11 /107/ 07 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>>
ХАКЕР
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
E |
|
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||
.PROBUY |
|
|
|
|
|||||
w Click |
to |
|
|
|
|
m |
|||
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Дисковая подсистема после ручного преобразования simple-дис- ка в базовый
Мифы о динамических дисках
Динамическиедискиокруженыогромнымколичествомсплетен,мифов илегенд,кочующихизодногоизданиявдругоеиприписывающихим чудодейственныевозможности,которымионинеобладаютиобладатьне могутвпринципе(смотри,например,www.computerperformance.co.uk/ Litmus/disk_dynamic.htm).
Опросзнакомыхадминистраторовпоказал,чтобольшинствоизних уверены,чтодинамическиедиски(вотличиеотобычных)могутизменять свойразмер«налету».Однакомалоктоизнихпыталсяосуществитьэто напрактике,апопытавшись,убеждался,чтосэтимсправляютсятолько утилитыстороннихразработчиковтипазнаменитогоPQMagic. Заблуждениеэтопроисходитиз-заневернойтрактовкитерминаfree space,подкоторымтехническиеписателиизMicrosoftподразумевали unallocatedspace,тоестьсвободноепространство,непринадлежащее никакомудисковомутому.Допустим,унасестьдвараздела,накоторых свободнопо69и96Гбсоответственно.Можемлимыувеличитьразмер первогоразделахотябына10Гбзасчетвторого?Ответотрицательный!А вотеслимывоткнемещеодинвинчестер,накоторомнетникакихразделов(илижеимеютсянеразмеченныеразделы),товэтом(итолькоэтом!) случаединамическийдискдействительносможетувеличитьсвойразмер, поглотиввсенеразмеченноепространство(илиегочасть).
Врезультатеэтогоодинраздел(например,F:)окажетсярасположеннадвух (илиболее)физическихдисках,носточкизренияоперационнойсистемы будеттрактоватьсякакодинтом.ТакаязадачаникакомуPQMagic’уужене позубам,однакоследуетпомнить,чтоподобноеувеличениеразмерадина- мическогодискадостаетсядорогойценой.Во-первых,приотказеодного дискамыавтоматическитеряемвторой(ивсеостальные).Во-вторых,при попыткепереносадинамическоготоманадругуюмашинунампридется тащитьзасобойсразудваилиболеедиска,чтоопять-такиневсегдапри- емлемо,иврядеслучаеввыгоднееиспользоватьнесколькостандартных томов(типаC:,D:,E:),чемодиндинамическийдисктакогожеразмера,тем болеечтоWin2k3позволяетмонтироватьразделналюбуюпустуюпапку другогораздела,апринеобходимостидемонтироватьегообратно. Заблуждение второе — динамические диски поддерживают неограниченное количество томов на одном устройстве, а стандартные (они же базовые) — всего четыре, поскольку в таблице разделов имеется место только для четырех записей. Однако еще со времен MS-DOS таблица разделов поддерживает рекурсивные расширения, снимающие всякие ограничения на число томов. В MS-DOS и Win9x количество разделов не может превышать число возможных букв, но Win2k и все последующие системы позволяют назначать дискам имена произвольной длины или монтировать их на папки соседних разделов, поэтому при желании один диск можно разбить хоть на 666 томов. Вопрос только зачем.
Обновление базового диска до динамического через графическую оболочку
Заблуждениетретье—динамическиедискиработаютбыстрее/лучшее обычных.Искакойэторадости?!Планировказапросоввдинамических дискахвыполненапростоужасно,и,вслучаееслидинамическийдиск занимаетболееодногофизического,мыполучаемконкретныетормоза. Еслижединамическийдискполностьюумещаетсянаодномфизическом диске,тоонработаетабсолютностойжескоростью,чтоиобычный.
Типы динамических дисков
Простые(simple)дискипрактическиничемнеотличаютсяотобычных,за исключениемтого,чтоприпереразбиениидискаотпадаетнеобходимость вперезагрузке.Simple-томаразмещаютсянаодномфизическомдискеи всегданепрерывнынавсемсвоемпротяжении.Приувеличенииразмеров simple-томовзасчетсвободногопространства,находящегосянадругих дисках,ониавтоматическипревращаютсявсоставные(spanned)разделы.
Надежность: средняя Избыточность: отсутствует Производительность: средняя
Составные(spanned)состоятизодногоилинесколькихsimple-томов,нахо- дящихсянаразныхфизическихдисках,объединенныхвединыйлогическийтом.Информациязаписываетсяпоследовательно,каквклассическом линейномRAID-массиве.
Надежность: низкая Избыточность: отсутствует Производительность: средняя
Чередующиеся(stripped)внешнепохожинаspanned,поскольку,какипоследние,объединяютнесколькофизическихдисковводинлогическийтом, ноданныезаписываютсявперемешку,тоестьпервыйсектор—напервый жесткийдиск,второй—навторойит.д.Врезультатеэтогообажесткихдиска работаютпараллельно,и,еслиониподключеныкразличнымIDE-контрол- лерам,скоростьобменапропорциональновозрастает.Однакоеслихотябы одиндискоткажет,изданныхобразуется«решето»,неподлежащеевосста- новлению.Однимсловом,всекаквклассическомRAID-массивеуровня0.
Надежность: очень низкая Избыточность: отсутствует Производительность: высокая
Зеркальные(mirrored)—дваилиболеединамическихдиска,объеди- ненныхводинлогический,причемзаписьдублируетсянавседиски(как вRAID’еуровня1),ипривыходеодноговинчестераизстрояонможет
xàêåð 11 /107/ 07 |
157 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
E |
|
|
||||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
NOW! |
o |
|||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|||||
w Click |
to BUY |
|
>> |
|||||||
|
|
|
|
|
|
m |
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
n |
e |
|
|||
|
|
|
|
-xcha |
|
|
|
|
|
ХАКЕР.PRO
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Win2k Pro поддерживает только простые, составные и чередующиеся динамические диски
бытьзамененбезпотериданных(авслучаеподдержкиhot-plug’а—ибез остановкисервера).Зеркалироватьможнонетолькопростые,нотакже составныеичередующиесядинамическиедиски.Платитьзанадежность приходитсянетолькодисковымпространством,ноипроизводительностью,посколькуколичествоконтроллеровнебезграничноизеркальные дискиобычноцепляютсянаужезадействованныеконтроллеры.Ктому жепоисксекторовнасовременныхвинчестерахосуществляетсяметодом «вилки»изанимаетразличноевремя,азначит,приодновременномработе снесколькимивинчестерамимывынужденыдожидатьсясамогопоследнегоизних,тоестьпаспортноевремяпоискаот«среднего»приближается к«наихудшему».
Надежность: очень высокая Избыточность: очень высокая Производительность: средняя или низкая
Чередованиесконтролемчетности(strippedwithparity)соответствуетмассивуRAIDуровня5.Состоитизтрехилиболеедисков(максимум 32).Данные пишутсянавседиски,кромепоследнего,гдехранятсякодыкоррекции ошибок,спомощьюкоторыхможновосстановитьлюбойдругойотказавший диск.Получается,еслимыимеемтридиска,избыточностьсоставитвсего 30%,авслучаепятидисков—20%.Естественно,RAID-5оправдываетсебя тольконамассивах,состоящихизбольшогоколичествадисков.Массивне можетдинамическиувеличиватьсвойразмерзасчетприсоединенияновых томовиктомужеподдерживаетсятолькосервернымиверсиямиWindows.
Надежность: очень высокая Избыточность: средняя или низкая Производительность: высокая
Программный RAID-массив vs аппаратный
Охужэтиамериканцы!Любятонивыдумыватьновыесловавущербуже существующим.Динамическийдискпредставляетсобойобыкновенный программныйRAID,реализацийкоторогоможнонасчитатьдесятки.
Microsoftпродвигаетнесамоелучшееиктомужедалеконебесплатное решение,подкупаяпотребителейзаумнойтерминологиейиторговыми марками.Интересносравнитьдостоинстваинедостаткипрограммных RAID-массивовстаковымиаппаратных.
ДостоинствааппаратныхRAID-массивов(посравнениюс программными)
• независимость от конкретной операционной системы (при условии, что она поддерживает этот RAID-контрол- лер);
Управление динамическими дисками из командной строки
Комментарий
редактора
Читая различные обзоры, можно сделать вывод, что динамические диски обладают просто потрясающими возможностями: расширение дискового тома, применение чередования для повышения производительности, использование зеркального отражения, присоединение тома к массиву RAID-5, причем все это — штатными средствами операционной системы (через консоль mmc), без необходимости приобретения аппаратного RAIDконтроллера и без перезагрузки! Разве не сказка? На практике оказывается, что нет.
Загрузка с динамического дисканевозможна, следовательно, унас должен быть один базовый дискпод системные нужды плюс еще один базовый диск(или внешний носитель/накопитель) для хранения резервныхкопий (например,для gho-,tib- илиbkf-файлов).Высока вероятность того,что динамический диск мы не увидим из другой операционки. На немнельзя создаватьосновной и дополнительные разделы. Впродакшн-системах составные и расширенные тома практическибесполезны, так как ни один из этих типовне предусматривает избыточности, соответственно, все данные будут утрачены при отказе любого диска этоготома. Не поддерживаютсятакие популярныеуровни, какRAID-10и RAID-50. Не получится «на лету» увеличить размер томов RAID-0 и RAID-5, просто добавив диски к существующей матрице(аппаратные RAID’ы это позволяют),— придется обращатьсяк услугам специальногомастера и совершать дополнительные телодвижения. Как минимумодна перезагрузка все же потребуется — присозданииили преобразовании первого из базовыхдисковв динамический. Кроме того,операциипреобразования придется выполнятьв часы простоя сервера — поздно ночью или
ввыходныедни,так как при наличииоткрытыхфайлов возможна потеря данных. Остальные минусыиспользованияэтой «революционнойразработки» красочно расписал мыщъх.
Некоторыесорвиголовыскажут,чтодинамическиедискиможно использоватьвсвязкесаппаратнымRAID-контроллером,тогдапро- граммнаяреализацияобеспечитгибкостьпринеобходимостирасши- рениятома,ажелезка—требуемуюизбыточность,однакоMicrosoft
всвоихруководствахнастоятельнонерекомендуетприменятьэтот подход.
158 |
xàêåð 11 /107/ 07 |