Данный раздел документации предназначен прежде всего для тех, кто только начинает знакомиться с Samba, но между тем уже имеет достаточные знания в области TCP/IP и сетей Microsoft™.

Все, что сказано ниже, относится непосредственно к пакету samba-2.2.3, входящему в состав ALTLinux Master; тем не менее, многое будет справедливо как для предыдущих, так и для последующих версий.
Continue Reading

Настройка программного продукта Samba производится обычно в конфигурационном файле smb.conf, который находится в каталоге /etc/ . Ниже кратком виде опишем синтаксис написания правил в файле smb.conf.
Continue Reading

Данная утилита позволяет решить задачу переноса виртуальной машины с одного сервера KVM на другой, с минимальным простоем виртуальной машины, без использования общего хранилища (non-shared storadge).
Передавать мы будем весь раздел LVM, на который установлена виртуальная машина. Ну а уменьшить время простоя нам поможет магия работы LVM snapshot, информацию о которой вы с легкостью можете найти в интернете.

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

  1. Делаем снимок LVM раздела.
  2. Передаем основной LVM раздел по сети, не останавливая нашу VM.
  3. Когда закончится передача основного раздела, останавливаем VM.
  4. Запускаем lvmsync для передачи снимка по сети. Передается не весь снимок, а только измененные блоки.
  5. Подготавливаем и запускаем VM на новом сервере.

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

Подробнее о работе lvmsync, и дополнительных плюшках вы можете почитать на [urlspan]страничке проекта[/urlspan].

Далее предполагается что у нас есть права sudo в системе, ssh доступ настроен по ключам, а вход под рутом запрещен.

Приступим к переносу VM:
Установка:

Для работы lvmsync нам потребуется Ruby 1.8 (or later), ssh, и dmsetup.
Скачиваем lvmsync на локальный компьютер:

wget https://github.com/mpalmer/lvmsync.git

Копируем lvmsync в root PATH, например в /usr/bin/

Подготовка удаленного сервера (server2):

1) Скачиваем и устанавливаем lvmsync.
2) Создаем LVM раздел для копируемой VM.

server2# lvcreate vg -n new-virtual  -L 16G

Размер раздела должен быть равен исходному разделу (в принципе он может быть и больше исходного, но этот вариант мной не тестировался).

Подготовка локального сервера и перенос VM.

Далее все команды необходимо выполнять на сервере, с которого мы хотим переместить виртуальную машину (server1).

1) Создаем definition xml:

server1# virsh dumpxml virtual > virtual.xml

2) Делаем снимок раздела:

server1# lvcreate --snapshot -L10G -n virtual-snap /dev/vg/virtual

Warning!

Обратите внимание, что размер снимка должен выбираться в зависимости от интенсивности использования VM. Т.к. все данные, пока мы переносим основной раздел, будут «сохраняться» на снимок.
И при полном заполнении снимка, он автоматически [urlspan]деактивируется[/urlspan].

3) Не останавливая VM, переносим основной раздел с помощью dd:

server1# dd if=/dev/vg/virtual bs=1M | gzip -c | pv -ptrb | ssh me@server2 "gunzip -c | sudo dd of=/dev/vg/new-virtual"

Здесь добавлено сжатие передаваемых данных гзипом, и отображение хода передачи данных с помощью pv.

4) Когда перенос будет закончен, останавливаем виртуальную машину:

server1# virsh shutdown virtual

5) И после полной остановки машины запускаем lvmsync для переноса снимка:

server1# lvmsync --stdout /dev/vg/virtual-snap | ssh me@server2 sudo lvmsync --apply - /dev/vg/new-virtual

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

6) Копируем definition xml на удаленный сервер:

server1# scp virtual.xml me@server2:/home/me/new-virtual.xml

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

1) Изменяем definition xml, если необходимо.

2) Создаем виртуальную машину на основе xml:

server2# virsh define new-virtual.xml

3) Запускаем нашу виртуальную машину, и прописываем ее в автостарт:

server2# virsh start new-virtual
server2# virsh autostart new-virtual

Вот и все, перенос виртуальной машины закончен!

Примечания

Утилита тестировалась на Centos 6.4. Про временя переноса сказать что-либо затрудняюсь, т.к. все зависит от интенсивности работы с виртуальной машиной во время ее переноса, и, соответственно, размера снапшота.


[urlspan]http://www.pvsm.ru/linux/37753[/urlspan]

Частенько приходится работать через консоль, поэтому решил собрать здесь основные команды, которые приходится применять чаще всего. Раньше в браузере была куча закладок, на страницы сторонних сайтов, с решением той или иной задачи. Я решил, что лучше все собрать в одном месте. По мере поступления новых must-have буду обновлять. Итак, поехали:

 

Архивы

Создать архив .tar/.tar.gz

tar -cvf file.tar /full/path — создать .tar (без сжатия)

tar -czvf file.tar.gz /full/path — создать .tar.gz (архив GZip)

Распаковать архив .tar/.tar.gz

tar -xvf file.tar — распаковать обычный .tar (без сжатия)

tar -xzvf file.tar.gz — распаковать .tar.gz (запакованны GZip-ом)

Распаковать архив .gz (GZip, без TAR)

gunzip file.gz — распаковать обычный .gz (GZip, без TAR. Распаковываемый архив должен иметь права на исполнение: chmod +x file.gz)

 

Базы данных MySQL

Импорт дампа базы данных

mysql -u db_user -p -h localhost db_name < dump.sql

Импорт дампа базы данных, упакованных в gzip (*.sql.gz)

