2016-09-12

Proxmox и SMB/CIFS-хранилище


Использую Proxmox дома и столкнулся с неприятной проблемой - при бэкапе относительно больших (несколько гиг) виртуалок на сетевую хранилку (бомжовый QNAP), подключенную по NFS, Proxmox затыкался и повисал вхлам. Вероятно в этом виновата хранилка, возможно, не очень тянущая NFS, может быть в проксмоксе с этим какие-то проблемы, но я решил что пусть оно работает через самбу. Делать перманентное подключение не хотелось, так что я воспользовался autofs, которая неплохо зарекомендовала себя на моем ноуте.

Итак, ставим autofs на сервер проксмокса
aptitude install autofs

Создаем корневую папку для шар
mkdir /mnt/autofs

Редактируем /etc/auto.master, добавляя строку
/mnt/autofs /etc/auto.smb --timeout=300

Рестартим сервис
/etc/init.d/autofs restart

Тут надо сказать что это очень упрощенный подход без использования логина и пароля (моя шара домашняя и открыта для всех), и без указания конкретной шары. После всего проделанного, через корень /mnt/autofs будет доступно все сетевое окружение. Например мой NAS имеет IP 192.168.1.2 и шару Public, и я могу теперь обратиться к ней:
ls /mnt/autofs/192.168.1.2/Public

Далее все просто. Создаем папку для проксмокса
mkdir /mnt/autofs/192.168.1.2/Public/proxmox

Добавляем эту папку в стораджи как локальную директорию.



Такой метод вполне подходит для хранения бэкапов, темплейтов и исошников.

2016-09-08

Бэкап всех баз MySQL с ротацией (удалением старых) бэкапов

Скрипт делает дампы всех БД сервера, сохраняя в папки именованные по дате и времени создания. Сохраняются последние N (переменная $BACKUPS) бэкапов.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Optional variables for a backup script
MYSQL_USER="root"
MYSQL_PASS="password"
BACKUP_ROOT=/var/backups/mysql;
BACKUPS=2;
BACKUP_DIR="$BACKUP_ROOT/$(date +%Y-%m-%dT%H_%M_%S)";

# Create folders
test -d "$BACKUP_DIR" || mkdir -p "$BACKUP_DIR"
# Get the database list, exclude information_schema
for db in $(mysql -B -s -u $MYSQL_USER --password=$MYSQL_PASS -e 'show databases' | grep -v information_schema)
do
  # dump each database in a separate file
  mysqldump -u $MYSQL_USER --password=$MYSQL_PASS "$db" | gzip > "$BACKUP_DIR/$db.sql.gz"
done

# backup cleanup
ls "$BACKUP_ROOT" \
        | head -n$(expr $(ls "$BACKUP_ROOT" | wc -l) - $BACKUPS) \
        | while read in; 
                do rm -rf  "$BACKUP_ROOT/$in"; 
          done

2016-09-03

Aimp: database disk image is malformed

При возникновении такой ошибки стоит проверить файлы баз данных, которые использует AIMP. Они расположены в папке профиля: %appdata%\AIMP и немногочисленных подпапках.
Файлы баз имеют расширение *.db, проверить их можно утилитами для работы с sqlite, например: SqliteBrowser
Поврежденный файл можно просто удалить, если не удается его восстановить. При этом, конечно, в зависимости от файла может потеряться часть настроек - например обнулится медиатека.