четверг, 12 декабря 2019 г.

Windows 10 + Samba server

Исходные данные: 

Есть сеть без всяких Win-серверов, только Samba. В качестве клиентов нужно подключить Windows 10. 

Собственно проблема в том, что в качестве лекарства от бесконечных дырок, в Windows были отключены многие и многие полезные вещи (вместо поиска ошибок в реализации). В смысле безопасности оно конечно слегчало, только не работает... 

Первоисточники
https://www.youtube.com/watch?v=y6nIEeBak0A - это видео, сильно растянутое, но там все правильно.

А кратенько вот что нам нужно, без картинок.
Часть 1 - гостевой вход.
  • "Выполнить" - gpedit.msc
  • "Административные шаблоны" - "Сеть" - "Рабочая станция Lanman"
  • Там "перевернуть" параметр "включить небезопасные гостевые входы" на 1 (по умолчанию он не определен).
Проверяем (с перезагрузкой). Если Samba достаточно свежая, этого достаточно, если нет...

Часть2 - SMB 1.0.
  • В поиске вводим панель управления, находится "классическое приложение" с таким именем - оно. Запускаем его и заходим в "программы", "Включение и выключение компонентов Windows" - оно!
  • Там включаем SMB 1.0 Client (можно, конечно и сервер, если нужно).

вторник, 22 октября 2019 г.

Восстановление базы MS SQL 7 после физического разрушения носителя.

Исходные данные: 

Есть Windows 2000 (рабочее место доктора в составе флюрографа "Ренекс") с физически развалившимся диском, на котором живет (или жила) база в 380 с небольшим тысяч записей (по числу снимков в соотв. каталогах). 

Меняем диск, копируем все что скопировать можно и начинаем танцы с бубном Собственно нас интересует только база Hospital (живет в d:\Database), остальное можно как-то скопировать из дистрибутива или запустить установку на виртуалке, ценного там нет ничего. Имеем базу в состоянии SUSPECT...
Первоисточники
http://ibnjd.narod.ru/ - тут много чего полезного лежит в смысле дистрибутива.
https://www.sql.ru/faq/faq_topic.aspx?fid=123 - вот тут есть здравое зерно, поскольку в документации никак не отыскать никакой информации о флагах состояния БД (да еще бы быть уверенным что это соответствует именно установленной версии), то проще создать новую базу (ради флагов) и подменить файлы. Следует так же иметь ввиду небольшое отличие в синтаксисе и функциональности. SQL2000 реально много лучше SQL7.

Смотрим лог - самый верх, там версия SQL - у нас 7SP4. На виртуалку (Win XP) ставим ее же. На просторах все есть. При установке указываем авторизацию средствами ОС.

Собственно из всей установки нам нужен файл C:\MSSQL7\BIN\ISQLW.EXE и dll-ки, которые он за собой потянет. Скорее всего можно обойтись и без установки, просто понадергать из инсталляции... - не пробовал. Это QA. В отличие от sql2000, enterprise manager в sql7 не умеет подключать и отключать базы, что делает его бессмысленным. Копируем isqlw.exe в  d:\mssql7\binn\  и пробуем запустить, подключаемся к нашему серверу (имя смотрим в sqlmanger.exe, у нас SRVDOC).

Пробуем тестовый запрос 
SELECT * FROM sysdatabases ;
- должны получить флаги всех таблиц.

Отцепляем базу hospital и переносим файлы куда-либо на хранение.
sp_detach_db 'Hospital'

Создаем  точно такую же пустую базу в том же каталоге.

CREATE DATABASE Hospital
ON 
( NAME=hospital, 
FILENAME ='D:\Database\hospital.mdf' )
LOG ON
( NAME=hospital_log,
FILENAME ='D:\Database\hospital_log.ldf' )
GO

Выполняем тестовый select и смотрим флаг состояния новой чистой БД (1077936141).

Останавливаем SQL
Стираем вновь созданные файлы d:\Database\*.*
Копируем сохраненный ранее файл hospital.mdf на место только что стертых двух.
Запускаем SQL
Подключаемся к нему при помощи QA и продолжаем

use master;
EXEC sp_configure 'allow updates', 1
reconfigure with override
go

