我有一个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
Run Code Online (Sandbox Code Playgroud)
但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
Run Code Online (Sandbox Code Playgroud)
和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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |