воскресенье, 22 ноября 2020 г.

Mail.ru, прощай!

Хочу вернуться к теме прошлой своей статьи про ООО «Мэйл.Ру» (ИНН 7743001840), известого владельца имиджборды Юла. Напомню, что тогда я был неприятно удивлен вероятным желанием mailRu Grupp торговать персональными данными своих пользователей электронной почты. Причем, по моему мнению, так ведёт себя не только mail.ru, они делают это лишь чуть более явно чем все остальные. Полагаю, все владелецы бесплатной публичной почты включая mail.ru, yandex.ru, gmail.com и прочих всегда:

  • читают и анализируют содержимое ваших писем;
  • извлекают из писем персональные данные и важные сведения о вас - адреса, поездки, покупки, диагнозы и т.д.;
  • зарабатывают на этих сведениях рекламой и прямой их продажей;
  • могут внезапно заблокировать вашу почту по любой абсурдной причине;
  • радостно выдадут ваши письма, адреса и номера силовым органам, даже без официальных запросов;

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

Доменное имя. Лучше выбирать первые исторические gTLD имена, а именно .com, .net, .org. С ними работают абсолютно все регистраторы доменов в мире, не требуются дополнительные документы, прописаны процедуры смены регистратора и пр. В общем проблем будет меньше. Упаси вас бог от доменов в зоне .ru и российских продавцов доменов, всяких nic.ru и reg.ru и др.

Хостинг. Подойдет любой облачный провайдер. Аналогично, обходим стороной российские ЦОДы. До свидания, selectel, яндекс-облако и пр.

Программное обеспечение. Тут огромное поле для выбора. Я, после нескольких недель тестов, остановился на системе совместной работы Zimbra. К ее достоинствам можно отнести удобный почтовый веб-клиент. Также имеется огромное количество как официальной документации, так и  неофицальных руководств от энтузиастов по всему миру.  Недостатками Zimbra является ее некоторая тяжеловесность и переусложненность, не все ее функции мне требуются. А также высокий порог входа, количество требуемых знаний для ее развертывания и настройки значительно.

Для моего случая, а это в среднем около 100 писем в день, мне потребовался сервер 2CPU, 8GB mem. На меньшем железе честно пробовал запускать, но очень уж она прожорливая памяти и процессора не хватает, а часть компонент использует java, perl. Для более серьезных объемов почты конечно потребуется сервер мощнее.

Перечисление решенных технических задач:

  • Установка и настройка Linux, у меня Ubuntu 18.04.
  • Установка Zimbra.
  • Подключение домена к Zimbra, настрока dmarc и прочих dkim.
  • Настройка фаервола. Очень важный пункт! Все-таки Zimbra это открытое ПО, в котором периодически находят уязвимости. Хорошо подумайте, открывать ли внешнему миру веб-интерфейс почты, интерфейс администратора, нужен ли вам POP3 и пр.
  • Перенос хранилища писем на защифрованный раздел LUKS. Вы, конечно, не настолько доверяете своему VPS-провайдеру, чтобы позволить ему читать ваши письма? Так и с бекапами сервера мне будет спокойнее.
  • Настройка бесплатного SSL сертификата от LetsEncrypt в Zimbra и его автообновления.
  • Решение вопросов с спамом. Встроенных в саму Zimbra средств по борьбе со спамом мне оказалось достаточно. Однако, они из коробки не были настроенны оптимальным образом для меня, пришлось немного покрутить настройки. После этого количество спама уменьшилось в среднем с 5-10-ти писем в день до 1-го в неделю, для меня это примлемый уровень.
  • Настройка fail2ban для блокировки по IP слишком рьяных переборщиков паролей SMTP и IMAP.
  • Настройка мониторинга попадания своего домена и IP в blacklists антиспамерских списков. Решение вопросов с владельцами списков если случайно туда угодили.
  • Настройка резервного копирования почты. Вы же не хотите остаться без своей почты, если вдруг ваш облачный провайдер скоропостижно прекратит своё существование?
  • Заведение и настройка почтовых ящиков.
  • Много чего еще, что уже не вспомню.

Неожиданно сложным оказался не технический аспект. Перевод сотен учетных записей которые за 20 лет были заведены на mail.ru на новую почту. Это оказалась поистине титанической работой которая за несколько месяцев в большей части уже сделана, но местами продолжается до сих пор.

  • Большинство админок сайтов позволяет без проблем сменить email адрес.
  • Некоторые сервисы потребовали обращения в тех. поддержку. Внезапно, такими оказались почти все видеостриминговые платформы - netflix, premier и ivi.
  • У нескольких сервисов смена email оказалась не предусмотрена вообще, пришлось закрыть старые учетки и при необходимости завести новые.
  • Особенно отличился Департамент Информационных Технологий (ДИТ) Москвы со своим порталом mos.ru. Конечно, в личном кабинете свой email адрес я сменил легко. Но, видимо, старый email особыми раковыми метастазами распростанился в десятках базах данных ДИТ и теперь выковырять его оттуда нет решительно никакой возможности. Множество разных видов email рассылок продолжают приходить на старый адрес в mail.ru. Тех. поддержка mos.ru на несколько моих обращений по данной проблеме никак не отрегировала, мило отмораживается.

Из дополнительных плюсов, мне наконец удалось реализовать давнюю идею, на каждый сервис свой отдельный почтовый ящик. В случае Zimbra это легко реализуется через настройку CatchAll. Например,

  • покупаем что-то на AliExpress, заводим учетную запись на почту ali@mydomain.net.
  • шлет МегаФон вам счета на почту, отдаем им почту megafon@mydomain.net.
  • и т.д.

При этом вся почта попадает в один ваш ящик name@mydomain.net. Зачем это нужно? Во-первых, сразу видно, кто скурвился и сливает вашу почту для рассылки спама. Во-вторых, если обычные способы борьбы со спамом не помогают, то просто можно заблокировать ящик одного сервиса, а не общий ваш почтовый ящик.

Подводя итоги, моё прощание с mail.ru прошло успешно. Но, к большому сожалению, этот способ подходит далеко не всем, а лишь единицам энтузиастов, готовых потратить своё время на настройку. А значит, я считаю, почтовые сервисы пока что могут безнаказанно воровать вашу почту и дальше продолжать наживаться на ней.

среда, 9 сентября 2020 г.

VPN на Mikrotik через Hidemy.name

 
В прошлой статье мы разобрали запуск собственного openvpn сервера совместимого с роутерами mikrotik.

Тут мы рассмотрим подключение роутера mikrotik через vpn-сервис Hidemy.name. К преимуществам Hidemy.name я могу отнести:

  • демократичные тарифы, итоговая стоимость получается дешевле аренды vps/vds;
  • до 5-ти одновременных подключений на одной учетке с разных устройств или к разным серверам;
  • легкая замена IP-адреса/страны;
  • возможность использовать в linux и различных роутерах;


