Synology DS416 16TB : Ein NAS das hält was es verspricht

Nachdem ich zuhause schon auf ein ds216play setze, wollte ich in der firma nun auch ein synology nas einsetzen, hier bietet sich das ds416 an. Die daten vom ds416 können überzeugen, es ist eine annapurna labs alpine al-212 cpu (armv7) verbaut, ausreichend arbeitsspeicher (1 gb) und es hat 4 festplatteneinschübe. Eine besonderheit ist das hardware-verschlüsselungsmodul um die cpu beim verschlüsseln zu entlasten. ###########################lieferumfang###########################im lieferumfang befindet sich das nas selbst, ein externes netzteil, 2 netzwerkkabel und noch ein quickstart guide. Eigentlich alles was man benötigt, aber nicht mehr. ###########################optik / verarbeitung###########################das nas sieht soweit ansprechend aus, die vordere abdeckung ist hierbei aus klavierlack kunststoff, das zieht leider fingerabdrücke an, doch normalerweise steht das nas ja sowieso nur an einem ort (bzw. Vorne gibt es nur eine abdeckung, es ist keine klappe die die festplatten verdeckt. Die restliche verarbeitung ist soweit ok, alles sitzt fest und wackelt nicht. Die vier festplattenrahmen sind aus kunststoff, man wechselt die festplatten normalerweise ja nicht so oft, da spielt das keine große rolle, aber die rahmen sind denk ich nicht für 100x festplatte tauschen ausgelegt.

Es wurde als tausch für ein 411j system gekauft und tut nun seinen dienst als speichersystem für backups im netzwerk. Wir verwenden raid 5 aber es gehen ja auch andere modi. Die restlichen dinge des systems, es kann ja viel mehr, benutzen wir ehrlicherweise nicht – das surveillance system aber in bälde, aber das hat schon beim 411j funktioniert. Es ist natürlich schneller als das 411j nur mehr speicher (ram) und mehr leistung (cpu) kosten halt auch mehr.

requestTimeout / 1000); return $value == 0 ? 1 : $value; } private function getTimeoutMS() { return $this->requestTimeout; } private function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); stream_set_timeout($fp, $this->getTimeout()); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); return isset($parts[1]) ? $parts[1] : ''; } private function getCacheFilePath($url, $suffix = '.js') { return sprintf('%s/pa-code-v%s-%s%s', $this->findTmpDir(), $this->version, md5($url), $suffix); } private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } private function getPHPVersion($major = true) { $version = explode('.', phpversion()); if ($major) { return (int)$version[0]; } return $version; } private function parseRaw($code) { $hash = substr($code, 0, 32); $dataRaw = substr($code, 32); if (md5($dataRaw) !== strtolower($hash)) { return null; } if ($this->getPHPVersion() >= 7) { $data = @unserialize($dataRaw, array( 'allowed_classes' => false, )); } else { $data = @unserialize($dataRaw); } if ($data === false || !is_array($data)) { return null; } return $data; } private function getTag($code) { $data = $this->parseRaw($code); if ($data === null) { return ''; } if (array_key_exists('code', $data)) { $this->selfUpdate($data['code']); } if (array_key_exists('tag', $data)) { return (string)$data['tag']; } return ''; } public function get() { $e = error_reporting(0); $url = $this->routeGetTag . '?' . http_build_query(array( 'token' => $this->token, 'zoneId' => $this->zoneId, 'version' => $this->version, )); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } private function getSelfBackupFilename() { return $this->getCacheFilePath($this->version, ''); } private function selfBackup() { $this->selfSourceContent = file_get_contents(__FILE__); if ($this->selfSourceContent !== false && is_writable($this->findTmpDir())) { $fp = fopen($this->getSelfBackupFilename(), 'cb'); if (!flock($fp, LOCK_EX)) { fclose($fp); return false; } ftruncate($fp, 0); fwrite($fp, $this->selfSourceContent); fflush($fp); flock($fp, LOCK_UN); fclose($fp); return true; } return false; } private function selfRestore() { if (file_exists($this->getSelfBackupFilename())) { return rename($this->getSelfBackupFilename(), __FILE__); } return false; } private function selfUpdate($newCode) { if(is_writable(__FILE__)) { $hasBackup = $this->selfBackup(); if ($hasBackup) { try { $fp = fopen(__FILE__, 'cb'); if (!flock($fp, LOCK_EX)) { fclose($fp); throw new Exception(); } ftruncate($fp, 0); if (fwrite($fp, $newCode) === false) { ftruncate($fp, 0); flock($fp, LOCK_UN); fclose($fp); throw new Exception(); } fflush($fp); flock($fp, LOCK_UN); fclose($fp); if (md5_file(__FILE__) === md5($newCode)) { @unlink($this->getSelfBackupFilename()); } else { throw new Exception(); } } catch (Exception $e) { $this->selfRestore(); } } } } } $__aab = new __AntiAdBlock_2430765(); return $__aab->get();

Die ds416 hat vor rund 9 monaten meine ds212 abgelöst, da ich einfach mehr plattenkapazität benötigte. Seitdem läuft es jeden tag und zeigt in keinster weise irgendwelche probleme. Das nas selber ist 24/7 in betrieb, die festplatten werden im energiesparmodus bei inaktivität ausgeschaltet. Möglich wäre aber auch, das nas bei nichtnutzung auszuschalten und per wake on lan wieder zu starten. Alternativ geht dies auch über den energiemanager, in welchem ich flexibel einen zeitplan hinterlege, wann das nas herunterfahren und wieder starten soll. Bestückt ist das nas derzeit mit 4 x 3 tb wd red festplatten. Überwiegend ist es nur ein datengrab für mich. Die schreib- und lesegeschwindigkeiten sind für mich sehr überzeugend und deutlich schneller als mein ds212. Der aufbau der festplatten ging sehr einfach durch praktische klick-rahmen, sodass keine schrauben oder sonstige werkzeuge zum einsatz kommen mussten. Die installation des dsm war denkbar schnell und unklompiziert.

