суббота, 18 мая 2013 г.

Переезд.

После длительного перерыва этот блог переезжает на новый адрес - discretemode.com.

воскресенье, 26 июля 2009 г.

Домашний сервер. Часть вторая — сборка.

И года не прошло, а всего лишь месяц и у меня появилась возможность заняться своим новым домашним сервером и дописать статью.
В первой статье я рассказал о выборе комплектующих, а здесь я покажу как это все выглядит и что из этого получилось.
Куда все будет собираться - инвиновский корпус bm639:
Free Image Hosting at www.ImageShack.us
Если вам захочется использовать дополнительную плату расширения, например мне нужна будет вторая сетевушка, чтобы использовать сервер как шлюз, тогда вам понадобятся их низкопрофильные варианты:
Free Image Hosting at www.ImageShack.us
Теперь ядро всей системы, материнская плата от Intel D945GCLF2D со встроенным процессором Atom 330, что приятно - эта плата имеет встроенную гигабитную(!) сетевушку:
Free Image Hosting at www.ImageShack.us
Средство хранения данных - жесткий диск WD10EVDS. В принципе, выбранный корпус позволяет использовать два жестких диска, второй диск можно вставить в 5-ти дюймовый отсек, так что в теории выбранная конфигурация позволяет хранить до 4Тб данных:
Free Image Hosting at www.ImageShack.us
А теперь все собранное вместе:
Free Image Hosting at www.ImageShack.us
Самым большим удивлением для меня было то насколько это все вместе громко работает. Вы можете убедиться в этом сами (видео снималось только ради звука, так что извините за качество картинки :):

Всего в системе 3 кулера + шум от жесткого диска. На кулер блока питания я особо не мог повлиять, да в принципе он самый тихий из троицы, а вот остальные два (кулер на корпусе и на северном мосте) я решил заменить. Кулер северного моста я, сначала, планировал заменить на пассивный HR-05, но оказалось что он не войдет по высоте да и по ширине ему будет тесновато. В итоге я его просто подключил через регулятор скорости и установил его на 2000 об/м (изначально было 4000 об/м). Кулер системного блока был заменен на Enermax UCEV8, этот кулер сам меняет скорость вращения в зависимости от температуры (500 об/м при температуре меньше 45 градусов и 1500, если больше):
Free Image Hosting at www.ImageShack.us
Результат получился довольно хорошим:

Получился довольно приятный домашний сервер:
Free Image Hosting at www.ImageShack.us
И на последок несколько результатов тестов производительности:
  • Под Windows XP:
    • PCMark05 - 2207
    • WinRar (встроенный тест):
      • Один поток - 233 Kb/s
      • Многопоточный режим - 568 Kb/s
      • Одновременно 4-е однопоточных теста - 157+158+157+158=630 Kb/s
  • Под Fedora 11:
    • Компиляция lighttpd 1.4.23 (./configure --without-pcre --without-bzip2):
      • Время выполнения - 1:18 (эту же операцию Core2Duo-8200 за 0:23, P-II 400 за 3:23)
      • Время выполнения 4-х параллельных компиляций - 2:13, 2:14, 2:14, 2:14

среда, 24 июня 2009 г.

3Com® Gigabit Switch 5 3CGSU05A.

Вслед за модернизацией домашнего сервака, проапгрейдил домашнюю сеть до гигабитной. В качестве свича остановился на трикомовском гигабитнике.
Свич оказался меньше, чем казался на фотографии на сайте.

Вживую он выглядит поприличее чем на фото.

И наконец-то он в действии.

пятница, 19 июня 2009 г.

Домашний сервер. Часть первая — выбор комплектующих.

Сейчас мой домашний сервер представляет из себя комп с процессором Pentium 400Mhz и 384Mb памяти. Главные задачи, которые я ставил перед собой, были сделать его еще тише, меньше по размерам и быстрее.
Сначала я подобрал комплектующие.

Уменьшить размеры можно только используя маленькие комплектующие :) поэтому я остановился на форм факторе mini-ITX. Для начала был выбран корпус, который я искал в ассортименте корпусов Inwin. К сожелению у них совсем небольшой выбор mini-ITX корпусов, но то что было вполне мне подошло, мой выбор пал на bm639. Встроенный в корпус блок питания выдает 120W с таким особо не разгуляешься, но для моих задач этого более чем достаточно.
Соответствуя моим условиям, все внутренности сервера должны быть тихими и, желательно, с пониженным энергопотреблением. Итак, в качестве процессора я решил брать Atom, более чем подходящий по всем параметрам, а так как я хотел все таки побыстрее, то искал Atom 330. Из материнских плат с таким процессором я нашел претендентов от Intel, Gygabyte и парочки нонеймов. Претендента от Gygabyte я отбросил, так как имел несколько раз неприятные глюки с их комплектующими, поэтому решил брать плату от Intel, хотя с интеловскими мамками особо и не работал. Из двух интеловских плат я выбрал модель без излишеств Intel Desktop Board D945GCLF2D.
Про память сказать особо нечего, я взял по максимуму сколько поддерживала материнская плата - 2Gb.
Осталось разобраться с винтом. Жесткие диски я просмотрел у всех основных производителей. Здесь победил WD cо своей серией Green Power. Они имеют пониженное энергопотребление и скорость врашения шпинделя 5400, что обеспечивает более тихую работу. Сначала я хотел брать 500Gb винт, но по акустическим параметрам лучше выглядел террабайтник WD10EVDS, который я в итоге и взял.
Все это я написал пока скачивалась Windows 7 64-bit для установки на новую систему. Ставить буду только для тестов, в итоге, все таки, на серваке обоснуется Fedora 11 :)
Во второй части статьи я выложу фотоотчет по сборке.

