c3d2-wiki/Server%2Fstorage.mw

524 lines
17 KiB
Plaintext

{{beinhaltet Abweichungen von der Realität}}
== Hardware ==
; CPU: [http://ark.intel.com/de/products/27205/Intel-Xeon-Processor-3060-4M-Cache-2_40-GHz-1066-MHz-FSB 2.40 GHz]
; RAM: 4 x 2 GB
; Board: [http://www.supermicro.com/products/motherboard/xeon3000/3000/pdsmi_.cfm Xeon 3000 PDSMi+]
; HDD:
:* 1 x [http://www.seagate.com/support/disc/manuals/sata/100390001c.pdf 500 GB]
:* 1 x [http://www.wdc.com/wdproducts/library/SpecSheet/ENG/2879-701229.pdf 2 TB]
:* 1 x [http://www.wdc.com/en/library/sata/2879-701229.pdf 1 TB]
:* 1 x [http://www.wdc.com/wdproducts/library/AAG/ENG/2178-771115.pdf 1 TB]
=== Bezeichnung ===
Die "richtige" Bezeichnung ist ''[[#Bezeichnung storage|storage]]''.
Jedoch schweben eine Vielzahl von anderen Begrifflichkeiten herum, die auch irgendwie [[Server/storage|storage]] meinen.
==== Bezeichnung ''storage'' ====
Die wohl ursprünglichste und "traditionellste" Bezeichnung ist ''storage''.
Der Name ist Programm: [[Server/storage|storage]] dient als Storage für Daten für das [[HQ]].
==== Bezeichnung ''freebert'' ====
Arg motiviert wurde [[Server/storage|storage]] mal auf ein neues System mit [[FreeBSD]] überführt.
Als Bezeichnung ergab sich ''freebert'' nach dem Muster
:: [[FreeBSD]]
: meets
:: das Dogma ''[[w:de:Wildcard (Informatik)|.*]]''''[[w:en:List of Dilbert characters|bert]]''
.
==== Bezeichnung ''freenas'' ====
Bei dem Umstieg zu [[FreeNAS]] als [[#Betriebssystem]] für [[Server/storage|storage]] wurde auch die Bezeichnung üblich.
==== Bezeichnung ''feile'' ====
''feile'' ist letztlich aber eine der [[#Jails]] auf [[Server/storage|storage]].
Als Bezeichnung ergab sich ''feile'' nach der üblichen chaotischen Verballhornung von Begrifflichkeiten des Zwecks, hier den Dienst zur Verwaltung von Dateien (files).
== Betriebssystem ==
Der [[Server/storage]] wird mit [[FreeNAS]] betrieben.
=== [[FreeNAS]] ===
==== Installation vom [[FreeNAS]] ====
{{beinhaltet Abweichungen von der Realität}}
<!-- oder ist das tatsächlich noch so? -->
; Stand: {{#dateformat:2014-09-12}}
* boot vom 8 GB USB Stick
* zpool import der 192 ZFS Datasets unter /mnt/zroot
==== Aktualisierung vom [[FreeNAS]] ====
* laufende Instanzen in der [[#Jail zum Betrieb von VirtualBox]] stoppen
* (möglichst) Jails stoppen
* [[#FreeNAS]] (per web user interface) aktualisieren
*: Neustarten (was FreeNAS ohnehin am Ende vom Aktualisieren macht) vom [[#FreeNAS]]
==== Dienste mit dem [[FreeNAS]] ====
* Samba
* NFS
* iSCSI
* [[#Jails]]
== [[Container]] ==
=== Jails ===
[[#FreeNAS]], basierend auf [[FreeBSD]] bietet [[Jail]]s für [[Container]].
Bei [[#FreeNAS]] werden verschiedene Wege (Arten) an [[Jail]]s angeboten:
* [http://doc.freenas.org/9.3/freenas_jails.html "traditionelle" Jails]
*: Mit wenigen kleinen Ausnahmen handelt es sich um eine Jail, wie sie auch bei FreeBSD üblich ist.
* [http://doc.freenas.org/9.3/freenas_jails.html Jails mit einer bestimmten "Vorlage"]
*: Speziell für besondere Dienste, denen Einrichtung insbesondere komplex sind, bietet FreeNAS von durch eine Vorlage vorgefertigte Jails.
* [http://doc.freenas.org/9.3/freenas_plugins.html Plugins]
*: Sogenannte Plugins verwenden das Prinzip für [[Container]] mit [[Jail]]s, sind als auch als [[#Jails]] von [[Server/storage|storage]] zu betrachten.
==== einzelne Jails ====
* [[plex.hq.c3d2.de]]:32400/web/
* [[transmission.hq.c3d2.de]]
* [[couchpotato.hq.c3d2.de]]
* [[sickbeard.hq.c3d2.de]]
* [[bacula.hq.c3d2.de]]
* [[owncloud.hq.c3d2.de]]
* [[minidlna.hq.c3d2.de]]
===== Jail zum Betrieb von ''VirtualBox'' =====
; IP-Adresse: 172.22.99.99
; web user interface: http://172.22.99.99/
Auf [[Server/storage|storage]] läuft eine Jail für [[wikipedia:de:VirtualBox]]. Dazu ist das ''[http://doc.freenas.org/9.3/freenas_jails.html#using-the-phpvirtualbox-template phpVirtualBox Template]'' (für eine Jail bei [[#FreeNAS]]) verwendet. Daher gibt es auch gleich das [[w:de:WUI|web-basierte front-end]] [http://sourceforge.net/projects/phpvirtualbox/ phpVirtualBox] gleich passend mit dazu.
Entgegen dem üblichen Bezeichnungen für Accounts (im [[HQ]]), sind die Bezeichnungen durch das verwendete Template (eigentlich erstmal) vorgegeben. Das betrifft auch die Bezeichnung für den Account mit administrativen Berechtigungen. Auch die sonst übliche Bezeichnung ''root'' wird nicht angewendet.
== Zweck ==
=== aktuelle Verwendung ===
=== frühere Verwendung ===
==== freebert ====
* [[Server/freebert]]
** [[Server/freebert/FreeBSD]]
=== eventuelle Verwendung ===
Bedingt durch den häufigen Wechsel (Umziehen; Dienste zuschalten/testen/abschalten/vergessen) beim System und i.V.m. mangelnder Pflege der Dokumentation sind gewisse Verwendungen womöglich noch da.
: Dieser Abschnitt soll nach Klärung für [[#aktuelle Verwendung]] und [[#frühere Verwendung]] wieder entfernt werden.
: Ferner dient dieser Abschnitt als Erinnerung. Ja, das gehört eigentlich in die [[Diskussion:{{PAGENAME}}]]
; Dienste:
* DLNA Sharing
* File Sharing
* crontab:
<source lang=bash>
00 6 * * * root /usr/sbin/chown -R k-ot:k-ot /rpool
</source>
; Sotfware:
* minidlna
* nfs(3)
* samba(4)
* ftp (in Arbeit)
== Netzwerk ==
=== IP-Adresse ===
; [[w:de:IPv6|IPv6]]: 2001:4dd0:fb82:c3d2::10
; [[w:de:IPv4|IPv4]]: 172.22.99.10
=== [[HQ/c3d2-networking | c3d2-networking]] ===
Das Skript ''[[HQ/c3d2-networking | c3d2-networking]]'' unterstützt bei der Verwendung vom [[Server/storage]] (für [[w:de:Server Message Block|smb]], [[w:de:Network File System|nfs]], [[w:de:WebDAV|webdav]], [[w:de:SSHFS|sshfs]] bei [[Debian GNU/Linux]]).
=== NFS ===
==== Exportieren von NFS ====
; Stand: (vermutlich) {{#dateformat:2014-05-01}} für [[Server/freebert]] (bzw. [[Server/freebert/FreeBSD]]) und denau zu NFSv3
===== Exportieren von NFS bei FreeBSD =====
* mit ZFS sharenfs
: <source lang=bash>vi /etc/rc.conf</source>
<source lang=bash>
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
</source>
direkter ZFS Export
: <source lang=bash>zfs set sharenfs="-maproot=root -network=172.22.0.0 -mask=255.255.0.0" zroot/storage/rpool</source>
Beispiel ''fstab''
: <source lang=bash>172.22.99.10:/mnt/zroot/storage/rpool /mnt/freebert.nfs nfs noauto,soft,noatime,acl,users,timeo=15 0 0</source>
ZFS Clone Stand:
<source lang=bash>zfs clone zroot/storage/c3d2@_0009_system_07.04.2014 zroot/ezjail/storage.hq.c3d2.de/rpool</source>
==== Importieren von NFS ====
===== Importieren von NFS bei GNU/Linux =====
; Installieren der notwendigen Pakete ''nfs-common'' und ''portmap'':
: <source lang=bash>apt-get install nfs-common portmap</source>
; Einhängen bei der lokale Maschine:
: am Beispiel der Daten vom gesamten Unterverzeichnis ''rpool'' auf dem [[Server/storage]] (mit der IP-Adresse ''172.22.99.10'')
: <source lang=bash>mkdir /freebert-nfs</source>
: <source lang=bash>showmount -e 172.22.99.10</source>
: <source lang=bash>mount -t nfs 172.22.99.10:/mnt/zroot/storage/rpool /freebert-nfs -o soft,timeo=15,noatime</source>
: Hinweise:
:* setting noatime is not recomended if you want to use mutt inside your nfs mountpoint
Erstellen eines Eintrages in der Datei <code>/etc/fstab</code> für Verfügbarkeit beim Befehl <code>mount -a</code>
: <source lang=bash>vi /etc/fstab</source>
: am Beispiel der Daten vom gesamten Unterverzeichnis ''rpool'' auf dem [[Server/storage]] (mit der IP-Adresse ''172.22.99.10'')
<source lang=bash>
172.22.99.10:/mnt/zroot/storage/rpool /freebert-nfs nfs noauto,user,soft,timeo=15,noatime 0 0
</source>
===== Importieren von NFS bei FreeBSD =====
: <source lang=bash>vi /etc/rc.conf</source>
<source lang=bash>
nfs_client_enable="YES"
</source>
Einhängen am Beispiel der Daten im Unterverzeichnis ''rpool'' auf [[Server/storage]] an die lokale Maschine
: <source lang=bash>mount 172.22.99.10:/mnt/zroot/storage/rpool /freebert-nfs</source>
===== Importieren von NFS bei MacOS&nbsp;X =====
* Finder -> Gehe zu -> Mit Server verbinden (Apfel+K)
*: <code>nfs://172.22.99.10/mnt/zroot/storage/rpool</code> eintragen
; bei Problemen mit Schreibrechten:
: <source lang=bash>mkdir freebert-nfs</source>
: <source lang=bash>sudo mount -t nfs -o resvport,bg,nfc,nolocks,locallocks,intr,soft,wsize=32768,rsize=3276 172.22.99.10:/mnt/zroot/storage/rpool /Users/<DEIN NAME>/freebert-nfs</source>
:; Finder mit ROOT-Rechten!:
:: <source lang=bash>sudo /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder</source>
===== Importieren von NFS bei Windows 8 =====
* Systemsteuerung -> Programme und Features (aktivieren/deaktivieren) -> Dienste für NFS (Client/Verwaltung) installieren
* Computer -> (Kontextmenü) Netzwerkadresse hinzufügen
*: <code>\\172.22.99.10\mnt\zroot\storage\rpool</code> eintragen
=== Samba&nbsp;4 ===
==== Installieren von Samba&nbsp;4 ====
===== Installieren von Samba4 bei FreeBSD =====
; Stand: (vermutlich) {{#dateformat:2014-05-10}} für [[Server/freebert]] (bzw. [[Server/freebert/FreeBSD]])
Hinweise:
* Samba 4.1 hat derzeit ein kaputtes s3fs, daher 4.0
: <source lang=bash>cd /usr/ports/net/samba4/ && make install clean</source>
@HOST - Samba4 ADS sysvol Kompatibilität per UFS ZVOL
: <source lang=bash>rm -rfv /usr/jails/storage.hq.c3d2.de/var/db/samba4</source>
: <source lang=bash>zfs create -p -V 10g zroot/ezjail/storage.hq.c3d2.de/samba4db</source>
: <source lang=bash>newfs -U -O2 /dev/zvol/zroot/ezjail/storage.hq.c3d2.de/samba4db</source>
: <source lang=bash>mkdir /usr/jails/storage.hq.c3d2.de/var/db/samba4</source>
: <source lang=bash>mount -o acls /dev/zvol/zroot/ezjail/storage.hq.c3d2.de/samba4db /usr/jails/storage.hq.c3d2.de/var/db/samba4</source>
: <source lang=bash>zfs set aclmode=passthrough zroot/ezjail/storage.hq.c3d2.de/rpool</source>
: <source lang=bash>zfs set aclinherit=passthrough zroot/ezjail/storage.hq.c3d2.de/rpool</source>
ZVOL auf dem FreeBSD HOST mounten lassen
: <source lang=bash>vi /etc/fstab</source>
<source lang=bash>
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
#/dev/gpt/swap1 none swap sw 0 0
#/dev/gpt/swap2 none swap sw 0 0
#/dev/gpt/swap3 none swap sw 0 0
### ### ### C3D2 ### ### ###
proc /proc procfs rw 0 0
/dev/zvol/zroot/ezjail/storage.hq.c3d2.de/samba4db /usr/jails/storage.hq.c3d2.de/var/db/samba4 ufs rw,acls 1 1
### ### ### C3D2 ### ### ###
# EOF
</source>
==== Provisionieren von Samba4 ====
* angewendet bei FreeBSD
: <source lang=bash>/usr/local/bin/samba-tool domain provision --use-rfc2307 --use-xattrs=yes --function-level=2008_R2 --realm=HQ.C3D2.DE --domain=HQ --adminpass='geheim' --server-role='dc' --dns-backend=SAMBA_INTERNAL</source>
==== Konfiguration von Samba4 ====
* angewendet bei FreeBSD
: <source lang=bash>vi /usr/local/etc/smb4.conf</source>
<source lang=bash>
### ### ### C3D2 ### ### ###
# Global parameters
[global]
workgroup = HQ
realm = HQ.C3D2.DE
netbios name = STORAGE
server role = active directory domain controller
idmap_ldb:use rfc2307 = yes
### dns forwarder = 172.22.99.51
server services = -smb +s3fs -nbt
dcerpc endpoint servers = -winreg -srvsvc
### ### ### C3D2 ### ### ###
#
server string = %h - FreeBSD ZFS Server
interfaces = 172.22.99.52
bind interfaces only = Yes
# disable printer support
disable spoolss = Yes
# allow dynamic dns update / true = nonsecure + signed
allow dns updates = signed
# freebsd specific
nsupdate command = /usr/local/bin/samba-nsupdate -g
# added to allow asynchronous I/O (make sure to load the kernel module aio)
aio read size = 16384
aio write size = 16384
### ### # server options
server min protocol = NT1
server max protocol = SMB3
disable netbios = Yes
smb ports = 445
server signing = auto
# protocol stream encryption for smbclient
smb encrypt = auto
### ### # client options (for local services / smbclient etc.)
client min protocol = NT1
client max protocol = SMB3
client ldap sasl wrapping = seal
client signing = auto
client schannel = auto
lanman auth = No
ntlm auth = No
client use spnego = Yes
client ntlmv2 auth = Yes
client lanman auth = No
client plaintext auth = No
### experimental ###
###
### dsdb:schema update allowed = Yes
###
### experimental ###
#
### ### ### C3D2 ### ### ###
[netlogon]
path = /var/db/samba4/sysvol/hq.c3d2.de/scripts
read only = No
browseable = no
[sysvol]
path = /var/db/samba4/sysvol
read only = No
browseable = no
### ### ### C3D2 ### ### ###
[rpool]
path = /rpool
valid users = k-ot
map acl inherit = yes
browseable = yes
public = yes
writable = yes
posix locking = yes
create mask = 0664
directory mask = 0775
strict locking = no
store dos attributes = yes
### nt acl support = yes
### csc policy = disable
inherit acls = Yes
inherit owner = no
inherit permissions = no
map archive = No
map readonly = no
vfs objects = shadow_copy2, zfsacl
nfs4:mode = special
nfs4:acedup = merge
nfs4:chown = yes
shadow: format = -CRON-%Y.%m.%d-%H.%M
shadow: sort = desc
shadow: snapdir = .zfs/snapshot
### ### ### C3D2 ### ### ###
# EOF
</source>
==== Samba4 Map Users to thier UNIX UID ====
: <source lang=bash>id k-ot</source>
<source lang=bash>
uid=1003(k-ot) gid=1003(k-ot) groups=1003(k-ot)
</source>
: <source lang=bash>samba-tool user add k-ot</source>
<source lang=bash>
New Password:
Retype Password:
User 'k-ot' created successfully
</source>
: <source lang=bash>service samba_server start</source>
<source lang=bash>
wbinfo --name-to-sid k-ot
S-1-5-21-2260217406-2925069997-4078739481-1108 SID_USER (1)
wbinfo --sid-to-uid S-1-5-21-2260217406-2925069997-4078739481-1108
3000022
</source>
: <source lang=bash>service samba_server stop</source>
: <source lang=bash>ldbedit -e vi -H /var/db/samba4/private/idmap.ldb objectsid=S-1-5-21-2260217406-2925069997-4078739481-1108</source>
<source lang=bash>
xidNumber: 1003
# 0 adds 1 modifies 0 deletes
</source>
: <source lang=bash>/usr/local/bin/testparm</source>
: <source lang=bash>samba-tool dbcheck</source>
: <source lang=bash>samba-tool ntacl sysvolcheck</source>
===== Importieren von SMB bei GNU/Linux =====
: <source lang=bash>sudo apt-get install cifs-utils</source>
: <source lang=bash>sudo mkdir /freebert-storage</source>
: <source lang=bash>sudo mount -t cifs //172.22.99.10/rpool /freebert-storage -o user=k-ot</source>
== Daten ==
=== übliche Arten von Daten auf [[Server/storage|storage]] ===
==== Musik ====
===== Musik für cider =====
[[cider]] nutzt Dateien von [[Server/storage|storage]] [[cider#storage als Quelle|als Quelle]].
==== Filme ====
==== andere Dateien ====
===== Dateien für Installation von Betriebssystemen =====
=== Daten bereitstellen ===
==== DLNA ====
===== Berechtigungen für DLNA setzen =====
bei Änderungen / Upload bitte ein:
<source lang=bash>chown 1003:1003: ~/file</source>
===== Index für Fernseher neu schreiben =====
Um die Datenbank (<code>/var/db/minidlna/files.db</code>) neu zu schreiben,
* muss sie gelöscht/überschrieben werden;
* darf der Service nicht aktiv sein;
* braucht es einen Neustart, wobei sie neu geschrieben wird
*: Das dauert zirka 20&nbsp;min bei [[Server/storage|storage]].
.
Dies wurde hier teilweise durch eine zweite Instanz umgangen.
das Script: unter <code>/usr/local/bin/minidlna_scan</code>:
<source lang=bash>
#!/bin/sh
# simple but buggy
#service minidlna stop
#rm /var/db/minidlna/files.db
#service minidlna start
# should do like that
#configure 2nd service just for rescanning
#start service 2nd instance with another pid
#start for rescanning the filestructure
#stop 2nd service and delete pid
#copy files.db over the existing one
#send sighub to dlna-process to make him use the new files.db
#
### ### ### C3D2 ### ### ###
PID=($(ps -ax | grep "/var/run/minidlna/minidlna_scan.pid -R" | head -1 | awk '{print $1}'))
# stage0
/usr/local/sbin/minidlnad -u dlna -f /usr/local/etc/minidlna_scan.conf -P /var/run/minidlna/minidlna_scan.pid -R
# stage1
### ps -ax | grep "/var/run/minidlna/minidlna_scan.pid -R" | head -1 | awk '{print $1}' | xargs -L 1 kill -9
# stage2
#cp -prfv /var/db/minidlna_scan /var/db/minidlna
# stage3
#pkill -HUP /var/run/minidlna/minidlna.pid
while ps -p ${PID[*]}; do sleep 1; done ; cp -prfv /var/db/minidlna_scan/* /var/db/minidlna/; pkill -HUP /var/run/minidlna/minidlna.pid
### ### ### C3D2 ### ### ###
# EOF
</source>
== Zugang ==
; per ssh: wie üblich
; per http: https://storage/
== Siehe auch ==
* [[redmine:projects/storage-server]]
{{foo im HQ}}
[[Kategorie:Infrastruktur]]
[[Kategorie:Hardware]]
[[Kategorie:HQ]]