четверг, 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