Вторая часть - Сборка.

четверг, 18 июня 2009 г.

Обновление домашнего сервера.

Наконец-то руки добрались до обновления моего домашнего сервака. Вместо старенького Pentium II 400Mhz у меня будет Atom 330 :), благодаря этой платке Intel Desktop Board D945GCLF2D. Корпус взял этот. Ну а ставить буду одиннадцатую федору. Наверное займусь этим в выходные еще ведь надо докупить мозгов и винт.

четверг, 26 марта 2009 г.

Vim. Spaces vs Tabs.

Vim замечательный редактор, в котором почти все поддается настройке. Процесс редактирования почти никогда не обходится без использования отступов, как правило они выполняются табуляцией, но иногда требуется делать это некоторым количеством пробелов. Так например в языке программирования python рекомендуется делать отступы при помощи 4 пробелов. Vim позволяет легко переключаться с отступов по табам на отступы пробелами, за эти параметры отвечают 3 настройки:

  • expandtab

  • shiftwidth

  • softtabstop


На следующей схемке показано, за что каждый из параметров отвечает:

(нажимаем tab)
|<-softtabstop->|<-softtabstop->|
| |
print('ok') | (нажимаем enter)
|<-shiftwidth-->|<--shiftwidth->|
def is_vim_best(): | |
if(1 == 1): | |
if(2 == 2): |
return 'yes'

print('is vim best? - ' + is_vim_best())

Тоесть, expandtab - включает замену табов на пробелы (:set expandtab для включения и :set noexpandtab для выключения), в значении softtabstop хранится количество пробелов, на которое подменяется таб (:set softtabstop=4), когда нажимается таб, в shiftwidth хранится количестов пробелов, на которое заменяется отступ, когда выполняется авто-отступ или операции << >>.

среда, 25 марта 2009 г.

Используем 2+ провайдера с применением модуля CONNMARK

Еще один способ использования нескольких каналов в интернет, теперь с использованием модуля CONNMARK. Когда я с ним начинал знакомится все выглядело довольно просто, но в процессе настройки я столкнулся со множеством подводных камней.
Допустим мы имеем следующие правила маршрутизации:
#!/bin/bash

IF1=eth1
IF2=eth2
IP1=xx.xx.xx.xx
IP2=xx.xx.xx.xx
P1=xx.xx.xx.xx
P2=xx.xx.xx.xx
P1_NET=xx.xx.xx.xx/24
P2_NET=xx.xx.xx.xx/24
PC=xx.xx.xx.xx

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip route add default via $P1 metric 10

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2

ip rule add fwmark 2 table T2

Здесь IF - интерфейсы нашего роутера, смотрящие к провайдерам, IP - внешние айпишники, P - шлюзы, P_NET - провайдерские подсети, PC - ПК во внутренней сети.
Допустим на PC у нас работает SMTP сервер, и необходимо чтобы он обрабатывал соединения поступающие на любой из внешних адресов. Для этого понадобятся правила DNAT:
$IPTABLES -t nat -A PREROUTING -i $GLOBAL_ETH_PRIM -d $GLOBAL_IP_PRIM -p tcp --dport 25 -j DNAT --to-destination $PC
$IPTABLES -t nat -A PREROUTING -i $GLOBAL_ETH_SEC -d $GLOBAL_IP_SEC -p tcp --dport 25 -j DNAT --to-destination $PC

И следующий набор правил:
$IPTABLES -t mangle -A PREROUTING -i $LOCAL_ETH -m state --state ESTABLISHED -j CONNMARK --restore-mark
$IPTABLES -t mangle -A FORWARD -i $GLOBAL_ETH_PRIM -m state --state NEW -j CT
$IPTABLES -t mangle -A FORWARD -i $GLOBAL_ETH_SEC -m state --state NEW -j CT

В первой строке мы восстанавливаем маркер, установленный модулем CONNMARK, причем необходимо явно указать, что применяется это к пакетам идущим из внутренней подсети, либо добавить в таблицы маршрутизации пути к локальной подсети, иначе некорректно будут отрабатыватся правила DNAT. Все новые пакеты отправляются на маркировку в пользовательскую цепочку CT вот она:
$IPTABLES -t mangle -N CT

$IPTABLES -t mangle -A CT -i $GLOBAL_ETH_PRIM -p tcp --dport 25 -j CONNMARK --set-mark 1
$IPTABLES -t mangle -A CT -i $GLOBAL_ETH_SEC -p tcp --dport 25 -j CONNMARK --set-mark 2

Пакеты маркируются в соответствии с интерфейсом получения. В принципе маркировать пакеты, приходящие на интерфейс по умолчанию не обязательно. Вот и все, если не считать правил, разрешающих прохождение пакета.