簡體   English   中英

PHP disk_total_space不會測量LVM分區大小

[英]PHP disk_total_space won't measure LVM partition size

我有一個PHP腳本,需要檢查磁盤的總大小。 我已經成功使用disk_total_space一段時間了,剛剛轉移到使用LVM的新服務器。 disk_total_space現在報告完全不同的大小。 我在第二台LVM服務器上重新創建了這個。

第一台服務器上的df -h (CentOS 6.4,PHP v5.3.27)顯示

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

但disk_total_space('/ dev / mapper / vg-vg_mysql')返回32G。 實際上,它返回32G我在命令中輸入的任何分區。

在第二台服務器(Ubuntu 10.04.4LTS,PHP v5.3.6)上,我得到了同樣的行為:

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

和disk_total_space('/ dev / mapper / batty-root')返回4G。

在這兩種情況下,它似乎都返回了LVM未處理的磁盤空間量。 有沒有辦法使用PHP獲取LVM分區的總大小?

我有一個類似的問題......我需要從PHP腳本中獲取LVM邏輯卷上的總空間和已用空間...

我寫了一個丑陋的小函數,它返回一個帶有來自df的文件系統數據的多維數組...

每個數組包含:

  • 文件系統
  • 登山點
  • 整體空間
  • 已用空間

就像我說的那樣,它很難看,但它有效......

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM