вторник, 30 июля 2019 г.

Тестирование PostgreSQL, версия 10.8-13.1C

В данной статье опишем установку сервера СУБД PostgreSQL версия 10.5-24.1C на ubuntu server 16.04.6.
Драйверы hasp берем etersoft
1. Установка ubuntu 16.04.6
Устанавливаем ubuntu 16.04.6 без swap файла, т.е. размечаем вручную весь диск ext4 root.
RAM (16 GB) монтируем диск для backup /backup


Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера u1604, позже мы его сменим скриптом, как и ip адрес.

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt autoremove -y
$ sudo apt install mc ssh samba -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.


2. Настройка сети

Тестовый сервер будет использовать dhcp

Смотрим:
$ cat  /etc/hosts
127.0.0.1       localhost
127.0.1.1       u1604



$ sudo nano /etc/hosts

Меняем:

127.0.0.1       localhost test2

Сохранить.

$ cat /proc/cpuinfo | grep MHz
cpu MHz         : 800.111
cpu MHz         : 800.028
cpu MHz         : 800.377
cpu MHz         : 800.190


3. Тюнинг остального:

Сделаем еще один скрипт для настройки остального:

$ nano tuning.sh


#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
#sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
#add a swap file to an Ubuntu 16.04
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo cp /etc/fstab /etc/fstab.bak
sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
sudo sysctl -p
# перезагрузим сеть
#sudo systemctl restart networking.service
#sudo systemctl start networking.service
#sudo systemctl enable networking.service
# Настройка sudo journalctl -b sudo journalctl -b -1 sudo journalctl --list-boots
sudo sed -i 's/#Storage=auto/Storage=persistent/' /etc/systemd/journald.conf
# Отключение уведомлений службы Apport (/var/crash)
sudo sed -i 's/enabled=1/enabled=0/' /etc/default/apport
# Отключим службу ondemand# (для разгона cpu)
# cat /proc/cpuinfo | grep MHz
# systemctl status ondemand
sudo systemctl stop ondemand
sudo systemctl disable ondemand
# shutdown -r now

Сохраним файл tuning.sh

------------------------------------------
Сделаем исполняем
$ chmod +x tuning.sh
$  sudo ./tuning.sh

или
$  sudo sh tuning.sh
------------------------------------------

Перезагрузимся

$ sudo reboot

После перезагрузки по сети можно подключиться MobaXterm

$ cat /proc/cpuinfo | grep MHz 
cat /proc/cpuinfo | grep MHz
cpu MHz         : 4000.489
cpu MHz         : 4000.162
cpu MHz         : 4000.980
cpu MHz         : 4002.072

$ free
              total        used        free      shared  buff/cache   available
Память:    16284616       95512    15944100        1312      245004    15870784
Подкачка:     1048572           0     1048572

Установка СУБД PostgreSQL версия 10.8-13.1C

$ mkdir /home/user/test
В папку /test положить файлы:

postgresql_10.8_13.1C_amd64_deb.tar.bz2
postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2

$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
$ sudo apt update -y
$ sudo apt-get install postgresql-common libtcl8.6 -y
$ dpkg -l | grep postgres | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pgdg-keyring помечен как зафиксированный.
#postgresql-client-common помечен как зафиксированный.
#postgresql-common помечен как зафиксированный.
$ dpkg -l | grep libtcl8.6 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libtcl8.6 помечен как зафиксированный.
$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_deb.tar.bz2 /tmp/post/
$ cp /home/user/test/postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.8_13.1C_amd64_deb.tar.bz2
$ ls 
$ cd postgresql-10.8-13.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.5-24.1C_amd64.deb  postgresql-10_10.5-24.1C_amd64.deb  postgresql-client-10_10.5-24.1C_amd64.deb
$ sudo dpkg -i *.deb
# ниже можно не ставить:
$ cd /tmp/post/
$ tar -xvf postgresql_10.8_13.1C_amd64_addon_deb.tar.bz2
$ ls
$ cd postgresql-10.8-13.1C_amd64_addon_deb
$ sudo dpkg -i *.deb
# конец не ставить
$ dpkg -l | grep 10.8-13.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#libecpg-compat3 помечен как зафиксированный.
#libecpg-dev помечен как зафиксированный.
#libecpg6 помечен как зафиксированный.
#libpgtypes3 помечен как зафиксированный.
#libpq-dev помечен как зафиксированный.
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-10-dbg помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.
#postgresql-doc-10 помечен как зафиксированный.
#postgresql-plperl-10 помечен как зафиксированный.
#postgresql-plpython-10 помечен как зафиксированный.
#postgresql-plpython3-10 помечен как зафиксированный.
#postgresql-pltcl-10 помечен как зафиксированный.
#postgresql-server-dev-10 помечен как зафиксированный.

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log


$ sudo pg_dropcluster --stop 10 main

$ sudo pg_createcluster --locale ru_RU.UTF-8 10 main --  --data-checksums


$ sudo pg_ctlcluster 10 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 online postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log
 
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak

#Делаем проверки
$ sudo systemctl status postgresql.service
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*
$ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

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

Настройка postgresql.conf для 1С Total Memory (RAM): 16 GB

$ sudo nano /etc/postgresql/10/main/postgresql.conf
Добавить в конец:

# DB Version: 10
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
lc_messages='C'
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo systemctl restart postgresql.service
 -------------------------------------------------------------------------------------------------------

Установка pg_probackup 

pg_probackup описание

$ sudo su -c "echo 'deb [arch=amd64] http://repo.postgrespro.ru/pg_probackup/deb/ $(lsb_release -cs) main-$(lsb_release -cs)' > /etc/apt/sources.list.d/pg_probackup.list" 
$ sudo su -c "wget -O - http://repo.postgrespro.ru/pg_probackup/keys/GPG-KEY-PG_PROBACKUP | apt-key add -" 
$ sudo apt-get update 
$ sudo apt-get install pg-probackup-10
$ dpkg -l | grep pg-probackup-10 | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
#pg-probackup-10 помечен как зафиксированный.

Инициализация каталога резервных копий 1 экземпляр на примонтированом HDD


Каталог резервных копий /backup/pg_probackup расположено на hdd диске, в нем будем ежедневно сохранять backup за 30 дней без непрерывного архивирования.
Если нет дополнительного диска, выполняем закомментированые команды
$ sudo pg_probackup-10 init -B /backup
$ sudo mkdir /backup/copy
$ sudo mkdir /backup/log
$ sudo mkdir /backup/pg_dump
$ sudo chown -R postgres:postgres /backup/
#$ sudo chmod -R 777 /backup/pg_probackup

Определение копируемого экземпляра 
$ sudo -u postgres pg_probackup-10 add-instance -B /backup -D /var/lib/postgresql/10/main --instance main


$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:

max_wal_senders = 10
wal_level = replica
unix_socket_directories='/var/run/postgresql'
# Для настройки архивного резервного копирования разкомментировать:
archive_mode = on
#archive_command ='test ! -f /wal/%f && cp %p /wal/%f' 
archive_command = '/usr/bin/pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

Настройка политики сохранения 5 резервных копий

$ sudo -u postgres nano /backup/backups/main/pg_probackup.conf

Добавить:

retention-redundancy=5

Сохранить


Создание полной автономной резервной копии: 

$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:

Проверка файлов:
$ sudo -u postgres pg_probackup-10 checkdb -B /backup --instance main
INFO: Start checking data files
INFO: Data files are valid

Проверка backup: 
$ sudo -u postgres pg_probackup-10 validate -B /backup
INFO: Validate backups of the instance 'main'
INFO: Validating backup PUVU29
INFO: Backup PUVU29 data files are valid
INFO: Backup PUVU29 WAL segments are valid
INFO: Validating backup PUVTUX
INFO: Backup PUVTUX data files are valid
INFO: Backup PUVTUX WAL segments are valid
INFO: All backups are valid

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

Пример восстановления из полной автономной резервной копии (замена кластера на резервную копию)