Получить бесплатный demo-доступ на 24 часа можно по ссылке https://hidemy.name/ru/demo/. Требуется указать свой почтовый ящик:


После подтверждения email вы получите письмо с цифровым кодом доступа. В моем случае это был:

Ваш тестовый код: 54058222980238

В Mikrotik я буду использовать PPTP-подключение. Нам требуется получить настройки PPTP для роутера по ссылке, для этого нужно ввести код доступа.

Сохраняем настройки PPTP:

  • IP адрес сервера 77.83.116.10. Можно использовать предложенный голландский сервер, либо выбрать любой другой из 50+ по ссылке. Для доступа к списку серверов также потребуется ввести код доступа.
  • Логин 54058222980238. Соответвует вашему коду доступа.
  • Пароль 4709. При желании можно заменить пароль на другой.


Приступаем к настройке роутера
Добавляем клиентское подключение к pptp-серверу, меню [Interfaces >> Add >> PPTP Client >> Dial Out]:

Прописываем значения параметров "Connect To", "User" и "Password" полученные на предыдущем этапе из hidemy.name


Убеждаемся, что сетевой интерфейс pptp-out1 успешно создался и находится в статусе "R" - running.


Всё! VPN подключение успешно создано. Обращаю внимание, что настройка купленного vpn гораздо легче, чем развертывание собственного vpn сервера.

На перспективу можно организовать резервное vpn-подключение к другому серверу сети hidemy.name, т.к. учетная запись сервиса позволяет до 5-ти одновременных подключений.

Если качество услуги в течении демо-доступа вас устроило, то нужно оплатить длительный период hidemy.name и получить новый код доступа.

понедельник, 1 июня 2020 г.

Openvpn-сервер на Linux с клиентами на Mikrotik

У нас имеется:
  • роутер mikrotik с подключением к интернет;
  • vps/vds сервер на Linux с IP адресом N.N.N.N;
мы реализуем:
  • openvpn-сервер на vps c IP адресом 192.168.188.1
  • openvpn-подключение на mikrotik с IP адресом 192.168.188.200


Выбор провайдеров vps и разбор их тарифов выходит за рамки данной статьи. Скажу только, что для openvpn-сервера подойдет любой минимальный тариф за $5 в месяц и даже меньше. Например, самый дешевый дроплет DigitalOcean подходящий вариант.

В качестве дистрибутива Linux я буду использовать Debian 10 Buster.

Поддержка возможностей Openvpn у RouterOS не полная:
  • Нет возможности работать по протоколу UDP, только по TCP.
  • Не поддерживается сжатие трафика.
  • Нет TLS аутентификации.
 Это будем иметь в виду при настройке.

Сначала нужно сгенерировать центр сертификации (CA), сертификаты сервера и клиента. Для этого в Debian 10 используется набор скриптов Easy-RSA версии 3, которая довольно сильно отличается от предыдущей второй версии. Для желающих глубокого погружения в тему отсылаю к официальной документации. Здесь же приведу необходимые команды с кратким пояснением.

Устанавливаем Easy-RSA:
~$ sudo apt install easy-rsa
Подготавливаем CA:
$ sudo make-cadir /etc/easy-rsa
$ sudo -i
# cd /etc/easy-rsa
# ./easyrsa init-pki
# ./easyrsa build-ca nopass
# ./easyrsa gen-dh
# ./easyrsa gen-crl

Создаем сертификат для сервера myserver:
# ./easyrsa gen-req myserver nopass
# ./easyrsa sign-req server myserver
Создаем сертификат для клиента c именем mikrotik:
# ./easyrsa gen-req mikrotik nopass
# ./easyrsa sign-req client mikrotik

Наконец можем установить openvpn:
$ sudo apt install openvpn

Создаем файл конфигурации openvpn сервера:
$ sudo mcedit /etc/openvpn/server/myserver.conf
и вставляем содержимое:
ca /etc/easy-rsa/pki/ca.crt
cert /etc/easy-rsa/pki/issued/myserver.crt
key /etc/easy-rsa/pki/private/myserver.key
dh /etc/easy-rsa/pki/dh.pem
crl-verify /etc/easy-rsa/pki/crl.pem

proto tcp
dev tun
topology subnet
server 192.168.188.0 255.255.255.0
client-config-dir /etc/openvpn/ccd

Далее создаем файл конфигурации для клиента:
$ sudo mkdir /etc/openvpn/ccd
$ sudo mcedit /etc/openvpn/ccd/mikrotik
с содержимым:
ifconfig-push 192.168.188.200 255.255.255.0

После этого запускаем openvpn-сервер:
$ sudo systemctl start openvpn-server@myserver

Если все получилось, то команда покажет статус "active (running)":
$ sudo systemctl status openvpn-server@myserver
Если что то пошло не так, то внимательно изучаем журнал и пытаемся понять, где ошиблись:
$ journalctl -xe
Прописываем автоматический запуск нашего openvpn сервера при старте операционной системы
$ sudo systemctl enable openvpn-server@myserver
Openvpn сервер подготовлен. Переходим к настройке роутера.
Переносим сгенерированные ранее файлы сертификата клиента openvpn на устройство, меню [Files]:
  • /etc/easy-rsa/pki/issued/mikrotik.crt
  • /etc/easy-rsa/pki/private/mikrotik.key


Импортируем в хранилище сертификатов сначала сертификат, затем приватный ключ клиента, меню [System >> Certificates >> Import]:

Добавляем клиентское подключение к openvpn-серверу, меню [PPP >> Interface >> Add >> OVPN Client >> Dial Out]:

Проверяем доступность внутреннего ip-адреса openvpn сервера со стороны клиента, меню [Tools >> Ping]

Готово, vpn подключение настроено и работает.

пятница, 28 февраля 2020 г.

Неужели Mail.ru Group продаст ваши персональные данные сотням «партнерам»?


Вы, наверное, спрашиваете, что же наконец заставило меня прервать 10-летнее молчание в данном блоге? ))

Как практически у всех русскоязычных пользователей интернета, у меня также есть почтовый ящик от компании Mail.ru Group - знаменитого разработчика мессенджера ТамТам. Я уже 20 лет пользуюсь этим почтовым ящиком от mail.ru в качестве основного. Однако, в последние месяцы при входе в веб-интерфейс почты мейл.ру меня стало до усрачки пугать сообщение:

Мы ценим вашу приватность!
Мы и наши партнеры используем такие технологии, как файлы cookie, и обрабатываем персональные данные, такие как IP-адрес или информацию браузера, для персонализации рекламы, которую вы видите. Это помогает нам показывать вам более релевантную рекламу и улучшает вашу работу в интернете. Мы также используем эти данные для измерения результатов или настройки содержания нашего веб-сайта. Поскольку мы ценим вашу конфиденциальность, мы просим вашего разрешения на использование этих технологий. Вы всегда можете изменить или отозвать свое согласие позже в разделе "Политика конфиденциальности".

  • Хранение информации и доступ
  • Персонализация
  • Выбор рекламы, доставка, отчетность
  • Подбор контента, доставка, отчетность
  • Измерение

