{{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&nbsp;GHz]
; RAM: 4&nbsp;x&nbsp;2&nbsp;GB
; Board: [http://www.supermicro.com/products/motherboard/xeon3000/3000/pdsmi_.cfm Xeon&nbsp;3000 PDSMi+]
; HDD:
:* 1&nbsp;x&nbsp;[http://www.seagate.com/support/disc/manuals/sata/100390001c.pdf 500&nbsp;GB]
:* 1&nbsp;x&nbsp;[http://www.wdc.com/wdproducts/library/SpecSheet/ENG/2879-701229.pdf 2&nbsp;TB]
:* 1&nbsp;x&nbsp;[http://www.wdc.com/en/library/sata/2879-701229.pdf 1&nbsp;TB]
:* 1&nbsp;x&nbsp;[http://www.wdc.com/wdproducts/library/AAG/ENG/2178-771115.pdf 1&nbsp;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/

{{foo im HQ}}

[[Kategorie:Infrastruktur]]
[[Kategorie:Hardware]]
[[Kategorie:HQ]]
