2013-08-12 13 views
5

Ho uno script PHP che deve controllare la dimensione totale di un disco. Sto usando disk_total_space per un po 'e sono appena passato a un nuovo server che usa LVM. disk_total_space ora riporta una dimensione completamente diversa. L'ho ricreato su un secondo server LVM.PHP disk_total_space non misurerà la dimensione della partizione LVM

df -h sul primo server (CentOS 6.4, PHP v5.3.27) mostra

Filesystem    Size Used Avail Use% Mounted on 
/dev/mapper/vg-vg_root 99G 47G 47G 50%/
tmpfs      32G  0 32G 0% /dev/shm 
/dev/sda1    194M 65M 120M 36% /boot 
/dev/mapper/vg-vg_backup 400G 33M 400G 1% /var/tmp 
/dev/mapper/vg-vg_mysql 950G 81G 870G 9% /data 

ma disk_total_space ('/ dev/mapper/VG-vg_mysql') restituisce 32G. In effetti, restituisce 32G qualunque partizione inserisco nel comando.

su un secondo server (Ubuntu 10.04.4LTS, PHP v5.3.6), ottengo lo stesso tipo di comportamento:

Filesystem    Size Used Avail Use% Mounted on 
/dev/mapper/batty-root 258G 217G 29G 89%/
none     4.0G 208K 4.0G 1% /dev 
none     4.0G  0 4.0G 0% /dev/shm 
none     4.0G 88K 4.0G 1% /var/run 
none     4.0G  0 4.0G 0% /var/lock 
none     4.0G  0 4.0G 0% /lib/init/rw 
none     258G 217G 29G 89% /var/lib/ureadahead/debugfs 

e disk_total_space ('/ dev/mapper/Batty-root') restituisce 4G.

In entrambi i casi sembra che venga restituita la quantità di spazio su disco non gestita da LVM. C'è un modo per ottenere la dimensione totale di una partizione LVM usando PHP?

+0

Quindi, in pratica questo ins't un problema con PHP, il che significa che non è una programmazione domanda che significa che è più adatto per [Super User] (http://superuser.com)? – HamZa

+1

Mi sembra esattamente un problema con PHP. disk_total_space dovrebbe restituire la dimensione di una partizione, ma in alcune circostanze no. Sono felice di essere corretto su questo, ma mi sembra una domanda di programmazione. –

+0

Qual è il comportamento nella riga di comando? Se è lo stesso, non ha nulla a che fare con PHP. – HamZa

risposta

3

ho avuto un problema simile a un certo punto ... avevo bisogno di ottenere lo spazio totale e utilizzato su volumi logici LVM da uno script PHP ...

ho scritto un po 'brutto funzione che restituisce un multi- array bidimensionale con i dati del file system da df ...

Ogni array contiene:

  • filesystem
  • Mount Point
  • Total Space
  • Usato Spazio

Come ho detto, è brutto, ma funziona ...

function disk_space() 
{ 
    $cmd = 'df -P | gawk \'{ printf "%s\t%s\t%s\t%s\n", $1, $6, $2, $3 }\''; 
    $data = trim(shell_exec($cmd)); 

    $return = array(); 
    $lines = explode("\n", $data); 
    unset($lines[0]); 

    foreach($lines as $line){ 
     $return[] = explode("\t", $line); 
    } 

    return $return; 
} 
+1

Potrebbe essere brutto, ma funziona bene (purché abbia shell_exec). Grazie mille! –

Problemi correlati