Выбор варианта "Отклонить все" заставляет потеряться этот запрос на пару недель. Но через 2 недели он возникает заново. Т.е. @mail использует уловки в пользовательском интерфейсе, чтобы однажды, в спешке, вы промазали и случайно нажали кнопку "Принять все". Тут же вспоминаются недавние новости про то, как антивирус Avast следил за своими пользователями и продавал все собранные данные каким-то мутным конторам.


Список партнеров доступен по кнопке "настроить выбор" и содержит впечатляющий набор из 500+ каких то упырьских шарашек. Ниже привожу их полный перечень:

  1. 1020, Inc. dba Placecast and Ericsson Emodo 
  2. 1plusX AG 
  3. 2KDirect, Inc. (dba iPromote) 
  4. 33Across 
  5. 6Sense Insights, Inc. 
  6. 7Hops.com Inc. (ZergNet) 
  7. Tappx 
  8. A Million Ads Ltd 
  9. A.Mob 
  10. AAX LLC 
  11. Accelerize Inc. 
  12. Accorp Sp. z o.o. 
  13. Active Agent AG 
  14. Acuityads Inc. 
  15. Ad Unity Ltd 
  16. ad6media 
  17. Adacado Technologies Inc. (DBA Adacado) 
  18. adality GmbH 
  19. ADARA MEDIA UNLIMITED 
  20. AdClear GmbH 
  21. AdColony, Inc. 
  22. AddApptr GmbH 
  23. AdDefend GmbH 
  24. AdElement Media Solutions Pvt Ltd 
  25. Adello Group AG 
  26. Adelphic LLC 
  27. Adevinta Spain S.L.U. 
  28. Adform A/S 
  29. Adhese 
  30. adhood.com 
  31. Adikteev / Emoteev 
  32. Adimo 
  33. ADITION technologies AG 
  34. Adkernel LLC 
  35. Adledge 
  36. Adloox SA 
  37. Adludio Ltd 
  38. ADMAN - Phaistos Networks, S.A. 
  39. ADman Interactive SL 
  40. adMarketplace, Inc. 
  41. AdMaxim Inc. 
  42. Admedo Ltd 
  43. admetrics GmbH 
  44. Admixer EU GmbH 
  45. Admotion SRL 
  46. Adnami Aps 
  47. Adobe Advertising Cloud 
  48. Adobe Audience Manager 
  49. Adprime Media Inc. 
  50. ADRINO Sp. z o.o. 
  51. adrule mobile GmbH 
  52. Adserve.zone / Artworx AS 
  53. Adsolutions BV 
  54. AdSpirit GmbH 
  55. adsquare GmbH 
  56. Adssets AB 
  57. AdsWizz Inc. 
  58. Adtelligent Inc. 
  59. AdTheorent, Inc 
  60. AdTiming Technology Company Limited 
  61. ADUX 
  62. advanced store GmbH 
  63. ADventori SAS 
  64. Adverline 
  65. ADWAYS SAS 
  66. ADYOULIKE SA 
  67. Adzymic Pte Ltd 
  68. Aerserv LLC 
  69. Affectv Ltd 
  70. affilinet 
  71. Affle International 
  72. Alive & Kicking Global Limited 
  73. Alliance Gravity Data Media 
  74. Amobee, Inc. 
  75. AntVoice 
  76. Anzu Virtual reality LTD 
  77. Apester Ltd 
  78. AppConsent Xchange 
  79. Appier PTE Ltd 
  80. AppNexus Inc. 
  81. Arcspire Limited 
  82. Arkeero 
  83. ARMIS SAS 
  84. Arrivalist Co. 
  85. ATG Ad Tech Group GmbH 
  86. Audience Network 
  87. Audience Trading Platform Ltd. 
  88. AudienceProject Aps 
  89. Audiens S.r.l. 
  90. AuDigent 
  91. audio content & control GmbH 
  92. Automattic Inc. 
  93. Avazu Inc. 
  94. Avid Media Ltd 
  95. Avocet Systems Limited 
  96. Axel Springer Teaser Ad GmbH 
  97. Axonix Ltd 
  98. Azerion Holding B.V. 
  99. B2B Media Group EMEA GmbH 
  100. Bandsintown Amplified LLC 
  101. Bannerflow AB 
  102. Beachfront Media LLC 
  103. Beaconspark Ltd 
  104. Beemray Oy 
  105. BeeswaxIO Corporation 
  106. BEINTOO SPA 
  107. BeOp 
  108. Better Banners A/S 
  109. Between Exchange 
  110. BidBerry SRL 
  111. Bidmanagement GmbH 
  112. Bidstack Limited 
  113. BIDSWITCH GmbH 
  114. Bidtellect, Inc 
  115. BidTheatre AB 
  116. Bigabid Media ltd 
  117. BILENDI SA 
  118. Bit Q Holdings Limited 
  119. BLIINK SAS 
  120. Blis Media Limited 
  121. Blue 
  122. Blue Billywig BV 
  123. Bmind a Sales Maker Company, S.L. 
  124. Bombora Inc. 
  125. Bounce Exchange, Inc 
  126. Brand Advance Limited 
  127. Brand Metrics Sweden AB 
  128. Browsi Mobile Ltd 
  129. Bucksense Inc 
  130. BusinessClick 
  131. Cablato Limited 
  132. Capitaldata 
  133. Captify Technologies Limited 
  134. Cavai AS & UK 
  135. Cedato Technologies LTD. 
  136. Celtra, Inc. 
  137. Centro, Inc. 
  138. CerebroAd.com s.r.o. 
  139. ChannelSight 
  140. Chargeads 
  141. CHEQ AI TECHNOLOGIES LTD. 
  142. Clicksco Digital Limited 
  143. Clipcentric, Inc. 
  144. Cloud Technologies S.A. 
  145. Codewise Sp. z o.o. Sp. k 
  146. Collective Europe Ltd. 
  147. Collective, Inc. dba Visto 
  148. Colpirio.com 
  149. Comcast International France SAS 
  150. Commanders Act 
  151. communicationAds GmbH & Co. KG 
  152. comScore, Inc. 
  153. Confiant Inc. 
  154. Connatix Native Exchange Inc. 
  155. ConnectAd Realtime GmbH 
  156. Consumable, Inc. 
  157. Contact Impact GmbH 
  158. Converge-Digital 
  159. Conversant Europe Ltd. 
  160. Crimtan Holdings Limited 
  161. Criteo SA 
  162. Cuebiq Inc. 
  163. Cxense ASA 
  164. Cybba, Inc. 
  165. Cydersoft 
  166. Czech Publisher Exchange z.s.p.o. 
  167. D-Edge 
  168. Dailymotion SA 
  169. Dataseat Ltd 
  170. Dataxu, Inc. 
  171. DeepIntent, Inc. 
  172. DEFINE MEDIA GMBH 
  173. Delta Projects AB 
  174. Demandbase, Inc. 
  175. Densou Trading Desk ApS 
  176. Dentsu Aegis Network Italia SpA 
  177. Digilant Spain, SLU 
  178. Digital Control GmbH & Co. KG 
  179. Digital East GmbH 
  180. digitalAudience 
  181. DIGITEKA Technologies 
  182. Digitize New Media Ltd 
  183. DigiTrust / IAB Tech Lab 
  184. district m inc. 
  185. DoubleVerify Inc.​ 
  186. Dr. Banner 
  187. Drawbridge, Inc. 
  188. Dugout Limited 
  189. dunnhumby Germany GmbH 
  190. Duplo Media AS 
  191. Duration Media, LLC. 
  192. DynAdmic 
  193. Dynamic 1001 GmbH 
  194. EASYmedia GmbH 
  195. Effiliation 
  196. Effinity 
  197. Emerse Sverige AB 
  198. emetriq GmbH 
  199. EMX Digital LLC 
  200. Etarget SE 
  201. Eulerian Technologies 
  202. Exactag GmbH 
  203. Exponential Interactive, Inc 
  204. Eyeota Ptd Ltd 
  205. Ezoic Inc. 
  206. Fidelity Media 
  207. Fidzup 
  208. Fifty Technology Limited 
  209. Flashtalking, Inc. 
  210. FlexOffers.com, LLC 
  211. Forensiq LLC 
  212. FORTVISION 
  213. Free Stream Media Corp. dba Samba TV 
  214. Fusio by S4M 
  215. Fyber 
  216. Gamned 
  217. Gamoshi LTD 
  218. GDMServices, Inc. d/b/a FiksuDSP 
  219. GeistM Technologies LTD 
  220. Gemius SA 
  221. Genius Sports Media Limited 
  222. Getintent USA, inc. 
  223. GlobalWebIndex 
  224. Go.pl sp. z o.o. 
  225. Goldbach Group AG 
  226. Golden Bees 
  227. Goodway Group, Inc. 
  228. GP One GmbH 
  229. GRAPHINIUM 
  230. Greenhouse Group BV (with its trademark LemonPI) 
  231. GroupM UK Limited 
  232. GumGum, Inc. 
  233. Haensel AMS GmbH 
  234. Happydemics 
  235. hbfsTech 
  236. HIRO Media Ltd 
  237. Hivestack Inc. 
  238. Hottraffic BV (DMA Institute) 
  239. Hybrid Adtech GmbH 
  240. ID5 Technology SAS 
  241. IgnitionAi Ltd 
  242. IgnitionOne 
  243. Illuma Technology Limited 
  244. Impactify 
  245. Impression Desk Technologies Limited 
  246. Improve Digital International BV 
  247. Index Exchange, Inc. 
  248. INFINIA MOBILE S.L. 
  249. InMobi Pte Ltd 
  250. INNITY 
  251. Innovid Inc. 
  252. Inskin Media LTD 
  253. Inspired Mobile Limited 
  254. Instinctive, Inc. 
  255. Instreamatic inc. 
  256. InsurAds Technologies SA. 
  257. Integral Ad Science, Inc. 
  258. Intent Media, Inc. 
  259. Intercept Interactive Inc. dba Undertone 
  260. Internet BillBoard a.s. 
  261. Intowow Innovation Ltd. 
  262. INVIBES GROUP 
  263. INVIDI technologies AB 
  264. iotec global Ltd. 
  265. IPONWEB GmbH 
  266. Jaduda GmbH 
  267. Jampp LTD 
  268. Jivox Corporation 
  269. Join 
  270. Jointag S.r.l. 
  271. Justpremium BV 
  272. Kairos Fire 
  273. Kayzen 
  274. Keymantics 
  275. Knorex Pte Ltd 
  276. Kochava Inc. 
  277. KUPONA GmbH 
  278. Kwanko 
  279. LBC France 
  280. Leadplace - Temelio 
  281. LeftsnRight, Inc. dba LIQWID 
  282. Leiki Ltd. 
  283. LEMO MEDIA GROUP LIMITED 
  284. Lifesight Pte. Ltd. 
  285. LifeStreet Corporation 
  286. Liftoff Mobile, Inc. 
  287. Ligatus GmbH 
  288. Linicom 
  289. LiquidM Technology GmbH 
  290. Little Big Data sp.z.o.o. 
  291. Liveintent Inc. 
  292. LiveRamp, Inc. 
  293. LKQD, a division of Nexstar Digital, LLC. 
  294. Localsensor B.V. 
  295. Location Sciences AI Ltd 
  296. LoopMe Limited 
  297. LotaData, Inc. 
  298. Lotame Solutions, Inc. 
  299. Lucid Holdings, LLC 
  300. M32 Connect Inc 
  301. Madington 
  302. Madison Logic, Inc. 
  303. MADVERTISE MEDIA 
  304. mainADV Srl 
  305. MAIRDUMONT NETLETIX GmbH&Co. KG 
  306. Marfeel Solutions S.L 
  307. Market Resource Partners LLC 
  308. Maximus Live LLC 
  309. Maytrics GmbH 
  310. McCann Discipline LTD 
  311. Media.net Advertising FZ-LLC 
  312. Mediaforce LTD 
  313. MediaMath, Inc. 
  314. mediarithmics SAS 
  315. Mediasmart Mobile S.L. 
  316. Meetrics GmbH 
  317. MGID Inc. 
  318. Mindlytix SAS 
  319. MiQ 
  320. Mirando GmbH & Co KG 
  321. MISSENA 
  322. mobalo GmbH 
  323. Mobfox US LLC 
  324. Mobile Journey B.V. 
  325. Mobile Professionals BV 
  326. Mobilewalla, Inc. 
  327. Mobsuccess 
  328. Mobusi Mobile Advertising S.L. 
  329. Monet Engine Inc 
  330. My6sense Inc. 
  331. Myntelligence Limited 
  332. MyTraffic 
  333. N Technologies Inc. 
  334. Nano Interactive GmbH 
  335. Nativo, Inc. 
  336. Near Pte Ltd 
  337. Neodata Group srl 
  338. NEORY GmbH 
  339. Netsprint SA 
  340. NetSuccess, s.r.o. 
  341. netzeffekt GmbH 
  342. NEURAL.ONE 
  343. Neustar on behalf of The Procter & Gamble Company 
  344. Neustar, Inc. 
  345. News and Media Holding, a.s. 
  346. NEXD 
  347. NextRoll, Inc. 
  348. Nielsen Marketing Cloud 
  349. Norstat Danmark A/S 
  350. Noster Finance S.L. 
  351. Notify 
  352. nugg.ad GmbH 
  353. numberly 
  354. Oath (EMEA) Limited 
  355. Ogury Ltd. 
  356. On Device Research Limited 
  357. OnAudience Ltd 
  358. OneTag Ltd 
  359. Onfocus (Adagio) 
  360. Online Advertising Network Sp. z o.o. 
  361. Online Solution Int Limited 
  362. Onnetwork Sp. z o.o. 
  363. OpenX 
  364. Opinary GmbH 
  365. Optomaton UG 
  366. Oracle AddThis 
  367. Oracle Data Cloud 
  368. Orion Semantics 
  369. ORTEC B.V. 
  370. Otto (GmbH & Co KG) 
  371. Outbrain UK Ltd 
  372. PaperG, Inc. dba Thunder Industries 
  373. Parsec Media Inc. 
  374. Passendo ApS 
  375. Perform Media Services Ltd 
  376. Permodo GmbH 
  377. Permutive Ltd. 
  378. Permutive Technologies, Inc. 
  379. Pexi B.V. 
  380. pilotx.tv 
  381. Pixalate, Inc. 
  382. PIXIMEDIA SAS 
  383. Platform161 
  384. Playbuzz Ltd. 
  385. PLAYGROUND XYZ EMEA LTD 
  386. plista GmbH 
  387. Pocketmath Pte Ltd 
  388. Polar Mobile Group Inc. 
  389. PowerLinks Media Limited 
  390. Predicio 
  391. PREX Programmatic Exchange GmbH&Co KG 
  392. Programatica de publicidad S.L. 
  393. Proxi.cloud Sp. z o.o. 
  394. PROXISTORE 
  395. PUB OCEAN LIMITED 
  396. Publicis Media GmbH 
  397. Publishers Internationale Pty Ltd 
  398. PubMatic, Inc. 
  399. PubNative GmbH 
  400. PulsePoint, Inc. 
  401. Purch Group, Inc. 
  402. PurposeLab, LLC 
  403. Qriously 
  404. Quantcast International Limited 
  405. Qwertize 
  406. R-Advertising 
  407. R-TARGET 
  408. Radio Net Media Limited 
  409. Rakuten Marketing LLC 
  410. Readpeak Oy 
  411. Realeyes OÜ 
  412. realzeit GmbH 
  413. ReigNN Platform Ltd. 
  414. Relay42 Netherlands B.V. 
  415. remerge GmbH 
  416. Research and Analysis of Media in Sweden AB 
  417. Research Now Group, Inc 
  418. Revcontent, LLC 
  419. Reveal Mobile, Inc 
  420. RevLifter Ltd 
  421. Rezonence Limited 
  422. RhythmOne, LLC 
  423. Rich Audience 
  424. RMSi Radio Marketing Service interactive GmbH 
  425. Rockabox Media Ltd 
  426. Rockerbox, Inc 
  427. RockYou, Inc. 
  428. Roq.ad GmbH 
  429. RTB House S.A. 
  430. RTK.IO, Inc 
  431. RUN, Inc. 
  432. salesforce.com, inc. 
  433. Samba TV UK Limited 
  434. Sanoma Media Finland 
  435. Scene Stealer Limited 
  436. Schibsted Norge AS 
  437. Schibsted Product and Tech UK 
  438. Seeding Alliance GmbH 
  439. Seedtag Advertising S.L 
  440. Seenthis AB 
  441. Sellpoints Inc. 
  442. Semasio GmbH 
  443. Seznam.cz, a.s. 
  444. ShareThis, Inc. 
  445. Sharethrough, Inc 
  446. SheMedia, LLC 
  447. Shopalyst Inc 
  448. Shopstyle 
  449. ShowHeroes GmbH 
  450. Sift Media, Inc 
  451. Signal Digital Inc. 
  452. Signals 
  453. Simplifi Holdings Inc. 
  454. SINGLESPOT SAS 
  455. Sirdata 
  456. Sizmek 
  457. Skaze 
  458. Skimbit Ltd 
  459. SlimCut Media SAS 
  460. Smaato, Inc. 
  461. Smadex SL 
  462. Smart Adserver 
  463. Smart Traffik 
  464. smartclip Europe GmbH 
  465. Smartclip Hispania SL 
  466. Smartme Analytics 
  467. Smartology Limited 
  468. SMARTSTREAM.TV GmbH 
  469. SmartyAds Inc. 
  470. Smile Wanted Group 
  471. Snapsort Inc., operating as Sortable 
  472. Social Tokens Ltd. 
  473. Sojern, Inc. 
  474. Solocal 
  475. Somo Audience Corp 
  476. Sonobi, Inc 
  477. Soundcast 
  478. Sourcepoint Technologies, Inc. 
  479. Sovrn Holdings Inc 
  480. Spolecznosci Sp. z o.o. Sp. k. 
  481. Sportradar AG 
  482. Spot.IM Ltd. 
  483. Spotad 
  484. SpotX, Inc. 
  485. SpringServe, LLC 
  486. StackAdapt 
  487. StartApp Inc. 
  488. Steel House, Inc. 
  489. Ströer Mobile Performance GmbH 
  490. Ströer SSP GmbH 
  491. Ströer SSP GmbH 
  492. Sub2 Technologies Ltd 
  493. Sublime 
  494. SunMedia 
  495. Switch Concepts Limited 
  496. SYNC 
  497. TabMo SAS 
  498. Taboola Europe Limited 
  499. TACTIC™ Real-Time Marketing AS 
  500. Tapad, Inc. 
  501. Tapjoy, Inc. 
  502. TAPTAP Networks SL 
  503. Targetspot Belgium SPRL 
  504. Teads 
  505. Tealium Inc 
  506. Teemo SA 
  507. Telaria, Inc 
  508. Telecoming S.A. 
  509. Telefonica Investigación y Desarrollo S.A.U 
  510. Teroa S.A. 
  511. The ADEX GmbH 
  512. The Kantar Group Limited 
  513. The MediaGrid Inc. 
  514. The Ozone Project Limited 
  515. The Reach Group GmbH 
  516. The Rubicon Project, Inc. 
  517. The Trade Desk 
  518. Think Clever Media 
  519. Thirdpresence Oy 
  520. Timehop, Inc. 
  521. TimeOne 
  522. Totaljobs Group Ltd 
  523. Tradedoubler AB 
  524. Tradelab, SAS 
  525. TradeTracker 
  526. travel audience GmbH 
  527. TreSensa, Inc. 
  528. Triapodi Ltd. 
  529. Triboo Data Analytics 
  530. TripleLift, Inc. 
  531. Triton Digital Canada Inc. 
  532. TrueData Solutions, Inc. 
  533. TTNET AS 
  534. Tunnl BV 
  535. Turbo 
  536. twiago GmbH 
  537. UberMedia, Inc. 
  538. ucfunnel Co., Ltd. 
  539. Underdog Media LLC 
  540. Unruly Group Ltd 
  541. uppr GmbH 
  542. Uprival LLC 
  543. usemax advertisement (Emego GmbH) 
  544. Vdopia DBA Chocolate Platform 
  545. Ve Global 
  546. VECTAURY 
  547. Venatus Media Limited 
  548. Vibrant Media Limited 
  549. Vidazoo Ltd 
  550. video intelligence AG 
  551. Video Media Groep B.V. 
  552. Video Reach 
  553. Vidoomy Media SL 
  554. ViewPay 
  555. Viralize SRL 
  556. Visarity Technologies GmbH 
  557. VRTCAL Markets, Inc. 
  558. Vuble 
  559. WebAds B.V 
  560. Webedia 
  561. WebMediaRM 
  562. WEBORAMA 
  563. Welect GmbH 
  564. WhatRocks Inc. 
  565. Whenever Media Ltd 
  566. White Ops, Inc. 
  567. Widespace AB 
  568. Wizaly 
  569. X-Mode Social, Inc. 
  570. xAd, Inc. dba GroundTruth 
  571. YellowHammer Media Group 
  572. Yieldlab AG 
  573. Yieldlove GmbH 
  574. Yieldmo, Inc. 
  575. Yieldr UK 
  576. YOC AG 
  577. Yormedia Solutions Ltd 
  578. ZBO Media 
  579. Zemanta, Inc. 
  580. zeotap GmbH 
  581. Zeta Global 
  582. Ziff Davis LLC 
  583. ZighZag

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