Сделали копию:
$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --expired

Перед восстановлением

Просмотр:

$ sudo -u postgres pg_probackup-10 show -B

Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid

Можно восстанавливать.

Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP29I
INFO: Validating backup PRP29I
INFO: Backup PRP29I data files are valid
INFO: Backup PRP29I WAL segments are valid
INFO: Backup PRP29I is valid.
INFO: Restore of backup PRP29I completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service

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

Пример восстановления из полной автономной резервной копии c непрерывным архивированием (замена кластера на резервную копию)


$ sudo -u postgres pg_probackup-10 backup -B /backup --instance main -b FULL --stream --compress --delete-wal --expired


Просмотр:

$ sudo -u postgres pg_probackup-10 show -B /backup


Проверка backup:
$ sudo -u postgres pg_probackup-10 validate -B /backup

INFO: Validate backups of the instance 'main'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
 Можно восстанавливать, но проверим непрерывность архивирования:


Войти в 1с создать документ, провести, выйти из 1с.


$ sudo -u postgres pg_probackup-10 validate -B /backup   --instance main -i PRP6Q5 --time='2042-04-16 12:26:00'
INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
WARNING: Thread [1]: Could not read WAL record at 1/88000000
ERROR: Thread [1]: WAL segment "/backupwal/wal/main/000000010000000100000088" is absent
WARNING: Recovery can be done up to time 2019-05-18 14:36:30+03, xid 0 and LSN 1/2A000198
ERROR: Not enough WAL records to time 2042-04-16 12:26:00+03



Останавливаем 1с
$ sudo systemctl stop srv1cv83.service

Останавливаем postgresql
$ sudo systemctl stop postgresql.service

Удалим кластер main
$ sudo /bin/su postgres -c "rm -rf /var/lib/postgresql/10/main/*"

Восстановим кластер main
$ sudo -u postgres pg_probackup-10 restore -B /backup --instance main -i PRP6Q5 --recovery-target='latest'


INFO: Validating backup PRP6Q5
INFO: Backup PRP6Q5 data files are valid
INFO: Backup PRP6Q5 WAL segments are valid
INFO: Backup PRP6Q5 is valid.
INFO: Restore of backup PRP6Q5 completed.


Запускаем postgresql
$ sudo systemctl start postgresql.service

Запускаем 1с
$ sudo systemctl start srv1cv83.service


Для проверки стандартной wal архивации:

$ sudo mkdir -p /wal
$ sudo chown -R postgres:postgres /wal


$ sudo nano /etc/postgresql/10/main/postgresql.conf

расскоментировать:
archive_command ='test ! -f /wal/%f && cp %p /wal/%f'

Сохранить.

$ sudo systemctl restart postgresql.service

В папку /test положить файлы:
deb64_8_3_15_1565.tar.gz

# установка 1с
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ sudo apt install imagemagick -y
#$sudo apt install -y unixodbc libgsf-1-114 libglib2.0
$ sudo apt install libfreetype6 libgsf-1-common unixodbc glib2.0
#ubuntu
$ sudo  apt install -y xfonts-utils cabextract
$ sudo apt install ttf-mscorefonts-installer -y
$  ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1565.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1565.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1565_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1565_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1565_amd64.deb
#$ sudo apt -f -y install
$ sudo chown -R usr1cv8:grp1cv8 /opt/1C
$ sudo echo -e "pass\npass\n" | sudo passwd usr1cv8
$ sudo service srv1cv83 start
$ sudo service srv1cv83 status
#$ sudo usermod -aG sudo usr1cv8

$ sudo  apt install -y libc6-i386
$ mkdir /tmp/hasp
$ cd /tmp/hasp
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd-modules_7.90-eter2ubuntu_amd64.deb
$ wget http://download.etersoft.ru/pub/Etersoft/HASP/last/x86_64/Ubuntu/16.04/haspd_7.90-eter2ubuntu_amd64.deb

$ sudo dpkg -i *.deb
#$ sudo apt-get install -f -y
$ sudo service haspd start
$ sudo service haspd status
$ sudo reboot