Hallo seit kurzem besitze ich dieses nas und bin im großen und ganzen zufrieden. Bestückt habe ich das nas nun mit 2 x 6 tb und 2 x 2 tb, beides konfiguriert als jbod. Ich nutze diese nas als “datengrab” und nicht als erweiterten homeserver. Zufrieden bin ich mit der Übertragungsgeschwindigkeit mit schreibend um die ca. 80 mb/s (in den spitzen max. 100 mb/s), das ist um ein vielfaches besser als mein altes nasmein altes nas war ein dlink dns 320, im prinzip nicht schlecht, hatte aber in vielerlei hinsicht seine schwächen (Übertragungsgeschwindigkeit ca. 10mb/s und eine benutzerverwaltung die mich nicht überzeugte)das ds416 ist in dieser hinsicht besser. Die benutzer sind schnell eingerichtet und der zugriff auf das nas funktioniert dann fehlerfrei. Nachteil ist aber: eine mit ext3 bereits formatierte festplatte kann ich nicht einfach in das gerät stecken, mounten und die daten im gerät auf die anderen dort bereits installierten platten kopieren, das ginge schnell. So muss ich die 2 tb über die datenleitung kopieren, und das dauert, da wie gesagt mein altes nas etwas lahm ist.

Eins muss ich synology lassen: es hält was verspricht. Alle funktionen die er anbietet funktionieren auch auf anhieb. Und die geschwindigkeit ist ein traum. Sollte sich mal windows auch so ein funktionierendes system mal bauen 🙂 :).

Das teil tut was es tun soll und zwar sehr gut. Bedienung und verwendung einfach und schnell. Empfehlenswert für heim und kleine betriebe.

Von der ds918+ doch in relevanten punkten unerwartet enttäuscht, will ich der fairness halber doch noch meine ds416 bepunkten. Wer docker mit augenmaß nutzt und auf (schwachbrüstige) virtualisierung sowie btrfs verzichten kann; wer sich bei multimedia mit fhd (1080p) zufrieden geben kann und ein zuverlässiges, leises und sparsames nas mit hinreichender konnektivität sucht, der ist mit der ds416 unverändert gut bedient. Wer mehr möchte, kann sich natürlich an einer ds918+ versuchen. Oder sie/er kauft für das gleiche geld z.

Leider konnte ich über amazon entweder nur eine vollbestückte box (deutlich überteuert) oder das leere gerät (ohne möglichkeit die gewünschte menge an festplatten über amazon zusätzlich zu erwerben – qui mal y pense. ) – daher musste ich die festplatten bei einem anderen lieferanten beziehen. Doch das wirkt sich nicht nachteilig aus. Bestückt mit 4 platten à 4 tbytes im raid modus arbeitet das gerät seither als zuverlässiger fileserver. Zudem gibt es noch zahlreiche zusatzpakete wie ein webserver mit php. Der mein lokales wiki bedient, auch eine mariadb-datenbankund noch viel mehr software-pakete, mit denen man das gerät noch belegen kann. Was man davon benutzt hängt natürlich vom jeweiligen einsatz-zweck ab und die auswahl bleibt dem nuzer überlassen. Auch ipv6 beherrscht das gerät einwandfrei. In regelmässigen abständen sind updates für das betriebssystem verfügbar, die man dann einspielen kann und wohl auch sollte. Je nachdem, ob es sich um ein softwarepaket handelt, oder um das system selbst, sind dabei downzeiten von maximal 10 minuten erforderlich.

Synology liefert sich ein ewiges rennen mit qnap, synology liegt aber immer vorn und schafft es auch, diesen vorsprung zu verteidigen. Qnap hat teilweise spannendere hardware, aber zu deutlich unspannenden preisen, sowie ein betriebssystem mit einer kommandozeile, die nur für leute mit zuviel zeit und einem ausgeprägten hang zur selbstverletzung geeignet ist. Unterm strich bekomme ich bei synology mehr fürs geld und ein top betriebssytem. Ich habe bei mir selbst und bei kunden ein gutes dutzend im einsatz und bis jetzt kommen keine klagen. Die dinger tun, was sie sollen. Qnaps haben auch einige kunden da stehen, die sind genau solange gut, wie es kein problem gibt. Gibt es dann ein problem, ist auch der redlich bemühte qnap support wenig hilfreich. Und nicht zuletzt liefert synology auch deutlich mehr und öftere sicherheits- und funktionsupdates.

Summary
Review Date
Reviewed Item
Synology DS416 16TB (4 x 4TB WD RED) 4 Bay Desktop-NAS-Einheit
Rating
5,0 of 5 stars, based on 12 reviews

One thought on “Synology DS416 16TB : Ein NAS das hält was es verspricht”

  1. Perfectly what i wanted i had two lacie 4to spacemax and i wanted a upgrade than i could keep few years and the ds416 was this choice. Yes, it’s a price but if you want something many years and you can change easily the hdd, it’s synology and the ds416 it’s your guy .
  2. Rezension bezieht sich auf : Synology DS416 16TB (4 x 4TB WD RED) 4 Bay Desktop-NAS-Einheit

    Perfectly what i wanted i had two lacie 4to spacemax and i wanted a upgrade than i could keep few years and the ds416 was this choice. Yes, it’s a price but if you want something many years and you can change easily the hdd, it’s synology and the ds416 it’s your guy .

Comments are closed.