CTDB Samba Cluster als Shared Storage für MS SQl Server

bit-teufel

bit-teufel

Eroberer
Hallo Zusammen,

ich habe eine etwas abenteuerliche Konfiguration vor.
Ich möchte zwei SQL Server 2008 R2 Ent. Edt. quais parallel laufen lassen.
Als Shared Storage kommt ein Samba Share zum Greifen das via CTDB, OCFS2 und DRBD (primary/primary) geclustered ist.
Den SQL Server binde ich im W2K8R2 Ent. Ed. via mklink als Netzwerk Link in das „C:\Program Files\Microsoft SQL Server" und „C:\Program Files (x86)\Microsoft SQL Server" Verzeichnis auf die zwei Server Nodes ein.
Leider lässt sich aber immer ein SQL Server starten, beim Versuch den zweiten Server zu starten kommt der Fehler:
initerrlog: Could not open error log file 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'. Operating system error = 32(failed to retrieve text for this error. Reason: 15105).

Auf Linux OS Ebene geht auch hervor warum, denn au dem ERRORLOG und weiteren SQL wichtigen Dateien und Systemdatenbanken ist ein lock drauf.

ln-sql-storage1:~/sql_storage # lsof | grep -i -e mdf -e error
smbd 17004 root 36u REG 147,0 15466496 15483726 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/MSDBData.mdf
smbd 17004 root 44uR REG 147,0 12280 15483817 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Log/ERRORLOG
smbd 17004 root 45u REG 147,0 4194304 15483722 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/master.mdf
smbd 17004 root 49rR REG 147,0 63438848 15483449 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn/mssqlsystemresource.mdf
smbd 17004 root 55u REG 147,0 2359296 15483724 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/model.mdf
smbd 17004 root 57u REG 147,0 8388608 15483729 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/tempdb.mdf
smbd 17004 root 58uR REG 147,0 514 15483819 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Log/FDLAUNCHERRORLOG
smbd 17004 root 65u REG 147,0 3145728 37159021 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/node_1.mdf
smbd 17004 root 66u REG 147,0 3145728 37159036 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/sdfgsdfgsfdg.mdf
smbd 17004 root 67u REG 147,0 3145728 37159041 /root/sql_storage/sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/e5jhtzjhdghdhgdghf.mdf
ln-sql-storage1:~/sql_storage # smbstatus | grep -i -e mdf -e error
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/sdfgsdfgsfdg.mdf Wed Jul 25 13:52:12 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/master.mdf Wed Jul 25 13:52:09 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/model.mdf Wed Jul 25 13:52:11 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/tempdb.mdf Wed Jul 25 13:52:12 2012
0:17004 0 DENY_WRITE 0x120196 WRONLY NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Log/FDLAUNCHERRORLOG Wed Jul 25 13:52:12 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/MSDBData.mdf Wed Jul 25 13:52:12 2012
0:17004 0 DENY_WRITE 0x1e0089 RDONLY NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Binn/mssqlsystemresource.mdf Wed Jul 25 13:52:10 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/node_1.mdf Wed Jul 25 13:52:12 2012
0:17004 0 DENY_ALL 0x1e019f RDWR NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/e5jhtzjhdghdhgdghf.mdf Wed Jul 25 13:52:12 2012
0:17004 0 DENY_WRITE 0x120196 WRONLY NONE /root/sql_storage sql_server/MSSQL10_50.MSSQLSERVER/MSSQL/Log/ERRORLOG Wed Jul 25 13:52:08 2012
ln-sql-storage1:~/sql_storage #

hier die smb.conf der beiden CTDB Samba Cluster Knoten

[global]
workgroup = DOMAIN
map to guest = Bad User
netbios name = sql-store-1
security = user
server string = SQL Cluster Store Node 1
guest ok = yes
guest account = root
follow symlinks = yes
unix extensions = no
wide links = yes
disable spoolss = yes
load printers = no
printing = bsd
printcap name = /dev/null
#Cluser Config#####################################################
clustering = yes
idmap backend = tdb2
private dir=/root/sql_storage/lock
lock directory = /root/sql_storage/lock
fileid:mapping = fsid
fileid:algorithm = fsid
vfs objects = fileid
include = registry
ea support = yes
kernel oplocks = no
reset on zero vc = yes

[Logs]
comment = logbook
inherit acls = Yes
path = /var/log/
read only = No
username = root

[Public]
comment = Public Share
inherit acls = Yes
path = /root/public
read only = No

[C-Dollar]
comment = root /
inherit acls = Yes
path = /
read only = No

[Scripte]
comment = Shell Scripte
inherit acls = Yes
path = /root/scripte
read only = No

[sql_storage]
comment = SQL DB storage
inherit acls = Yes
path = /root/sql_storage
read only = No
locking = no
strict locking = no
posix locking = no
oplocks = no
level2 oplocks = yes
fake oplocks = yes
blocking locks = no
#veto oplock files = /*.mdf/*.ldf/*/


kann ich es irgendwie bewerkstelligen das Samba kein Lock auf die Dateien macht, sodass der zweite CTDB Samba Server auch auf die gleichen Dateien zugreifen kann.
Hier noch ein Bild, so wie ich mir das vorgestellt habe
crm_HA_Cluster.png



Vielen Dank im Voraus
B.-D.
 
Zuletzt bearbeitet:
Bitte verwend code tags, so kann das ja niemand lesen. Was genau erwartest du dir, wenn da steht

initerrlog: Could not open error log file 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\ERRORLOG'. Operating system error = 32(failed to retrieve text for this error. Reason: 15105).

Reason:15105, ich liebe diese sprechenden Fehlermeldungen

Kein Zugriff auf das Verzeichnis auf "C:\\", ich geh einfach einmal davon aus, dass das kein samba share ist, ich hab ewig lang kein Windows mehr verwendet. Kann Windows denn jetzt schon Verzeichnisse beliebig mounten?

Wenn du das selbe Verzeichnis per samba freigeben willst kannst du froh sein, dass samba ein lock draufgibt, wenn es erforderlich ist, sonst bekommst du uu irgendwas reingeschrieben. Ich find die Konfiguration, so wie du sie beschreibst auch ziemlich eigen, ich würd für sowas nie samba verwenden, weil du dir da eine menge an Performance verschenkst. Ich würde aber auch nie Microsoft sql server verwenden.

Wenn du sowieso schon einen Microsoft HA Cluster verwendest könntest du einfach den Datenspeicher ausbauen und samba ganz wegfallen lassen.
 
Eigentlich ist das nur eine Machbarkeitsstudie und soll niemals Produktiv eingesetzt werden.
Ich muss deshalb den M$ SQL Server verwenden weil ich im nachhinein ein M$ CRM 2011 installieren will.

Es ist richtig das Samba ein lock auf die Datei setzt, das will ich ja beheben das Samba eben kein lock auf die Datei macht.
 
Abend,

eventuell hilft dir das weiter: Samba-HOWTO-Collection/locking.

Ich glaube nicht das es funktioniert, sollten doch beide DB-Server ans laufen kommen denke ich das du ziemlich schnell Datenmüll auf den Platten hast :).

mfg
HeadCrash
 
Die Sachen unter Samba-HOWTO-Collection/locking habe ich bereits getestet. Leider ohne Erfolg.
Gibt es noch andere Möglichkeiten ?
 
Das scheint mir recht unmöglich denn der Lock kommt vom Windows OS, da kommst mit Samba definitiv nicht weiter. Für sowas wurde SMB auch nie entwickelt.....
 

Ähnliche Themen

Samba Dateien und Ordner verschieben

Ubuntu 14.4: Samba v3 => v4, Kein Zugriff

Samba 4.1.3 auf falschen Netzwerkinterface

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Sambashare ist Readonly

Zurück
Oben