$ sudo service srv1cv83 status
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*


Не встал скриптом imagemagick?
Без строчки ниже будет ругаться при входе в 1с
$ sudo apt-get install imagemagick  -y

Для программной лицензии (прявязанной к hasp)

в /var/1C/licenses
Положить лицензию


$ sudo mv 20190207114003.lic /var/1C/licenses


Тестирование PostgrSQL 10.5.24-1c vs 10.8.13-1c

понедельник, 29 июля 2019 г.

OpenConnect logging

Восстановление данных PostgreSQL после потери pg_control

Восстановление данных PostgreSQL после потери pg_control

Grigory Smolkin:
Кстати про  resetxlog
если применяли, то можете спокойно удалить этот инстанс
Используя pg_resetxlog, вы можете потерять часть данных. Вы отказываетесь от всех текущих журналов транзакций и считаете, что PostgreSQL завершил свою работу штатно: все данные записаны в файлы, как будто только что завершилась контрольная точка.
resetxlog - должно применяться только для того, чтобы открыть базу и снять с нее  логический дамп, работать в ней нельзя!!!
И только в том случае если нет резервной копии!!!
ковыряться в нем нет смысла, он неконсистентен.

воскресенье, 28 июля 2019 г.

Настройка программного RAID1 на работающей системе Ubuntu

The Software-RAID HOWTO
Настройка программного RAID1 на работающей системе Ubuntu
Создание RAID-массивов с помощью mdadm в Ubuntu 16.04
Настройка программного RAID-1 на работающей системе Ubuntu 14
Setting up RAID on an existing Debian/Ubuntu installation

Установка RAID1 на работающую систему с файлом подкачки

За основу взята:
Configuring Software RAID1 after installation of Ubuntu 16

Установка необходимых пакетов: 

$ sudo apt update
$ sudo apt upgrade
===========================
Если обновилось ядро:
$ sudo reboot
$ sudo apt autoremove
$ sudo reboot
$ sudo reboot
===========================
#$ sudo apt-get install mdadm initramfs-tools
$ sudo modprobe linear
$ sudo modprobe multipath
$ sudo modprobe raid0
$ sudo modprobe raid1
$ sudo modprobe raid5
$ sudo modprobe raid6
$ sudo modprobe raid10


Проверка:
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices: <none>

Если диск sdb содержит таблицу разделов, ее нужно удалить
$ sudo fdisk /dev/sdb
p
d
o

Получение точной копии разделов диска (MBR)
$ sudo partprobe

$ sudo sfdisk -d /dev/sda | sudo sfdisk --force /dev/sdb

$ sudo fdisk -l



Удаление следов RAID:

$ sudo mdadm --zero-superblock /dev/sdb
mdadm: Unrecognised md component device - /dev/sdb
user@u1604:~$ sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb
mdadm: /dev/sdb appears to be part of a raid array:
       level=raid0 devices=0 ctime=Thu Jan  1 03:00:00 1970
mdadm: partition table exists on /dev/sdb but will be lost or
       meaningless after creating array
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.


Создание массива RAID 1 md0:
$ sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb

Проверка:
 
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1]
      1048444928 blocks super 1.2 [2/1] [_U]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

Форматирование:

$ sudo mkfs.ext4 /dev/md0
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 262111232 4k blocks and 65527808 inodes
Filesystem UUID: c228788a-ebff-4164-83b4-31965691aa0d
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

Allocating group tables: done
Сохранение таблицы inod'ов: done
Creating journal (32768 blocks): готово
Writing superblocks and filesystem accounting information: готово


Теперь нам нужно настроить конфигурацию mdadm, которая в настоящее время не содержит никакой информации о рейде. 
 
$ sudo cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
$ sudo su -c "mdadm --examine --scan >> /etc/mdadm/mdadm.conf"
$ sudo cat /etc/mdadm/mdadm.conf


Настройка системы на RAID1
Смонтируем в существующей файловой системе:
 