Что же с этим делать? Каждый для себя решает сам. Я лично решил форсировать давно планируемый переезд персональной почты на собственный почтовый сервер. Хотя, конечно, это вариант не для всех, а скорее, для техногиков.

среда, 17 марта 2010 г.

Установка Slackware на программный raid-1 массив

 

Описание задачи

Условия: имеется два одинаковых по размеру, пустых диска /dev/sda и /dev/sdb соответственно.

На основе /dev/sda1 и /dev/sdb1 создать raid-массив первого уровня /dev/md0. Затем установить на /dev/md0 операционную систему Slackware и настроить ее загрузку.

Дополнительные условия:

  • Используем стандартное ядро для slackware версии 2.6.xx, т.о. минимальная версия операционной для которой подходит это описание — Slackware 12.
  • Все примеры приведены для последней на текущий момент версии — Slackware 13, используется ядро 2.6.29.6 и файловая система по умолчанию ext4.
  • Здесь не ставится цель дать полное описание процесса установки Slackware. Внимание обращается лишь на этапы связанные с программным raid-массивом.

 

Решение задачи

Шаг 1. Загрузка с внешнего носителя.

Загружаемся с установочного диска slackware.

Шаг 2. Создание таблицы разделов.

Сначала, с помощью команды:

cfdisk /dev/sda