gunzip < dump.sql.gz | mysql -u db_user -p db_name

Экспорт базы данных (создание дампа)

mysqldump -u db_user -p -h localhost db_name > dump.sql

Создание архива GZip с дампом БД

mysqldump -u db_user -p -h localhost db_name | gzip > dump.tar.gz

Создание дампа нескольких баз данных одновременно

mysqldump -u db_user -p -h localhost -B db_name1 db_name2 db_name3 > databases.sql

Создание дампа всех баз данных

mysqldump -u db_user -p -h localhost -A > all-databases.sql

Сохранить только структуру БД

mysqldump —no-data -u db_user -p -h localhost db_name > schema.sql

Создание дампа только одной или нескольких таблиц БД

mysqldump -u db_user -p -h localhost db_name tbl_name1 tbl_name2 tbl_name3 > dump.sql

Дополнительные атрибуты (уменьшают размер дампа и повышают скорость работы)

mysqldump -Q -c -e -u db_user -p -h localhost db_name > /path/to/file/dump.sql

— Q — оборачивает имена обратными кавычками;

— c — делает полную вставку, включая имена колонок;

— e — делает расширенную вставку.

Если не запускается MySQL, лог ошибок можно увидеть прямо в консоли (команда для Windows)

mysqld —defaults-file=C:Program Files…my.ini —console

 

Файлы/директории

Узнать абсолютный путь до текущего каталога

pwd

Удалить папку со всем ее содержимым

rm -R /path/to/dir

Создать символьную ссылку

ln -s  /etc/apache2/sites-available/site.com.conf /etc/apache2/sites-enabled/site.com.conf

Подсчитать количество файлов в текущем каталоге (включая вложенные)

find . -type f | wc -l

Подсчитать занимаемый размер каталога

du -sh /var

Вывести на экран количество файлов в поддиректориях текущего каталога

for D in `ls -Fl | grep / | awk ‘{print $9}’` ; do echo $D `find -L $D -type f -print | wc -l` ; done

Удалить в директории все файлы старше N дней

find /home/user -type f -mtime +N -exec rm {} ;

Узнать информацию об использовании inodes (файловых дескрипторов):

df -i

Создать патч

diff -uN file.orig file.new > file.patch

Наложить патч

patch file.orig < file.patch

Найти определенные файлы и скопировать их с сохранением иерархии

find . -name «ru.po» -exec cp —parents «{}» /destination/dir/ «;»

 

Прочее

Вывести последние 10 строк из лог-файла, с автообновлением в реальном времени

tail -n10 -f /var/log/sites/your-site.ru.error.log

(путь до файлов с логами Apache у вас скорее всего будет другим)

Узнать информацию о процессоре

cat /proc/cpuinfo

или

lscpu

Показать ТОП10 медленных запросов MySQL (сортировка по времени исполнения time):

mysqldumpslow -s t -t 10 /var/log/mysql-slow.log

Показать ТОП10 запросов MySQL, в который не используются индексы (сортировка по кол-ву вызовов count):

mysqldumpslow -s c -t 10 /var/log/mysql-slow.log

Установить корректно конвертер шрифтов (Debian):

apt-get install libssl-dev build-essential zlibc zlib-bin libidn11-dev libidn11

wget http://people.mozilla.com/~jkew/woff/woff-code-latest.zip

unzip woff-code-latest.zip -d sfnt2woff && cd sfnt2woff && make && mv sfnt2woff /usr/local/bin/

Очень подходит для небольших vps. Заточен для Ubuntu, но думаю, это не проблема.

Скрипт создает 2 архива: в одном файлы, в другом директория с дампами всей БД по базам.
Нужно поменять настройки в начале.

#!/bin/bash

USER=root  #юзер базы данных
PASSWORD=password  #пароль
BACKUP=/media/Backup  #куда сохранять бэкапы
LOG=/var/log  # директория для чистки старых логов
OLD=30  # сколько дней хранить бэкапы (более старые будет удаляться)
PREFIX=work  # если несколько серверов - используйте разные префиксы, чтобы не путаться
DATE=`date '+%Y-%m-%d'`

echo "Backup database to $BACKUP"
mkdir $BACKUP/$DATE.sql
cd $BACKUP/$DATE.sql
    for i in `mysql -u $USER -p$PASSWORD -e'show databases;' | grep -v information_schema | grep -v Database`;
        do mysqldump -u $USER -p$PASSWORD $i > $DATE-$i.sql;
    done

cd ..
tar -cjf $BACKUP/$DATE-sql-$PREFIX.tar.bz2 ./$DATE.sql
rm -rf ./$DATE.sql

echo "Backup files to $BACKUP"
tar -cjf $BACKUP/$DATE-files-$PREFIX.tar.bz2
    /var/www/
    /etc/
    /var/log/
    /root/
    --exclude=$BACKUP
echo "Deleting old backups and logs from $BACKUP & $LOG"
find $LOG -type f ( -name "*.gz" -o -name "*.1*" ) -exec rm '{}' ;
find $BACKUP -mtime +$OLD -exec rm '{}' ;

#pkg install packagename

Просмотреть установленные пакеты

#pkg info

удалить пакет

pkg delete curl

Обновление установленных пакетов при помощи pkgng

pkg upgrade

Аудит безопасности пакетов при помощи pkgng

# pkg audit -F

Автоматическое удаление неиспользуемых зависимостей при помощи pkgng

pkg autoremove

Резервное копирование базы данных установленных пакетов pkgng

pkg backup -d pkgng.db