$ sudo mkdir /mnt/md0
$ sudo mount /dev/md0 /mnt/md0
$ sudo blkid /dev/md0

/dev/md0: UUID="dbc39615-7d04-44b8-b469-f2213dd99e4f" TYPE="ext4"

Откорректируем  для sda1
# / was on /dev/sda1 during installation
UUID=2d120de9-4107-4af2-9cca-f60f51c99e42 /               ext4    errors=remount-ro 0       1

$ sudo nano /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
#UUID=2d120de9-4107-4af2-9cca-f60f51c99e42 /               ext4    errors=remount-ro 0       1
UUID=dbc39615-7d04-44b8-b469-f2213dd99e4f /               ext4    errors=remount-ro 0       1


Сохранить.

$ sudo sed -e "s/dev\/sda1/dev\/md0/" -i /etc/mtab

$ sudo cat /etc/mtab
$ sudo cat /etc/mtab | grep md0
/dev/md0 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
/dev/md0 /mnt/md0 ext4 rw,relatime,data=ordered 0 0

Настройте загрузчик GRUB2
$ uname -r

4.15.0-54-generic



Теперь мы скопируем пользовательский файл и отредактируем его, чтобы добавить нашу временную конфигурацию:

$ sudo cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup

$ sudo nano /etc/grub.d/09_swraid1_setup

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
# добавить ниже заменив на 4.15.0-55-generic
menuentry 'Ubuntu, with Linux 4.15.0-55-generic RAID Temp' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod mdraid1x
    insmod ext2
    set root='(md/0)'
    linux   /boot/vmlinuz-4.15.0-55-generic root=/dev/md0 ro   quiet
    initrd  /boot/initrd.img-4.15.0-55-generic
}

Сохранить

$ sudo update-grub
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.15.0-54-generic
Найден образ initrd: /boot/initrd.img-4.15.0-54-generic
Найден образ linux: /boot/vmlinuz-4.15.0-45-generic
Найден образ initrd: /boot/initrd.img-4.15.0-45-generic
завершено

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915


Теперь нам нужно скопировать все файлы из корня файловой системы в раздел raid:

$ sudo cp -dpRx / /mnt/md0
Если вы делаете это удаленно через SSH, вы можете добавить в команду параметр verbose, чтобы увидеть, что процесс все еще выполняется. Я бы не рекомендовал делать это на сервере, так как частота обновления на мониторе замедлит процесс.


$ sudo cp -dpRxv / /mnt/md0

Теперь пришло время перезагрузиться в раздел Raid, но прежде чем мы это сделаем, нам нужно убедиться, что на обоих дисках установлен grub:
 $ sudo grub-install /dev/sda
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.

$ sudo grub-install /dev/sdb
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.

$ df -h
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
udev             7,8G            0  7,8G            0% /dev
tmpfs            1,6G         2,8M  1,6G            1% /run
/dev/sda1        459G          18G  418G            5% /
tmpfs            7,8G          52K  7,8G            1% /dev/shm
tmpfs            5,0M         4,0K  5,0M            1% /run/lock
tmpfs            7,8G            0  7,8G            0% /sys/fs/cgroup
/dev/sdc1        1,8T          12G  1,7T            1% /backup
tmpfs            1,6G            0  1,6G            0% /run/user/999
tmpfs            1,6G            0  1,6G            0% /run/user/1000
/dev/md0         459G          18G  418G            5% /mnt/md0


$ sudo reboot

$ df -h
Файл.система   Размер Использовано  Дост Использовано% Cмонтировано в
udev             7,8G            0  7,8G            0% /dev
tmpfs            1,6G         1,2M  1,6G            1% /run
/dev/md0         459G          18G  418G            5% /
tmpfs            7,8G          52K  7,8G            1% /dev/shm
tmpfs            5,0M         4,0K  5,0M            1% /run/lock
tmpfs            7,8G            0  7,8G            0% /sys/fs/cgroup
/dev/sdc1        1,8T          12G  1,7T            1% /backup
tmpfs            1,6G            0  1,6G            0% /run/user/999
tmpfs            1,6G            0  1,6G            0% /run/user/1000
$ sudo fdisk -l
Диск /dev/sda: 465,8 GiB, 500107862016 байтов, 976773168 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: dos
Идентификатор диска: 0x90b7283b