создаем следующие разделы на первом пустом диске:

  • /dev/sda1 — Раздел под raid-массив. Отводим под него большую часть диска. Установить признак «загрузочный». Задать тип раздела «Linux raid autodetect» (код fd).
  • /dev/sda2 — Раздел под подкачку. Отводим под него половину от необходимого размера подкачки. Задать тип раздела «Linux swap» (код 82).

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

Пример того, что получилось:

# fdisk -l /dev/sda
   Device  Boot  Start   End   Blocks   Id  System
/dev/sda1    *       1   991  7960176   fd  Linux raid autodetect
/dev/sda2          992  1044   425722+  82  Linux swap

Затем копируем таблицу разделов с первого диска на второй:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Убеждаемся, что таблицы разделов на дисках /dev/sda и /dev/sdb идентичны:

# fdisk -l /dev/sda /dev/sdb
   Device  Boot  Start   End   Blocks   Id  System
/dev/sda1    *       1   991  7960176   fd  Linux raid autodetect
/dev/sda2          992  1044   425722+  82  Linux swap

   Device  Boot  Start   End   Blocks   Id  System
/dev/sdb1    *       1   991  7960176   fd  Linux raid autodetect
/dev/sdb2          992  1044   425722+  82  Linux swap

Шаг 3. Создание raid-массива.