Меняем флаг
USE master;
UPDATE sysdatabases SET STATUS=32768 WHERE  name = 'Hospital';

Перезапускаем SQL, подсоединяемся и продолжаем.

Создаем новый log-файл.
DBCC REBUILD_LOG('Hospital', 'D:\Database\hospital_log.ldf')

И собственно восстанавливаем базу.
USE master
GO
sp_dboption 'Hospital', 'single user', 'true';
GO
USE Hospital
GO
DBCC CHECKDB (Hospital, REPAIR_ALLOW_DATA_LOSS);
GO

Если нет ошибок (если есть, можно и повторить)
sp_dboption 'Hospital', 'single user', 'false'
GO
USE master
EXEC sp_configure 'allow updates', 0
go
reconfigure with override
go

Перезапускаем сервер. ВСЕ!




понедельник, 14 октября 2019 г.

Windows 2008R2 и отставание времени

Исходные данные: 

Есть Windows 2008R2 сервер. Живет на виртуалке, как ему и положено. Постоянно (в зависимости от общей нагрузки) на нем отстает время. За 8 часов примерно минут на 40... Что удалось выяснить... Полноценная поддержка ntp на данной ОС не обнаружена. Есть только синхронизация раз в сутки, нечто вроде ntptime. Выполняется по расписанию, легко обнаруживается в соответствующей ветке системных заданий - Microsoft - TimeSyncronization. 

Ничего лучше не придумалось, чем создать задание w32tm /resync с интервалом запуска 10 минут. Собственно все!

вторник, 7 мая 2019 г.

Ubuntu 16.04 + Samba + autofs

Наиболее толковое описание принципов - https://wiki.archlinux.org/index.php/autofs

Почему autofs,  а не тупое монтирование? - В случае каких-либо проблем с сетью, что в мелком офисе совсем не редкость... тупое монтирование ведет себя крайне не дружелюбно (отваливается и не восстанавливается)

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

apt-get install autofs cifs-utils
mkdir -p /net/public
(echo && echo \
"/net    /usr/local/etc/auto.smb  --timeout 60 --browse") >>/etc/auto.master
echo \
"public -fstype=cifs,uid=1001,credentials=/usr/local/etc/smbpwd ://name-srv/share" > /usr/local/etc/auto.smb

Остается создать /usr/local/etc/sambpwd в виде
username=username
password=pAssWord

четверг, 24 января 2019 г.

Xubuntu 18.04, установка на SSD + HDD

Исходные данные: 

Настало время (цена на SSD стала сравнима с ценой HDD) ... для размещения операционной системы... SDD 120 Гб AMD Radeon был выбран во-первых, за хорошую величину TBW (370, против 100 в среднем для этого ценового сегмента). Во-вторых, количество отзывов в DNS на момент написания было 68 (в среднем 2 - 10) - не мне одному нравится.


Первоисточники, мягко говоря, противоречивы.


Разбивка дисков

  Оставляем 5-10% неразмеченной области в конце SDD в качестве резерва для будущих сбойных блоков. На SSD всего 2 раздела - / и swap. swap, несмотря ни на что ставим на SDD, /var - на HDD, ну и ничего ценного на SDD класть не будем, стало быть /home - на HDD.  Под /var на HDD отведем 2 - 8 Гб, обычно хватает. Остальное - /home, и все что еще захочется. На SSD размеры разделов кратны 8. Это все, что касается разбивки. Файловая система на SSD и HDD ext4 (был опыт восстановления btrfs после развала... ну её).

Собственно установка в комментариях не нуждается.


Доводка после установки.


В  /etc/fstab делаем

LABEL=rootfs /               ext4    errors=remount-ro,noatime 0       1
#
LABEL=swapfs none            swap    sw,discard              0       0

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

Дополнение от 7 мая 2019.