Устр-во    Загрузочный Start Конец Секторы   Size Id Тип
/dev/sda1  *            2048 976771071 976769024 465,8G 83 Linux


Диск /dev/sdb: 465,8 GiB, 500107862016 байтов, 976773168 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: dos
Идентификатор диска: 0x90b7283b

Устр-во    Загрузочный Start Конец Секторы   Size Id Тип
/dev/sdb1  *            2048 976771071 976769024 465,8G 83 Linux


Диск /dev/sdc: 1,8 TiB, 2000398934016 байтов, 3907029168 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 4096 байт
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Тип метки диска: dos
Идентификатор диска: 0xd2256d33

Устр-во    Загрузочный Start Конец Секторы  Size Id Тип
/dev/sdc1               2048 3907028991 3907026944  1,8T 83 Linux


Диск /dev/md0: 465,7 GiB, 499973619712 байтов, 976510976 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes



$$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1]
      488255488 blocks super 1.2 [2/1] [_U]
      bitmap: 4/4 pages [16KB], 65536KB chunk

unused devices: <none>

Теперь добавим диск sda в рейд-раздел

Дальше пойдет процесс синхронизации, он длительный видим на картинке:

$ sudo mdadm --add /dev/md0 /dev/sda
mdadm: added /dev/sda

$ cat /proc/mdstat


Дождаться до окончания синхронизации:

$ cat /proc/mdstat



$ sudo cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
$ sudo su -c "mdadm --examine --scan >> /etc/mdadm/mdadm.conf"
$ sudo cat /etc/mdadm/mdadm.conf

$ sudo rm -f /etc/grub.d/09_swraid1_setup
$ sudo update-grub
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.15.0-54-generic
Найден образ initrd: /boot/initrd.img-4.15.0-54-generic
Найден образ linux: /boot/vmlinuz-4.15.0-45-generic
Найден образ initrd: /boot/initrd.img-4.15.0-45-generic
завершено

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

$ sudo grub-install /dev/sda
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
$ sudo grub-install /dev/sdb
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
$ sudo reboot

$ df -h
$ sudo fstrim -v ./




суббота, 27 июля 2019 г.

Ubuntu 16.04 настройка программного RAID, замена неисправного жесткого диска

Installation/SoftwareRAID
Mdadm
Восстановление GRUB
Замена неисправного жесткого диска в программном массиве RAID1
Меняем отказавший жёсткий диск в программном RAID в Linux
Замена отказавшего жёсткого диска в программном RAID в Linux
Замена диска в програмном RAID1 в Linux 

























 






.
$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1] sda1[0]
      10475520 blocks super 1.2 [2/2] [UU]

unused devices: <none>


$ sudo nano /etc/fstab

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/md0 during installation
UUID=41082b79-7b98-4ec2-9cbd-073b69b04449 /               ext4    errors=remount-ro 0       1


$ sudo mdadm -D /dev/md0




 
$ sudo dpkg-reconfigure grub-pc


Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.15.0-45-generic
Найден образ initrd: /boot/initrd.img-4.15.0-45-generic
завершено


$ sudo fdisk -l




Замена диска в массиве RAID 1

1. Вариант
Диск физически удален из системы. (просто физически отключим диск sda)
Долгая загрузка.

$ cat /proc/mdstat

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[1]
      10475520 blocks super 1.2 [2/1] [_U]

unused devices: <none>



$ sudo mdadm -D /dev/md0



Диск sdb стал sda1.

Невозможно удалить поврежденный диск, поскольку он отсутствует физически.

Отключим диски недоступные системе:

$ sudo mdadm /dev/md0 -r detached


2. Вариант
Диск присутствует в системе.

Для начала отметим /dev/sda1 как неисправный:

$ sudo mdadm --manage /dev/md0 --fail /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0

Удалим из массива md0

$ sudo mdadm --manage /dev/md0 --remove /dev/sda1
mdadm: hot removed /dev/sda1 from /dev/md0




Общее для Вариант 1 и Вариант 2:

$ sudo poweroff

Установим в систему новый диск, запустим систему.

В bios стоит загрузка с 1 диска sda поэтому увидим:




 Грузиться нужно со 2 диска:



Загрузимся.

$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb1[1]
      10475520 blocks super 1.2 [2/1] [_U]

unused devices: <none>


$ sudo mdadm -D /dev/md0



Диск sdb1 стал sdb1

$ sudo fdisk -l




=====================================================================
Только  для дисков MBR:
 
$ sudo sfdisk -d /dev/sdb | sudo sfdisk /dev/sda
Проверка, что никто не использует диск прямо сейчас ... OK

Диск /dev/sda: 10 GiB, 10737418240 байтов, 20971520 секторов
Единицы измерения: секторов из 1 * 512 = 512 байтов
Размер сектора (логический/физический): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Тип метки диска: gpt
Идентификатор диска: 0A23DBAB-0958-4F34-B4C9-852280FE6C35

Old situation:

Устр-во    Start Конец Секторы Size Тип
/dev/sda1   2048 20969471 20967424  10G Linux RAID

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x7a676785.
Создан новый раздел 1 типа 'Linux raid autodetect' и размера 10 GiB.
/dev/sda2:
New situation:

Устр-во    Загрузочный Start Конец Секторы Size Id Тип
/dev/sda1  *            2048 20969471 20967424  10G fd Автоопределение Linux rai

The partition table has been altered.
Calling ioctl() to re-read partition table.
Синхронизация дисков.

Конец Только  для дисков MBR.
=====================================================================
Только для дисков GPD:
(на картинках ниже для дисков MBR grub не установится)

$ sudo apt-get install gdisk
Теперь скопируем схему раздела из /dev/sdb в /dev/sda:
$ sudo sgdisk -R /dev/sda /dev/sdb

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************

The operation has completed successfully.



Затем необходимо рандомизировать GUID на новом жёстком диске, чтобы убедится, что он уникален.

$ sudo sgdisk -G /dev/sda
The operation has completed successfully.


Посмотреть разделы, убедиться что они одинаковы:

$ sudo sgdisk -p /dev/sda
$ sudo sgdisk -p /dev/sdb
 


Конец Только для дисков GPD.
 =====================================================================
Продолжение:
 
Добавим /dev/sda1 в /dev/md0

$ sudo mdadm --manage /dev/md0 --add /dev/sda1
mdadm: added /dev/sda1


$ cat /proc/mdstat


Дождемся синхронизации:

$ cat /proc/mdstat


Можно так:
#$ sudo grub-install /dev/sda

$ sudo dpkg-reconfigure grub-pc


Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
Установка для платформы i386-pc.
Установка завершена. Ошибок нет.
Создание конфигурационного файла grub...
Найден образ linux: /boot/vmlinuz-4.15.0-45-generic
Найден образ initrd: /boot/initrd.img-4.15.0-45-generic

Проверяем, загружаемся с первого диска.



пятница, 26 июля 2019 г.

pgAdmin перенос базы с Windows на Linux


Выгрузка информационной (подключение к Windows серверу)

Кодировка UTF8



1. Вариант на другом сервере, нет базы:


Нужно создать базу:









Восстановить базу:




C:\Program Files (x86)\pgAdmin 4\v4\runtime\pg_restore.exe --host "http" --port "5432" --username "postgres" --no-password --role "postgres" --dbname "demo" --verbose "G:\\Backup\\demo_utf8.sql"


Создать базу в 1С.




2. Вариант база существует

Если на сервере база уже есть,  нужно остановить сервер 1С

 $ sudo service srv1cv83 stop

Удалить базу



Выполнить Вариант 1 без создания базы в 1С

Запустить сервер 1С.

$ sudo service srv1cv83 start

.