Сначала, на всякий случай, очищаем из разделов возможные следы предыдущих raid-массивов:

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1

Теперь, собственно, создаем raid-массив:

mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1

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

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] 
md0 : active raid1 sdb1[1] sda1[0]
      7960064 blocks [2/2] [UU]
      [=>...................]  resync =  8.0% (639040/7960064) finish=7.8min speed=15490K/sec
      
unused devices: <none>

Этот процесс никак не ограничивает работу с уже созданным массивом. Т.е. блочное устройство /dev/md0 уже доступно и с ним можно работать. Можно даже перезагружать компьютер. Но в полноценную работу raid-массив встанет самостоятельно, когда синхронизация будет завершена.

Шаг 4. Установка операционной системы.

Запускаем утилиту установки slackware:

setup

На этапе добавления swap-разделов выделяем разделы /dev/sda2 и /dev/sdb2.

В качестве корнего диска выбираем /dev/md0. Далее соглашаемся его форматировать в предлагаемую по-умолчанию файловую систему ext4.

Далее процесс установки системы протекает абсолютно обычным образом. После завершения установки загружаемся в установленную систему.

Шаг 5. Настройка установленной системы.

Редактируем в файле /etc/fstab строчки монтирования раздела подкачки. Добавляем опцию pri=1 для параллельного использования разделов подкачки:

/dev/md0   /     ext4      defaults        1 1
/dev/sda2  swap  swap      pri=1,defaults  0 0
/dev/sdb2  swap  swap      pri=1,defaults  0 0

Редактируем /etc/lilo.conf, добавляем строчку для установки загрузчика lilo на оба диска /dev/sda и /dev/sdb, а не только на первый диск:

raid-extra-boot=mbr

Это необходимо, чтобы чтобы система смогла загрузиться со второго диска, в случае выхода из строя первого диска. Далее запускаем установку загрузчика lilo:

# lilo
Warning: LBA32 addressing assumed
Added Linux *
The boot record of  /dev/md0  has been updated.
The Master boot record of  /dev/sda  has been updated.
Warning: /dev/sdb is not on the first disk
The Master boot record of  /dev/sdb  has been updated.
2 warnings were issued.

Шаг 6. Переключение на generic ядро.

Создаем файл /etc/mkinitrd.conf, содержащий строки:

CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd-generic-2.6.29.6-smp-raid.gz"
KERNEL_VERSION="2.6.29.6-smp"
MODULE_LIST="ext4"
ROOTDEV="/dev/md0"
RAID="1"

Генерируем initrd-файл:

# mkinitrd -F
OK: /lib/modules/2.6.29.6-smp/kernel/lib/crc16.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/mbcache.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/ext4/ext4.ko added.
5250 blocks

В /etc/lilo.conf добавляем строки:

image = /boot/vmlinuz-generic-smp-2.6.29.6-smp
  initrd = /boot/initrd-generic-2.6.29.6-smp-raid.gz
  root   = /dev/md0
  label  = gen-raid
  read-only

