Связаться со мной:
8 заметок с тегом

Linux

Перенос linux на другой диск на примере debian/ubuntu

Навеяно статьей про перенос freebsd на другой диск. Будем делать тоже самое но на linux. В linux все несколько сложнее.

Для начала нужно подсоединить новый диск и загрузится. В системе должны присутствовать 2 диска, первый с нашей системой, а второй пустой. Второй мы можем разметить по своему усмотрению или же скопировать разметку с первого диска(если второй диск идентичен первому). Как скопировать разметку можно прочесть здесь. Как разметить вручную думаю разберётесь сами, благо мануалов в интернете полно. После создания разметки разделы надо отформатировать примерно так.

# mkfs.ext4 /dev/sdb1

Затем примонтируем его в /mnt

# mount /dev/sdb1 /mnt

Теперь нам нужно создать дампы разделов, в данном случае нужно создать только дамп sda1. Установим утилиты dump/restore.

# apt-get install dump

И создаем дамп раздела в файл /mnt/root.img

# dump -0f /mnt/root.img /

Создание дампа в /mnt/root.img возможно когда на разделе используется менее 50% от /dev/sdb1. Иначе на разматывание дампа места не хватит. В остальных случаях нужно создавать дамп в другом месте, но не в разделе корня, чтобы дамп не мотал сам себя. Можно использовать раздел другой тачки примонтированный по sshfs, я проверял это прекрасно работает.
Переходим в /mnt и разматываем дамп.

# cd /mnt
# restore -rf /mnt/root.img

Как видим раздел перенесся на /dev/sdb1. Если у нас /boot на отдельном разделе, то переносим его аналогично.

Теперь нам нужно установить загрузчик.

# grub-install --root-directory=/mnt /dev/sdb

Затем если требуется правим /mnt/etc/fstab и меню grub в /mnt/boot/grub/grub.cfg.

# nano /mnt/etc/fstab
# nano /mnt/boot/grub/grub.cfg

Тут немного поясню зачем проверять и править эти файлы. У меня например в этих файлах были прописаны uuid разделов, и если мы уберем старый диск то ОС соответственно не загрузится, т.к у новых разделов у нас другие uuid. Я вместо uuid прописал реальные устройства корня и свопа /dev/sda1 и /dev/sda3. Все устройства sdb, станут у нас sda после извлечение первого диска.

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

P.S. Утилиты dump и restore не ограничиваются переносом ОС с одного диска на другой. Таким образом можно переносить linux вообще на другую тачку с другим железом и дисками. Процедура почти такая же за небольшими изменениями.

  1. На первой тачке создаем дамп ОС;
  2. Загружаем вторую тачку с livecd;
  3. Размечаем и форматируем диски;
  4. Копируем туда дамп c первой тачки(по scp, например);
  5. Разворачиваем дамп с помощью restore;
  6. Устанавливаем загрузчик;
  7. Загружаемся.
2015   centos   debian   dump   Linux   restore   ubuntu

Установка облака mail.ru в linux

Теперь облако mail.ru распространяется не бинарником, как я описывал в предыдущей статье, а установочными файлами под разные дистрибутивы. Список дистрибутивов и ссылки на установочные файлы здесь.

Установка теперь очень простая. Например под Ubuntu 14.04 LTS скачиваем установочный .deb пакет и выполняем в консоли

$ sudo dpkg -i mail.ru-cloud_15.04.0021-trusty_amd64.deb

Или просто запускаем через центр приложений ubuntu.
После установки бинарник будет находится в /usr/bin/cloud, приложение будет в меню Dash, а после запуска иконка появится в трее.

2015   cloud   cloud.mail.ru   Linux   ubuntu   Облако

Мониторинг нагрузки на сервер утилитой atop.

Самой удобной утилитой мониторинга нагрузки на сервере, на мой взгляд, является atop. Огромным плюсом данной утилиты является постоянное ведение логов нагрузки на сервер, это удобно т.к проблемы обычно происходят когда мы не следим за сервером прямо сейчас. А с atop можно отмотать «время назад» и посмотреть нагрузку на сервер в момент проблемы. Данная утилита есть во всех дистрибутивах линукс, также она присутствует во FreeBSD.
Рассмотрим установку утилиты для Ubuntu/Debian, Cenos и FreeBSD.

Ubuntu/Debian:

# apt-get install atop -y

Centos:

# yum install atop -y

FreeBSD:
Определяем местонахождение порта:

# whereis atop
atop: /usr/ports/sysutils/atop

Переходим в каталог

# cd  /usr/ports/sysutils/atop

И устанавливаем порт

# make install clean

После установки мы можем запустить утилиту:

# atop

После запуска мы увидим окно типа такого:

Дожидаемся когда посередине исчезнет надпись

*** system and process activity since boot ***

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

Снизу мы видим процессы с PID’ами, пользователями которым они принадлежат и данными нагрузки которые они создают. Если на какую-либо подсистему сервера идет повышенная нагрузка и нам нужно узнать какой процесс её создает, то мы можем сортировать эти процессы по нагрузке на определенный узел нажатием определенных клавиш.

m - сортировать по занимаемой памяти
d - сортировать по создаваемой нагрузке на диск
u - покажет таблицу нагрузки по пользователям
v - покажет подробную информацию по процессам
g - вернет вывод по умолчанию
n - сортировать процессы по нагрузке на сеть(доступно только с установленным патчем ядра)

Теперь разберёмся как смотреть логи atop. Тут все достаточно просто. Для просмотра лога за текущий день достаточно выполнить

# atop -r

Мы увидим обычное окно atop, как и при просмотре в реальном времени, только по состоянию на 00 часов 00 минут текущего дня. Время можно увидеть в верхней строке. Переместится вперед по времени можно с помощью клавиши t. Назад с помощью shift+t.
Сразу перейти на нужное время можно нажав -b, и в появившемся диалоге ввести нужное время.
Также хранятся логи нагрузки за предыдущие дни. В Ubuntu 14.04 они лежат в каталоге /var/log/atop/. Открыть можно примерно так.

# atop -r /var/log/atop/atop_20140915

Цифры в названии файла обозначают дату в формате ГГГГММДД.

2014   atop   centos   debian   Freebsd   Linux   ubuntu

Установка mpm-itk на apache2. Работа виртуальных хостов под разными пользователями.

По умолчанию apache работает под пользователем www-data. При использовании isp-manager под пользователем apache, если я не ошибаюсь. И получается, что все сайты работают под одним пользователем. Иногда требуется чтобы каждый сайт работал под своим пользователем. Сделать это можно с помощью модуля mpm-itk. Модуль доступен во всех основных дистрибутивах линукс. Мы рассмотрим как установить и настроить его под ubuntu и centos, а так же рассмотрим настройку для серверов с isp-панелью.

Установка и настройка в ubuntu

Для начала установим сам модуль

# apt-get install apache2-mpm-itk

Допустим, что сайты у нас уже есть и находятся в пользовательских каталогах. Сообтветственно нам не нужно создавать пользователей. Если это не так то можно создать пользователей для каждого сайта с помощью useradd с аргументом -d, в котором укажем каталог сайта в качестве домашнего каталога.

Затем правим конфигурационный файл apache.

# nano /etc/apache2/apache2.conf

Внутрь каждого виртуального хоста добавляем такие строки:

<IfModule mpm_itk_module>

AssignUserId user1 user1

</IfModule>

Где user1 user1 - пользователь и группа соответственно.

Перезапускаем apache2

# service apache2 restart

Установка в CentOS

Установим модуль

# yum install httpd-itk

Правим конфигурационные файлы

# nano /etc/sysconfig/httpd

Раскомментируем и изменяем строку на такую:

HTTPD=/usr/sbin/httpd.itk

# nano /etc/httpd/conf.d/php.conf

Добавляем:

<IfModule itk.c>

LoadModule php5_module modules/libphp5.so

</IfModule>

Меняем диррективу SuexecUserGroup на AssignUserID для существующих доменов.

# sed -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf

Для вновь созданных доменов в виртуальном хосте нужно указывать

AssignUserID user1 user1

Где user1 user1 - пользователь и группа соответственно.

# nano /etc/httpd/conf/httpd.conf

Вставляем настройки модуля перед виртуальными хостами

<IfModule itk.c>

StartServers 1

MinSpareServers 1

MaxSpareServers 25

ServerLimit 25

MaxClients 25

MaxRequestsPerChild 4000

</IfModule>

Перезапускаем apache

# service httpd restart

Настройка для сервера с панелью isp.

Откроем конфигурационный файл isp

# nano /usr/local/ispmgr/etc/ispmgr.conf

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

Option ApacheMPM

И рестартим панель

# killall -9 ispmgr

Как проверить что все работает правильно?

В папке виртуального хоста создаем файл с расширением .php и примерно таким содержанием:

<?php

$userinfo = posix_getpwuid(posix_getuid());

echo $userinfo['name'];

?>

Или таким:

<?php echo exec('whoami'); ?>

Открываем этот файл в браузере и выводом этого файла должно быть имя пользователя под которым работает этот скрипт. Так же не забываем что если сервер функционирует давно то в подкаталогах куча фалов принадлежащих пользователю www-data. Неплохо бы сделать chown -R username на каталоги сайтов.

2013   apache2   centos   httpd   httpd-itk   isp-manager   Linux   mpm-itk   ubuntu

Создание LVM на «горячей» машине

Автор: Артем Авдонин

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

fdisk /dev/sda, где /dev/sda — диск на котором мы создаём раздел.

Жмём n для создания нового раздела. enter

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

Далее объявляем раздел LVM. Для этого жмём t, указываем номер раздела и вводим id lvm. Это 8e. Жмём w — записать изменения на диск.

Проделываем подобные операции со всеми дисками, которые планируется добавить в LVM массив. Что бы проверить успешность действий выше можно ввести команду:

fdisk -l /dev/sda

В выводе мы увидим раздел с меткой LVM.

Теперь нужно создать физические разделы на LVM. Для этого воспользуемся командой:

pvcreate /dev/sda4 (в моём случае sda4) и для остальных дисков так же.

Ну и теперь объединяем их в один логический раздел:

vgcreate vg0 /dev/sda4 /dev/sdb1 (тут указываются все разделы, которые нужно объединить в один)

Далее нужно создать том на логическом разделе командой lvcreate:

lvcreate -L2G -nlogvol1 vg0 (где logvol1 метка тома)

Для монтирования LVM используются следующие конструкции, изменённые для конкретного случая:

mkreiserfs /dev/vg0/logvol1 — создаётся файловая система

И монтируем её

mount -t reiserfs /dev/vg0/logvol1 /mnt/lv1

2013   Linux   lvm

Как заставить работать apf-firewall на ядре версии 3.x

Установил apf-firewall на один из серверов, столкнулся с проблемой. При запуске фаервола получил ошибку:

Kernel version not equal to 2.4.x or 2.6.x, aborting.

Фаервол не запустился и правила в iptables не добавились. Путём долгого гуления выяснилось что в коде скрипта стоит проверка версии ядра и на ядрах отличных от 2.4.х и 2.6.х apf отказывается работать. Обойти данное досадное недоразумение, как оказалось, достаточно просто. В файле /etc/apf-firewall/internals/functions.apf находим строку 68 и приводим условие к такому виду:

elif [ "$KREL" == "3.2" ]; then

MEXT="ko"

Где 3.2 ваша версия ядра. Версию ядра можно узнать выполнив:

# uname -a

После этих изменений apf запустился без проблем и правила добавились в iptables. Нормальная работа apf проверена на версии ядра 3.2.х и по информации в интернете 3.0.х. Решение вроде простое, но найти эту информацию оказалось довольно трудно. Поэтому сделал эту запись, возможно кому-то поможет.

Создание установочной флешки Windows 7 из под Linux.

Несколько способов создать загрузочную флешку Windows 7 из под linux.

Способ первый:

Командой fdisk -l определяем флешку. Затем с помощью dd записываем iso образ c windows на флешку:

# dd if=/home/user/windows7.iso of=/dev/sdX

Где /dev/sdX — флешка. Теперь вот здесь качаешь и по инструкции устанавливаешь утилиту ms-sys, которая пропишет правильную MBR для нашей флешки.

Установка простая:

2. Installation

---------------

Step 1, unpack the archive:

tar -xzvf ms-sys*.tgz

Step 2, compile:

cd ms-sys

make

Step 3, become root and install

su (and give password)

make install

Думаю здесь всё понятно. Затем выполняем:

# ms-sys -7 /dev/sdX

Загружаемся с флешки и устанавливаем windows.

Способ второй:

С помощью unetbootin. Сразу скажу, что не знаю насколько работает этот способ. У меня изначально не сложились отношения с unetbootin, на мой взгляд слишком сырая программа, ИМХО. Но многим нравится.

Для начала нужно отформатировать флешку в ntfs. Проверьте чтобы флешка была отмонтирована. Если это не так, то отмонтируйте командой umount. Форматируем:

# mkfs.ntfs /dev/sdX

Затем устанавливаем unetbootin.

# apt-get install unetbootin

Запускаем. Выглядит она вот так:

Снимок экрана от 2013-10-20 10:17:58

Выбираем образ, ваш носитель(/dev/sdX) и нажимаем «ОК». После создания флешки, загружаемся с неё и устанавливаем windows.

Способ третий:

На мой взгляд самый лучший и простой способ. С помощью утилиты winusb. Плюс этой утилиты в том что на флешку она ставит загрузчик grub, который отлично загружается практически на всём возможном железе. И уже grub запускает установщик windows. Установка програмы очень проста:

# add-apt-repository ppa:colingille/freshlight

# apt-get update

# apt-get install winusb

А интерфейс ещё проще чем установка.

Снимок экрана от 2013-10-20 10:19:14

Выбираете либо iso образ, либо диск в приводе. Выделяете вашу флешку. Затем жмете кнопку install. Загружаетесь с флешки, устанавливаете windows.

Вот три простейших способа создать загрузочную флешку windows 7 из под Linux.

Смена пароля admin в vdsmanager.

Vds manager хранит пароли в виде хеша в файле /usr/local/ispmgr/etc/vdsmgr.conf

Для смены пароля на понадобится известный хеш. Возьмем например хеш root пароля из файла /etc/shadow

# cat /etc/shadow|grep root

Копируем строчку с хеш пароля и заменяем старый хеш в vdsmgr.conf. Затем перезапускаем панель

# killall -9 vdsmgr

Заходим в панель с логином admin и паролем root. И меняем пароль на новый.

2013   centos   debian   Freebsd   Linux   passwd   password   ubuntu   vds-manager   vdsmgr