Не смог найти точный рецепт, но где-то в дебрях debian была описана идея объединить в raid1 ssd и hdd. Скорость становится близкой к ssd при надежности hdd. На момент описания это все проделано, "на глаз" скорость ближе к ssd, чем к hdd. Итак ssd тот же AMD 120Гб и HDD старинный SAMSUNG 80 Гб. Делалось на работающей системе.

  • Грузимся с usb (используя clonezilla, она понимает md и много чего еще) и копируем все что нам требуется сохранить на внешний HDD. В результате освобожден и SSD (/dev/sda) и HDD (/dev/sdb)
  • На HDD (Samsung) создаем один единственный раздел с типом raid autodetect (fd).
  • При помощи sfdisk -d /dev/sdb | sfdisk /dev/sda создаем такой же раздел на SSD. 
  • Открываем SSD fdisk-ом и добавляем еще swap (+16G). Остальное оставляем неразбитым резервом.
  • собираем md, форматируем обычным образом и копируем туда все сохраненное на внешнем HDD.
  • Далее пошли пляски. Установить загрузчик из-под clonezilla не удастся, ошибка при попытке chroot /mnt/new. 
  • Грузимся с lubuntu (xubuntu) live usb. 
  • Форматируем свап на ssd и подключаем его.
  • Устанавливаем в live - систему mdadm (apt-get install mdadm).
  • Запускаем mdadm --assemble --scan, возможно исправляем /etc/mdadm/mdadm.conf
  • В результате должны получить нормально работающий массив, монтируем его куда - либо,  подключаем /dev /sys /proc, ревизируем новый fstab.
  • Чрутимся в новую систему и устанавливаем загрузчик обычным способом.

Нечто вроде справки, варианты команд, чтоб не искать.

cd srcdir ; tar c . | ( cd dstdir ; tar xvf - )
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hd[ab]1
mkfs.ext4 -L rootmd /dev/md0
mkswap -L swapssd /dev/sda2
mdadm --assemble --scan ; mdadm --auto-detect
mount -B /dev /mnt/new/dev
grub-install /dev/sda ; grub-install /dev/sdb ; update-grub



среда, 28 ноября 2018 г.

Домашний файловый сервер

Исходные данные: 
Нужно сделать сервер для домашней сети. Тихий, дешевый, с малым энергопотреблением, с максимально демократичным набором прав пользователей (все всем).

Железо.
Почти случайно был прикуплен DEPO-шный комп на базе intel D2500HN, тихий и вполне шустрый. Добавлен второй HDD 1Tb. Вот и все, что касается аппаратной части.

Установка базовой ОС.

Lubuntu 18.04 без особенностей.  Добавляем самбу, x2go, mc. Сносим не нужности.

apt-get remove pidgin sylpheed
apt-get install mc x2goserver samba

Создаем /usr/local/sbin/startlxde

!# /bin/bash

/usr/bin/lxsession -s Lubuntu -e LXDE

Ну и права на исполнение
chmod a+x /usr/local/sbin/startlxde

С удаленным доступом покончили. Теперь самба.
Создаем /etc/security/limits.d/samba В нем единственная строка.

*       -       nofile          16384


Минимальный /etc/samba/smbd.conf

[global]
   workgroup = WORKGROUP
   netbios name = HEAP
   server string = %h server (Samba, Ubuntu)
   wins support = yes
   dns proxy = no

   log file = /var/log/samba/log.%m
   max log size = 1000
   syslog = 0

   panic action = /usr/share/samba/panic-action %d
   server role = standalone server

   guest account = support
   map to guest = bad user


   security = user

[public]
    path = /storage/public
    browsable = yes
    public = yes
    writable = yes
    guest ok = yes
    read only = no
    create mask = 0666
    directory mask = 0777

Важно замапить Самбошного гостя на реального юзера.

среда, 23 августа 2017 г.