Запускаем установку загрузчика lilo на оба диска в raid-массиве:

lilo

Шаг 7. Проверка.

Перезагружаем компьютер и убеждаемся что загрузка операционной системы происходит нормально с любого диска из raid-массива.

среда, 24 февраля 2010 г.

Перенос установленной Slackware на программный raid1-массив 2

 

Описание задачи

Условия:

  • Имеется диск с установленной операционной системой slackware — /dev/sda.
  • Имеется дополнительный, пустой диск /dev/sdb.

На основе /dev/sda и /dev/sdb создать raid-массив первого уровня /dev/md0. Затем перенести на /dev/md0 операционную систему и настроить ее загрузку. Т.к. один из дисков изначально занят данными, создание raid-массива будем проводить в три этапа:

  1. Создание неполного массива /dev/md0 только на основе /dev/sdb1.
  2. Перенос операционной системы с /dev/sda1 на неполный массив /dev/md0.
  3. Добавление диска /dev/sda1 к raid-массиву /dev/md0.

Дополнительные условия:

  • На рабочем диске существует два раздела — корневой и подкачка.
  • В качестве корневой файловой системы используется reiserfs.
  • Предполагается, что используется стандартное ядро для slackware версии 2.6.xx, т.е. минимальная версия — Slackware 12.

Перед началом необходимо убедиться, что в рабочей slackware установлена утилита mdadm для управления программными raid-массивами. При ее отстутствии нужно установить пакет mdadm.

 

Решение задачи

Шаг 1. Загрузка с внешнего носителя.

Загружаемся с SystemResсueCD или c Slax или чего-нибудь еще, чтобы получить полный доступ ко всем дискам и ни один из них не был бы текущим загрузочным.

Шаг 2. Создание таблицы разделов на новом диске.

Начальное состояние таблицы разделов на дисках:

# fdisk -l /dev/sda /dev/sdb
   Device  Boot  Start   End   Blocks   Id  System
/dev/sda1     *      1   973  7815591   83  Linux
/dev/sda2          974  1044   570307+  82  Linux swap / Solaris

Disk /dev/sdb doesn't contain a valid partition table

Сначала, с помощью команды:

cfdisk /dev/sdb

создаем следующие разделы на новом пустом диске:

  • /dev/sdb1 — Раздел под raid-массив. Отводим под него большую часть диска. Установить признак «загрузочный». Задать тип раздела «Linux raid autodetect» (код fd).
  • /dev/sdb2 — Раздел под подкачку. Отводим под него половину от необходимого размера подкачки. Задать тип раздела «Linux swap» (код 82).

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

Пример того, что получилось:

# fdisk -l /dev/sdb
   Device  Boot  Start   End   Blocks   Id  System
/dev/sdb1     *      1  1009  8104761   fd  Linux raid autodetect
/dev/sdb2         1010  1044   281137+  82  Linux swap / Solaris

Шаг 3. Создание неполного raid-массива.

Сначала, на всякий случай, очищаем возможные следы предыдущих raid-массивов:

mdadm --zero-superblock /dev/sdb1

Теперь, создаем неполный raid-массив, с одним отсутствующим диском:

# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm: array /dev/md0 started.

Просмотреть состояние raid-массива можно с помощью команды:

# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sdb1[1]
      8104640 blocks [2/1] [_U]

unused devices: <none>

Шаг 4. Копирование операционной системы.

Форматируем разделы:

mkfs.reiserfs /dev/md0
mkswap /dev/sdb2

Монтируем raid-массив:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

Монтируем раздел с рабочей системой:

mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1

Копируем содержимое рабочей системы на raid-массив:

cp -aT /mnt/sda1 /mnt/md0

Теперь всё полезное содержимое диска /dev/sda скопировано на raid-массив. Отмонтируем раздел с рабочей системой:

umount /mnt/sda1

Шаг 5. Подготовка таблицы разделов на старом диске.

Копируем таблицу разделов с диска /dev/sdb на /dev/sda:

sfdisk -d /dev/sdb | sfdisk /dev/sda

Убеждаемся, что таблицы разделов на дисках /dev/sda и /dev/sdb стали идентичны:

# fdisk -l /dev/sda /dev/sdb
   Device  Boot  Start   End   Blocks   Id  System
/dev/sda1     *      1  1009  8104761   fd  Linux raid autodetect
/dev/sda2         1010  1044   281137+  82  Linux swap / Solaris

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1     *      1  1009  8104761   fd  Linux raid autodetect
/dev/sdb2         1010  1044   281137+  82  Linux swap / Solaris

Форматируем раздел подкачки:

mkswap /dev/sda2

Шаг 6. Добавление диска в неполный raid-массив.

Опять, очищаем возможные следы предыдущих raid-массивов:

mdadm --zero-superblock /dev/sda1

Добавляем раздел /dev/sda1 в неполный raid-массив /dev/md0:

# mdadm /dev/md0 -a /dev/sda1
mdadm: added /dev/sda1

Здесь запустится процесс синхронизации дисков raid-массива. Отслеживать его можно с помощью команды:

cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid1 sda1[2] sdb1[1]
      8104640 blocks [2/1] [_U]
      [==>..................]  recovery = 13.7% (1118016/8104640) finish=2.5min speed=44720K/sec

unused devices: <none>

Шаг 7. Настройка скопированной системы.

Сохраняем конфигурацию raid-массива:

mdadm -D --scan >> /mnt/md0/etc/mdadm.conf

Редактируем в файле /mnt/md0/etc/fstab строчки монтирования корневого раздела и раздела подкачки:

/dev/md0   /     reiserfs  defaults        1 1
/dev/sda2  swap  swap      pri=1,defaults  0 0
/dev/sdb2  swap  swap      pri=1,defaults  0 0

Шаг 8. Настройка загрузки с raid-массива.

Редактируем /mnt/md0/etc/lilo.conf, заменяем строчку:

boot = /dev/sda1

на:

boot = /dev/md0

И добавляем строчку:

raid-extra-boot=mbr

Далее действуем в зависимости от типа стандартного ядра slackware.

Шаг 8.1. Используется huge ядро.

В /mnt/md0/etc/lilo.conf добавляем строки:

image = /boot/vmlinuz-huge-smp-2.6.27.7-smp
  root  = /dev/md0
  label = gener-raid
  read-only

Версия ядра может быть другой, в зависимости от используемой версии slackware.

Запускаем установку загрузчика lilo на оба диска в raid-массиве:

chroot /mnt/md0 /sbin/lilo

Шаг 8.2. Используется generic ядро.

Создаем файл /mnt/md0/etc/mkinitrd.conf, содержащий строки:

CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd-generic-2.6.27.7-smp-raid.gz"
KERNEL_VERSION="2.6.27.7-smp"
MODULE_LIST="reiserfs"
ROOTDEV="/dev/md0"
RAID="1"

