[COUCHDB] FS full


#1

Bonjour,

suite à l’installation de mon VPS OVH spécial Cozy ( pour tester :slight_smile: ), j’ai un problème de FS FULL.
Il se trouve que j’ai voulu faire un chargement des photos de mon lgg4 automatiquement, et il m’a TOUT chargé sur COZY.
Sauf que du coup mon FS est full ( 10G ) !!

J’ai 2 questions :

  1. Comment parcourir la BDD Couchdb en ligne de commande ? est ce possible ?
  2. Y a t’il un apps pour la faire dans COZY ?

Merci !


#2

Bonjour,

couchdb a tendance a grossir très vite pour pas grand chose (notamment des histoires d’index, mais je n’y connais rien :stuck_out_tongue:), Il est possible de nettoyer tout ça graces au commandes magiques de la documentation (je purge plusieurs gigas à chaque fois) :

https://docs.cozy.io/en/host/manage.html#database-management

L’application cozy-self-hosting permet de le faire via une webui, mais il faut d’abors l’installer en ligne de commande (il y a un paquet débian pour ça, car elle a besoin des droits root pour travailler.


#3

Ok merci !

Comme j’ai pas envie de me prendre la tête maintenant, je vais la réinstaller :smile:


#4

Bonjour @bschalck,

Effectivement, les fichiers utilisés par CouchDB ont tendance à grossir rapidement. Pour permettre des écritures très rapides, lorsque tu modifies un document, CouchDB ne le modifie pas dans le fichier contenant la base, mais crée une nouvelle version du document à la fin de ce fichier. De ce fait, à chaque modification d’un document, la base grossit, et il faut régulièrement la compacter, comme te l’a expliqué @ZeHiro.

Oui, tout à fait. L’interface de CouchDB est une API REST, donc tu peux interroger la base à coup de requêtes avec curl. Pour ne pas t’embêter à gérer l’authentification, le plus simple est d’utiliser cozy-monitor curlcouch:

# afficher des informations sur la base
cozy-monitor curlcouch --pretty /
# afficher tous les fichiers
cozy-monitor curlcouch --pretty _design/file/_view/all

Si tu es auto-hébergé, tu peux aussi te connecter à une application Web pour gérer ta base en pointnat ton navigateur vers http://localhost:5984/_utils/. Tu trouveras le login et le mot de passe pour t’y connecter dans /etc/cozy/couchdb.login.

Enfin, tu peux installer dans ton serveur l’application Data-Browser, qui affiche le contenu de ta base (cette application n’est malheureusement plus maintenue, mais c’est un bon point de départ).


#5

merci pour le retour.
J’ai en effet installé l’app Data-browser , c’est assez pratique je trouve.
Y a-t-il un nouvel outil en cours développement ?

Venant du monde pur SQL ( oracle / Pgsql), je suis un peu perdu avec couchdb, disons pas habitué :smile:


#6

Non, pas d’autre outil en cours de développement, mais nous avons une réflexion sur le long terme pour essayer d’inventer un outil de plus haut niveau pour visualiser les données stockées dans Cozy.

Le data-browser est utile pour les utilisateurs et les utilisatrices « intermédiaires ». Les gens à l’aise avec CouchDB lui préféreront Futon, et pour les novices, il est encore trop compliqué.

À vrai dire, CouchDB n’est rien d’autre qu’une base clé-valeur de documents avec plusieurs indexes permettant d’accéder aux documents. Les possibilités de requêtage sont moins nombreuses qu’en SQL.


#7

Bonjour,

J’ai également le problème d’une base de 15G qui remplit mon /var alors j’ai tenté le “cozy-monitor compact” mais la taille du fichier /var/lib/couchdb/cozy.couch n’a pas changé par contre j’ai maintenant un cozy.couch.compact qui fait 2,5G et me cause un FS full ! Dois-je remplacer le cozy.couch par le cozy.couch.compact ? Je n’ose pas trop y toucher sans votre aval… :wink:


#8

Bonjour @letoff,

lors du compactage de la base, CouchDN prend le fichier cozy.couch, le lit enregistrement par enregistrement et écrit tous les documents non supprimés dans cozy.couch.compact. À la fin de l’opération, il renomme cozy.couch.compact en cozy.couch.

Manifestement, ton disque est devenu plein avant la fin de l’opération de compactage, donc cozy.couch.compact ne contient pas toute ta base. Il faut effacer cozy.couch.compact`, faire du ménage sur le disque puis relancer un compactage.

Pour savoir de combien d’espace tu as besoin, utilise cozy-monitor curlcouch --pretty /. Parmi les informations affichées, disk_size représente la taille actuelle du fichier cozy.couch et data_size la taille réellement occupée par les documents, donc l’espace libre nécessaire pour pouvoir compacter la base.

Pour faire de la place sur le disque, regarde par exemple si tu ne peux pas supprimer des fichiers de log des applications Cozy dans /usr/local/var/log/cozy/. Si tu n’arrives pas à libérer assez de place, tu peux supprimer tout le dossier /var/lib/couchdb/.cozy_design. Il contient des index que CouchDB est capable de re-créer. Leur création peut prendre un peu de temps, mais les supprimer permet généralement de récupérer un peu d’espace.

Tiens-nous au courant !


#9

#10

#11

#12

#13

#14

#15

Merci Clochix pour cette réponse détaillée. Hélas je ne peux faire suffisamment de place sur la partition /var

df -h

[…]
/dev/sda7 20G 17G 2,0G 90% /var

cozy-monitor curlcouch --pretty /

{
“db_name”: “cozy”,
“doc_count”: 2720,
“doc_del_count”: 1184,
“update_seq”: 242565,
“purge_seq”: 0,
“compact_running”: false,
“disk_size”: 15566364808,
“data_size”: 2482733781,
“instance_start_time”: “1494768769759379”,
“disk_format_version”: 6,
“committed_update_seq”: 242565
}

Je dois d’autre part changer de serveur rapidement. Peux-tu stp m’indiquer la procédure à suivre pour migrer Cozy d’une machine à une autre ou tout simplement effectuer un backup le temps que la v3 ne sorte ? Il me semble que couchdb a des outils pour la réplication non ? Peut-être est-il possible de les utiliser à cet effet ? J’aurais ensuite tout loisir de faire le compactage.
Je te remercie d’avance.


#16

Hello,

D’après ces chiffres, la base occupe actuellement 15 Go sur le disque, mais ses données seulement 2.4 Go. Il « suffirait » que tu libères 400 Mo sur ton disque pour pouvoir la compacter. N’as-tu pas moyen de supprimer des fichiers temporaires, ou de déplacer temporairement certaines données sur le autre disque, le temps de compacter ?

Pour migrer vers un autre serveur, le plus simple est d’utiliser cozy_management. Cet outil est-il installé sur ton serveur ? Si oui, il dispose de commandes backup et restore qui créent une archive des fichiers de ton serveur et restaure cette archive. Mais cela va essentiellement créer une archive du fichier de la base, donc tu auras aussi besoin de place, je doute que cela résolve ton problème.

CouchDB dispose effectivement de fonctions pour répliquer une base vers un autre serveur, mais cela suppose que tu es un autre serveur CouchDB tournant sur une autre machine.


#17

Merci bcp Clochix,

J’ai suivi ton conseil et libéré un peu de place. La commande compact a fonctionné et je suis maintenant en train de faire un backup avec cozy_management. J’espère que le restore sur une autre machine ne posera pas de problème…
À suivre…