HP MSA2012 и Ubuntu 16.04 LTS при участии LVM

    Попал в руки комплект MSA2012 из двух полок "как есть". Интересен он тем, что можно в него поставить простые SATA-диски и пользовать в качестве не очень быстрого, но большого хранилища. Для начала его нужно сбросить на заводские настройки (достаточно Контроллер А, он верхний). Найти родной разъем micro-DB9 нереально, да и не нужно. Там 2-3-5, достаточно 3-х медицинских внутримышечных иголок, можно даже острые концы не отпиливать, подходят идеально. Если смотреть устройству в спину 1-й пин будет левым-верхним. Сброс на заводские настройки описан тут. Большое "родное" руководство - тут

    Правильно соединяем порты - Контроллер А, порт 0 - к одному порту платы, Контроллер B, порт 0 - к другому. В настройках, в глобальных настройках ищем опции порта, Ставим Loop (на самом деле по умолчанию оно уже стоит), потом смотрим тут же в advanced  option есть Change FC Port Interconnect Setting - идем туда и ставим Interconnect (по умолчанию там P2P). Это активирует внутренний свич (крест - накрест A0-B1 и A1-B0), попытка сделать это соединение при помощи доп. патч-корда (порты все исправны, корд исправен) у меня не получилась, а вот программно все работает, это кстати и есть рекомендованная топология (стр. 43 фирменного юзер-гайда).

    При создании нового тома обязательно указывать LUN, причем они не должны совпадать для контроллеров A и B (сквозные номера, если разные диски принадлежат разным контроллерам, и на них есть соответственно тома, номера LUN не должны совпадать). Нежелательно использовать LUN 0 и 1 (может неправильно определяться)

    После всех подготовок достаточно передернуть оптику, при передергивании каждого из портов контроллера будет обнаружен том (или тома, если создали несколько). Таким образом, если создали один том, - он обнаружится и как sde и как sdd. Это правильно, значит можно использовать множественные пути к тому.

Для работы нужно поставить только multipath-tools, multipath -ll сразу покажет готовые к работе тома, например вот так

root@cardioserv:~# multipath -ll
3600c0ff000d726ca80e4255901000000 dm-0 HP,MSA2012fc
size=2.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 4:0:0:2 sdf 8:80 active ready  running
  `- 5:0:0:2 sde 8:64 active ready  running
    Концепция описана в руководстве. В скриншоте выше уже ничего и делать не надо. Можно брать устройство /dev/mapper/3600c0ff000d726ca80e4255901000000 в работу.

    Нечто вроде краткой справки по LVM, но иметь ввиду что она слегка устарела - на текущий момент LVM сам определяет (по умолчанию) что работает через multipath, ничего дополнительного в конфиге исправлять не нужно (достаточно внимательно прочитать сам конфиг до конца и многое станет понятным). Дальше собственно создаем pv, группу, lv, форматируем (задаем имя сразу для внесения в fstab)

root@cardioserv:~# pvcreate /dev/mapper/3600c0ff000d726ca80e4255901000000 
  Physical volume "/dev/mapper/3600c0ff000d726ca80e4255901000000" successfully created
root@cardioserv:~# vgcreate vg00 /dev/mapper/3600c0ff000d726ca80e4255901000000 
  Volume group "vg00" successfully created
root@cardioserv:~# lvcreate -l100%FREE vg00 -n smb0
  Logical volume "smb0" created.
root@cardioserv:~# ls /dev/mapper/
3600c0ff000d726ca80e4255901000000  control  vg00-smb0
root@cardioserv:~# mkfs.ext4 -L smb0fs /dev/mapper/vg00-smb0
mke2fs 1.42.13 (17-May-2015)...

    SATA-диски горят зеленым, если свободен, сигнал гаснет, когда диск используется в составе виртуального диска.

   При первом обращении к вновь созданному тому (или при монтировании после загрузки) вылезает единичная ошибка типа
blk_update_request: critical target error, dev dm-0
Точная причина не выяснена, последствия не обнаружены...

Дополнение от 12 мая 2020.

   Много времени прошло... Девайс жив и здоров. Стало известно что размер физ. диска не может быть более 2GB.
  При добавлении виртуального диска нужно перечитать список устройств в соответствии с http://www.kentavr.com.ru/forum/viewtopic.php?t=8790.
echo "- - -" >/sys/class/scsi_host/hostX/scan  
для hostX из ls /sys/class/scsi_host/.
Их оказалось с 0 по 6-й, можно руками, можно циклом... Диск готов к работе практически сразу, несмотря на выполняющиеся утилиты.
Хорошо видны пары дисков.
root@cardioserv:~# multipath -ll
3600c0ff000d726ca80e4255901000000 dm-1 HP,MSA2012fc
size=2.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 4:0:1:2 sda 8:0  active ready running
  `- 5:0:0:2 sdb 8:16 active ready running
3600c0ff000d729116207435e01000000 dm-2 HP,MSA2012fc
size=2.0T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 4:0:0:3 sde 8:64 active ready running
  `- 5:0:1:3 sdf 8:80 active ready running