Генерируем initrd-файл:

chroot /mnt/md0 /sbin/mkinitrd -F

В /mnt/md0/etc/lilo.conf добавляем строки:

image = /boot/vmlinuz-generic-smp-2.6.27.7-smp
  initrd = /boot/initrd-generic-2.6.27.7-smp-raid.gz
  root   = /dev/md0
  label  = gener-raid
  read-only

Запускаем установку загрузчика lilo на оба диска в raid-массиве:

chroot /mnt/md0 /sbin/lilo

Шаг 9. Проверка.

Перезагружаем компьютер и убеждаемся что загрузка операционной системы происходит нормально с любого диска из raid-массива.

понедельник, 8 февраля 2010 г.

Перенос установленной Slackware на программный raid1-массив

 

Описание задачи

Условия:

  • Имеется два одинаковых по размеру, пустых диска /dev/sda и /dev/sdb соответственно.
  • Имеется третий диск, например /dev/sdc, с установленной операционной системой slackware.

На основе /dev/sda и /dev/sdb создать raid-массив первого уровня /dev/md0. Затем перенести на /dev/md0 операционную систему и настроить ее загрузку.

Дополнительные условия:

  • На рабочем диске существует два раздела — корневой и подкачка.
  • В качестве корневой файловой системы используется reiserfs.
  • Предполагается, что используется стандартное ядро для slackware версии 2.6.xx, т.е. минимальная версия — Slackware 12. Однако, если очень хочется, существует возможность установки ядра из стандартных пакетов от новых версий slackware на более старые версии этой операционной системы.

Перед началом необходимо убедиться, что в рабочей slackware установлена утилита mdadm для управления программными raid-массивами. При ее отстутствии нужно установить пакет mdadm, который включется в состав дистрибутива начиная с Slackware 10.

 

Решение задачи

Шаг 1. Загрузка с внешнего носителя.

Загружаемся с SystemResсueCD или c Slax или чего-нибудь еще, чтобы получить полный доступ ко всем дискам и ни один из них не был бы текущим загрузочным.

Шаг 2. Создание таблицы разделов.

Сначала, с помощью команды:

cfdisk /dev/sda

создаем следующие разделы на первом пустом диске:

  • /dev/sda1 — Раздел под raid-массив. Отводим под него большую часть диска. Установить признак «загрузочный». Задать тип раздела «Linux raid autodetect» (код fd).
  • /dev/sda2 — Раздел под подкачку. Отводим под него половину от необходимого размера подкачки. Задать тип раздела «Linux swap» (код 82).

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

Пример того, что получилось:

# fdisk -l /dev/sda
   Device  Boot   Start     End      Blocks  Id  System
/dev/sda1  *          1  115498  927737653+  fd  Linux raid autodetect
/dev/sda2        115499  116471    7815622+  82  Linux swap

Затем копируем таблицу разделов с первого диска на второй:

sfdisk -d /dev/sda | sfdisk /dev/sdb

Убеждаемся, что таблицы разделов на дисках /dev/sda и /dev/sdb идентичны:

# fdisk -l /dev/sda /dev/sdb
   Device  Boot   Start     End      Blocks  Id  System
/dev/sda1  *          1  115498  927737653+  fd  Linux raid autodetect
/dev/sda2        115499  116471    7815622+  82  Linux swap

   Device  Boot   Start     End      Blocks  Id  System
/dev/sdb1  *          1  115498  927737653+  fd  Linux raid autodetect
/dev/sdb2        115499  116471    7815622+  82  Linux swap

Шаг 3. Создание raid-массива.

Сначала, на всякий случай, очищаем из разделов возможные следы предыдущих raid-массивов:

mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1

Теперь, собственно, создаем raid-массив:

mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1

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

cat /proc/mdstat

Этот процесс никак не ограничивает работу с уже созданным массивом. Т.е. блочное устройство /dev/md0 уже доступно и с ним можно работать. Можно даже перезагружать компьютер. Но, конечно, в полноценную работу raid-массив встанет самостоятельно, когда синхронизация будет завершена.

Шаг 4. Копирование операционной системы.

Форматируем разделы:

mkfs.reiserfs /dev/md0
mkswap /dev/sda2
mkswap /dev/sdb2

Монтируем raid-массив:

mkdir /mnt/md0
mount /dev/md0 /mnt/md0

Монтируем раздел с рабочей системой:

mkdir /mnt/sdc1
mount /dev/sdc1 /mnt/sdc1

Копируем содержимое рабочей системы на raid-массив:

cp -aT /mnt/sdc1 /mnt/md0

Шаг 5. Настройка скопированной системы.

Сохраняем конфигурацию raid-массива:

mdadm -D --scan >> /mnt/md0/etc/mdadm.conf

Редактируем в файле /mnt/md0/etc/fstab строчки монтирования корневого раздела и раздела подкачки:

/dev/md0   /     reiserfs  defaults        1 1
/dev/sda2  swap  swap      pri=1,defaults  0 0
/dev/sdb2  swap  swap      pri=1,defaults  0 0

Шаг 6. Настройка загрузки с raid-массива.

Редактируем /mnt/md0/etc/lilo.conf, заменяем строчку:

boot = /dev/XXXN

на:

boot = /dev/md0

И добавляем строчку:

raid-extra-boot=mbr

Далее действуем в зависимости от типа стандартного ядра slackware.

Шаг 6.1. Используется huge ядро.

В /mnt/md0/etc/lilo.conf добавляем строки:

image = /boot/vmlinuz-huge-smp-2.6.27.7-smp
  root  = /dev/md0
  label = gener-raid
  read-only

Версия ядра может быть другой, в зависимости от используемой версии slackware.

Запускаем установку загрузчика lilo на оба диска в raid-массиве:

chroot /mnt/md0 /sbin/lilo

Шаг 6.2. Используется generic ядро.

Создаем файл /mnt/md0/etc/mkinitrd.conf, содержащий строки:

CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd-generic-2.6.27.7-smp-raid.gz"
KERNEL_VERSION="2.6.27.7-smp"
MODULE_LIST="reiserfs"
ROOTDEV="/dev/md0"
RAID="1"

Генерируем initrd-файл:

chroot /mnt/md0 /sbin/mkinitrd -F

В /mnt/md0/etc/lilo.conf добавляем строки:

image = /boot/vmlinuz-generic-smp-2.6.27.7-smp
  initrd = /boot/initrd-generic-2.6.27.7-smp-raid.gz
  root   = /dev/md0
  label  = gener-raid
  read-only

Запускаем установку загрузчика lilo на оба диска в raid-массиве:

chroot /mnt/md0 /sbin/lilo

Шаг 7. Проверка.

Выключаем компьютер. Отсоединяем теперь уже не нужный диск /dev/sdc. Включаем компьютер и убеждаемся что загрузка операционной системы происходит нормально с любого диска из raid-массива.