Problème d'espace disque

Bonjour à tous,

J’ai un serveur OVH fonctionnant sous Debian Etch. Forcément, j’ai eu droit à leur partitionnement pourri laissant 3Go à la racine / .

J’ai eu recours à plusieurs techniques pour libérer de l’espace disque (Déplacement du répertoire /usr vers /home/usr, déplacement des logs apache2 etc…) .

Maintenant j’ai un curieux problème, après plusieurs jours de marche, la partition / se remplit mais il n’y a pas de logs, pas de fichiers dans /tmp, je sais pas du tout d’où ça vient… Et un simple redémarrage libère 60% d’espace disque.

Je suppose que ça vient de fichiers temporaires, mais je sais pas du tout où ils sont. Si vous pouviez me filer un coup de main, je serai bien reconnaissant.

Bonsoir,

D’abord, pour connaître le répertoire de la racine qui pose problème, regarde la taille en méga-octets de chacun (en tant que root) :

Ensuite, admettons que ce soit dans /var le problème (comme souvent…). On affiche la liste inversée des répertoires les plus gourmands :

C’est dans un des derniers répertoires affichés que se trouve le coupable.

S’il t’arrive de devoir réinstaller ou installer ailleurs une Debian, passe par l’install manuelle, ainsi, tu alloues la taille que tu veux à tes partoches.

chez OVH tu n’as pas vraiment accès au processus d’installation, de plus ils te mettent des scipts custom OVH pour monitorer leur infrastructure et bidouillent le cron, ça fait un bruit infernal dans les logs…

J’ai deux serveurs chez OVH et il n’y a aucun soucis pour la taille des partitions des disques.
Si tu fais référence au monitoring via rtm, saches que ce n’est pas une obligation, il faut juste laisse passer le ping depuis leurs serveurs de monitoring sinon un technicien se déplace sur la machine.

chez OVH tu n’as pas vraiment accès au processus d’installation, de plus ils te mettent des scipts custom OVH pour monitorer leur infrastructure et bidouillent le cron, ça fait un bruit infernal dans les logs…[/quote]
Je n’avais pas fait attention, je n’avais pas vu qu’il s’agissait d’un serveur. :blush:

Houla y a pas mal de réponses…

Bon j’avais déjà fait la manipe du premier message mais ça m’avait rien donné comme si y avait des fichiers cachés ou temporaires (/tmp vide) qui mettaient la pagaille…

Je refais la manipe quand le serveur sera plein et je vous dis :wink:

A noter: on a trois serveurs, et ça n’arrive que sur celui là.

[quote=“Backflip”]Houla y a pas mal de réponses…

Bon j’avais déjà fait la manipe du premier message mais ça m’avait rien donné comme si y avait des fichiers cachés ou temporaires (/tmp vide) qui mettaient la pagaille…

Je refais la manipe quand le serveur sera plein et je vous dis :wink:

A noter: on a trois serveurs, et ça n’arrive que sur celui là.[/quote]

Une méthode crade pour savoir qui prends de la place:
Tu montes en local sur ta machine à la maison le système de fichier du serveur avec sshfs

Tu lances en local une application du type baobab ou filelight. Tu attends… Et tu as un zoli graphe dans lequel tu peux te balader en faisant clic clic pour voir quel répertoires/fichiers sont volumineux.

Oui, je sais, c’est crade.

[quote=“Niloo”]J’ai deux serveurs chez OVH et il n’y a aucun soucis pour la taille des partitions des disques.
Si tu fais référence au monitoring via rtm, saches que ce n’est pas une obligation, il faut juste laisse passer le ping depuis leurs serveurs de monitoring sinon un technicien se déplace sur la machine.[/quote]

oco-tcpresponder.
Ils sont pas contents si on ferme le port concerné. Ça a peut être changé depuis?

[code]
cat /usr/local/oco/bin/oco-tcpresponder.pl
#!/usr/bin/perl -Tw
use strict;
use Socket;
use POSIX ‘setsid’;
use File::stat;

$|=1;

my $OCO_VERSION=“oco-1.15”;

my $LOGFILE="/var/log/oco/oco.log";

&daemonize;

#get hostname
my $hostname=/bin/hostname;
chomp ($hostname);

use port 79

my $port = 79;
my $proto = getprotobyname(‘tcp’);

create a socket, make it reusable

socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die “socket: $!”;
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die “setsock: $!”;

grab a port on this machine

my $paddr = sockaddr_in($port, INADDR_ANY);

bind to a port, then listen

bind(SERVER, $paddr) or die “bind: $!”;
listen(SERVER, SOMAXCONN) or die “listen: $!”;
print localtime(time)." oco server started on port $port\n";

accepting a connection

my $client_addr;
my ($errormessage, $status, $localip, $myaddr, $mysockaddr, $answer);
while ($client_addr = accept(CLIENT, SERVER)) {

#set autoflush to socket
select((select(CLIENT), $| = 1)[0]);

#get local IP on which client make connection
$mysockaddr = getsockname(CLIENT);

($port, $myaddr) = unpack_sockaddr_in($mysockaddr);
$localip=inet_ntoa($myaddr);

# find out who connected
my ($client_port, $client_ip) = sockaddr_in($client_addr);
my $client_ipnum = inet_ntoa($client_ip);
my $client_host = gethostbyaddr($client_ip, AF_INET);
if (! defined ($client_host)) { $client_host=$client_ipnum;}

#get status of machine
$status=get_status({ errormessage => \$errormessage });

# set answer
if ($status >= 300) {
	$answer="$status KO $localip $hostname $OCO_VERSION $errormessage";
} else {
	$answer="$status OK $localip $hostname $OCO_VERSION $errormessage";
}

# don't print logs unless debugging
#print localtime(time)." oco connection: $client_host:$client_ipnum:$client_port $hostname:$localip:$port answer: $answer\n";

print CLIENT $answer."\n";	

#read one line
eval {
	local $SIG{"ALRM"} = sub { die "timeout\n" };
	alarm 1;
	my $ok = <CLIENT>;
	alarm 0;
};

print CLIENT $answer."\n";

close CLIENT;

}

sub get_status {
my $args = shift;

my $PREFIX="/usr/local/oco/";
my $CHECK_STATE="result/";

my ($file, @dirContent, @data, $errormess, $allOK, $errorCode, $isfile);
$errorCode=200;
$allOK = 1;
$errormess = "";
$isfile=0;

opendir(DIR,$PREFIX.$CHECK_STATE);
@dirContent=readdir(DIR);
closedir(DIR);

foreach $file (@dirContent){
	if ($file !~ m/^\./) {
		$isfile=1;
		#check time of file modification, if it is < 15 min.
		if ((stat($PREFIX.$CHECK_STATE.$file)->mtime)>=(time-(15*60))) {

			#read content of result file
			open (FILE, $PREFIX.$CHECK_STATE.$file) || die ("cannot open file".$PREFIX.$CHECK_STATE.$file);
			@data=<FILE>;
			chomp(@data);
			close (FILE);

			#if errorCode >=300 => not OK :(
			if ($data[0] >= 300) {
				$allOK=0;
			}
		
			#if errorCode > 200 => add check to error message
			if ($data[0] > "200") {
				$errormess.=",".$data[0]."-".$file;
			}
		
			#if this errorCode > max errorCode => max errorCode = this errorCode
			if ($data[0] > $errorCode) {
				$errorCode=$data[0];
			}
		
		} else {
			#result file is too old, something is wrong with check, set errorCode to '398'
			$allOK=0;
			$errorCode="398";
			$errormess.=",398-".$file;
		}
	}
}

#there is no files :( very bad
if ($isfile==0) {
	$errorCode=399;
	$errormess="399-no_results";
}

#if errorCode=200 => All is OK (we don't need error message)
if ($errorCode==200){
	$errormess="";
} else {
	$errormess=~s/^,//;
}

${$args->{errormessage}}=$errormess;

return $errorCode;

}

exit;

sub daemonize {
my ($i,$pid);
print “Launching oco server daemon, logs are in $LOGFILE\n”;

#security
$ENV{PATH}="/bin:/usr/bin";
chdir("/");

close STDIN;

if ( !defined( my $pid=fork() )) {
	die "Impossible to fork\n";
} elsif ($pid >0) {
	#it's dad, byebye.
	exit 0;
}

#it's the kid
#on crée un nouvelle session
setsid();

#close stdin (to avoid break when closing terminal)
open STDIN, "/dev/null";

#you can redirect all to /dev/null, but you will have no warning in futur
open STDOUT, ">>$LOGFILE" or die "Unable to open $LOGFILE: $!\n";
open STDERR, ">&".fileno(STDOUT) or die "Unable to redirect STDERR to STDOUT: $!\n";

}[/code]

[quote=“ziouplaboum”]

Une méthode crade pour savoir qui prends de la place:
Tu montes en local sur ta machine à la maison le système de fichier du serveur avec sshfs

Tu lances en local une application du type baobab ou filelight. Tu attends… Et tu as un zoli graphe dans lequel tu peux te balader en faisant clic clic pour voir quel répertoires/fichiers sont volumineux.

Oui, je sais, c’est crade.[/quote]Je ne vois pas en quoi c’est “crade” :question:
C’est du graphique, et alors :question:
Faudrait ptet arrêter de cracher sur le graphique, y’en a qui aiment.