3

如果我使用 df 命令,我只能在 Solaris 服务器中看到有多少磁盘空间被用完。但我想知道一个特定的 solaris 区域占用了多少磁盘空间

4

6 回答 6

4

我发现这些解决方案的问题是它们没有考虑目录继承。是的,您会发现某个目录下有多少“空间”。但是,如果您想真正了解某个区域占用了多少额外空间,则必须采用不同的方法。做一个

zonecfg -z zonename info

其中 zonename 是区域的名称。并查看每个 inherit-pkg-dir 行。

inherit-pkgdir-dir:
      dir: /lib
inherit-pkgdir-dir:
      dir: /sbin

任何具有继承性的行都与区域硬链接。因此,如果您简单地执行

du -sh /zonepath/zonename

inherit-pkg-dir基本上你只需要计算没有在任何行中列出的目录(不包括/proc,也许还有/tmp) 。

cd /zonepath/zonename/root

du -sh /bin /dev /etc /home /kernel opt /system /var etc....
于 2012-09-18T19:46:39.370 回答
2

是的 - 绝对是 su to root 来做到这一点。

我能够运行: /usr/xpg4/bin/du -sk -h -x /zonepath/zonename 以获取在区域的 UFS 根分区中使用的空间。

例如,/usr/xpg4/bin/du -sk -h -x /zonepath/zonename
返回以下内容: 3.5G /zonepath/zonename

评估文件大小时的 -x 选项仅评估与文件操作数指定的文件具有相同设备的那些文件。

-x 操作数似乎仅在使用以下路径调用 du 时才有效:/usr/xpg4/bin/du

这也可以显示区域中 zfs 连接驱动器的已用空间!我们将一个 zfs lun 挂载到路径 /zoneepath/zonename/data 并运行它匹配数据文件的“zfs list”输出:

# /usr/xpg4/bin/du -sk -h -x /zonepath/zoneneame/data
11G /zonepath/zoneneame/data

如果您运行 #/usr/xpg4/bin/du -sk -h -x /zonepath/zoneneame
那么您应该获得区域中已用空间的总和,例如:
53G /zonepath/zonename

它不包括 NFS 连接的驱动器,也不包括 root 不是所有者的目录。

我希望这有帮助!

于 2011-10-24T17:31:19.397 回答
2

试试 du 命令

于 2009-02-23T15:07:23.470 回答
1

由于我尝试了 John 的解决方案和 Pierre-Luc 解决方案,所以对我有用的是:

  • 列出所有区域(来自全局区域)

tcsh>zoneadm list -civ
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              native   shared
   1 myZone1          running    /export/zones/myZone1          native   shared
   2 myZone2          running    /export/zones/myZone2          native   shared
  • du -sk以 root 身份
    (由于无法从全局区域读取本地区域,因此我必须以du -skroot 身份访问它们)

 tcsh>s du -sk /export/zones/myZone1  
 9930978 /export/zones/myZone1
于 2009-02-23T15:28:38.287 回答
0

如果您在 zfs 卷上安装区域,则可以使用 zfs 工具(“zfs 列表”)快速查看已使用了多少空间。

否则,您将不得不使用您已经发现的“du”(这会慢得多)。

于 2009-03-16T07:40:51.370 回答
0

根据在 Solaris 10 容器中管理 ZFS 的 Solaris 操作系统,以下命令将为您提供所需的信息。

zfs list 
于 2009-02-23T15:13:55.077 回答