Que ce soit pour le fun ou par nécessité, comme dans ce cas, sachez qu’on peut installer Debian (en environnement chrooté donc sans risque) sur un NAS Synology. Ici sur DSM6 dernière version.
J’ai environ 70To de stockage et notamment un NAS de 25To qui sert à réceptionner « les différents trucs qu’il doit réceptionner » mais par manque de temps de motivation et comme tout n’est pas automatisé, j’ai jamais pris le temps de trier et dispatcher toutes les données. Je voyais bien la place libre régresser sur le monitoring mais avec 25To on a le temps de voir venir :)
Depuis quelques jours je m’attelle donc à faire de la place. Mais au fur et à mesure que j’avançais j’étais intrigué par l’incohérence entre les dossiers « en cours » que j’avais sous les yeux et les statistiques de stockage. A la louche il me « manquaient » 5 à 7To de données par rapport aux stats. J’y suis même allé à la calculatrice entre les différents dossiers histoire d’être certain de ne rien comprendre…
Installer Debian Chroot
Plutôt que de continuer à tout passer au crible avec df, ls et du j’ai voulu installer ncdu (via IPKG) mais ça ne fonctionnait pas. j’ai donc pris le parti, rapide, d’installer un chroot Debian via les dépôts SynoCommunity (wiki GitHub) qui permet d’installer Debian dans un dossier chrooté (sans risque de faire une boulette sur le NAS) sur Synology.
Y monter son /Volume1
Comme Debian est installé dans un environnement « à part » on n’a pas accès au /Volume1, volume de stockage par défaut d’un NAS Synology. Du coup il faut modifier le script de lancement de l’environnement Debian. Ce qui se fait très simplement en SSH, en root, avec nano.
SSH : à activer dans Panneau de Configuration / Terminal et SNMP
Root : pour passer root en SSH, sur DSM6, il faut taper sudo su et mettre le pwd du compte « Admin »
Nano : cet éditeur n’étant pas installé sur Synology il faut le faire via les paquets SynoCommunity
Et donc éditer ensuite le script de lancement du chroot :
nano /var/packages/debian-chroot/scripts/start-stop-status
Aller à la ligne # Mount if install is finished et ajouter en fin de bloc la commande pour y monter automatiquement le /Volume1
grep -q "${CHROOTTARGET}/volume1 " /volume1 || mount -o bind /volume1 ${CHROOTTARGET}/volume1
Ce qui nous donne
# Mount if install is finished if [ -f ${INSTALL_DIR}/var/installed ]; then # Make sure we don't mount twice grep -q "${CHROOTTARGET}/proc " /proc/mounts || mount -t proc proc ${CHROOTTARGET}/proc grep -q "${CHROOTTARGET}/sys " /proc/mounts || mount -t sysfs sys ${CHROOTTARGET}/sys grep -q "${CHROOTTARGET}/dev " /proc/mounts || mount -o bind /dev ${CHROOTTARGET}/dev grep -q "${CHROOTTARGET}/dev/pts " /proc/mounts || mount -o bind /dev/pts ${CHROOTTARGET}/dev/pts grep -q "${CHROOTTARGET}/volume1 " /volume1 || mount -o bind /volume1 ${CHROOTTARGET}/volume1
Il faut ensuite ajouter la commande de démontage à la fin du bloc # Unmount
umount ${CHROOTTARGET}/volume1
Ce qui donne
{ # Stop running services ${INSTALL_DIR}/app/stop.py # Unmount umount ${CHROOTTARGET}/dev/pts umount ${CHROOTTARGET}/dev umount ${CHROOTTARGET}/sys umount ${CHROOTTARGET}/proc umount ${CHROOTTARGET}/volume1 }
On enregistre (ctrl o) et quitte (ctrl x).
Lancer Debian Chroot et s’y placer
Toujours en root, on peut ensuite lancer le script de chroot Debian
/var/packages/debian-chroot/scripts/start-stop-status start
Les commandes sont très simples :
- start : le lancer
- stop : le stopper
- status : voir s’il est lancé ou non
- chroot : s’y placer en chroot (donc passer dans Debian, en root)
Du coup on peut ensuite s’y placer
/var/packages/debian-chroot/scripts/start-stop-status chroot
Installer ncdu (ou ce que vous voulez)
C’est un Debian classique. On peut donc y faire un apt-get update && apt-get upgrade
histoire d’avoir un environnement à jour. Et j’ai ensuite installé ncdu.
apt-get install ncdu
Surprise :)
En utilisant ncdu
, ce qui a pris un peu de temps avec 22To de données, je me suis rendu compte que le dossier @appstore faisait 5.4To !
Ce dossier contient les programmes installés sur le NAS, par l’utilisateur.
ash-4.3# cd /volume1/\@appstore/ && ls -l total 100 drwxr-xr-x 4 root root 4096 Jul 7 03:01 cronjobeditor drwxr-xr-x 6 root root 4096 Aug 15 15:23 debian-chroot drwxrwxrwx 7 root root 4096 May 20 00:30 git drwxrwxrwx 8 root root 4096 Apr 6 16:38 Git drwxrwxrwx 4 root root 4096 Apr 29 00:57 Init_3rdparty drwxr-xr-x 13 root root 4096 Mar 26 11:37 IntrusionPrevention drwxrwxrwx 12 root root 4096 Jul 7 02:59 ipkgui drwxr-xr-x 4 root root 4096 Jun 24 2014 java drwxrwxrwx 11 root root 4096 Aug 1 17:11 LogCenter drwxrwxrwx 8 root root 4096 Jun 10 10:09 MariaDB drwxrwxrwx 5 root root 4096 Mar 19 12:03 mono drwxr-xr-x 5 root root 4096 Aug 15 15:48 nano drwxrwxrwx 4 root root 4096 Mar 26 11:33 Perl drwxrwxrwx 5 root root 4096 Jun 6 06:41 PHP5.6 drwxrwxrwx 5 root root 4096 Mar 26 11:33 phpBB drwxrwxrwx 5 root root 4096 Jun 6 06:42 phpMyAdmin drwxrwxrwx 3 root root 4096 Mar 26 11:34 py3k drwxrwxrwx 7 root root 4096 Jan 13 2016 python drwxrwxrwx 3 root root 4096 Jun 6 06:42 PythonModule drwxr-xr-x 8 root root 4096 Oct 21 2014 rkhunter drwxrwxrwx 10 rutorrent root 4096 Apr 9 07:57 rutorrent drwxrwxrwx 8 root root 4096 Jun 6 06:43 StorageAnalyzer drwxrwxrwx 5 syncthing root 4096 Jun 10 10:03 syncthing drwxr-xr-x 8 root root 4096 Mar 26 11:07 TextEditor drwxrwxrwx 15 root root 4096 Jun 10 10:06 WebStation ash-4.3#
En creusant encore avec ncdu je me suis alors rendu compte que le [email protected]#! de coupable était IntrusionPrevention, plus précisément ses logs…
Nan mais sans déconner ! 5.4To de logs, ils sont tarés chez Syno ou quoi ?! J’ai 138151 fichiers d’alerte… pour un truc installé le 26 mars cette année.
ash-4.3# cd /volume1/\@appstore/IntrusionPrevention/var/log/suricata/ && ls -al | wc -l 138151 ash-4.3#
Tu m’étonnes que leur programme de détection d’intrusions, basé sur la solution Suricata, est en BETA.
Pour info j’ai laissé les règles par défaut activées et on ne peut pas paramétrer la suppression des logs dans le programme. On peut fort heureusement les retirer lors de la désinstallation. Et avec 5.4To de logs je suis curieux de savoir combien de temps ça lui prend.
=> 1h sur un DSM1813+, 4Go de RAM et tous les cores à fond les ballons. Le plus simple aurait sans doute été de virer les logs à la main en SSH.
Voilà comment, en désinstallant un programme, on peut gagner quelques To d’espace disque :)
Avant
ash-4.3# df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 26T 23T 2.8T 90% /opt ash-4.3#
Après
ash-4.3# df -h Filesystem Size Used Avail Use% Mounted on /dev/md2 26T 18T 7.9T 69% /opt ash-4.3#
Bonjour,
Excellent blog ! je me permet de remarquer qu’il manque un petit truc…
concernant le chapitre : « Y monter son /Volume1 »
il serait bon de commencer avec cette ligne : mkdir /volume1/@appstore/debian-chroot/var/chroottarget/volume1
voila en espérant aider les Noobs :p
Bonne continuation et au plaisir de vous lire.
Du coup c’est une install en double boot la ? J’ai peur de virer le dsm :)
Sinon apres ya moyen d’avoir une interface graphique ? J’dois laisser une logiciel tourner h24 donc bon…
C’est pas vraiment un dual-boot étant donné que Debian tourne « grâce » au DSM, comme tous les autres programmes installé sur ce type de NAS : le DSM doit donc être lancé pour lancer à son tour Debian.
Et pas de bureau vu qu’il n’y a pas de chipset graphique. L’interface du DSM est de type Web seulement et non graphique.
Bonjour,
J’ai un volume par disque soit 4 volumes.
DebianChroot est installé sur le volume 1 donc aucun problème pour monter ce volume.
Comment faire pour monter les autres volumes ?
Dois-je copier le dossier /@appstore/debian-chroot/ sur les autres volumes ?
Merci
Salut, j’ai pas du tout creusé de ce côté là vu qu’en général les NAS sont utilisés en RAID et non avec des disques séparés. Je pense que ça pourrait en effet fonctionner si tu cp ça sur les autres. Je suis intéressé par ton retour ensuite si tu veux bien.