如果我使用 df 命令,我只能在 Solaris 服务器中看到有多少磁盘空间被用完。但我想知道一个特定的 solaris 区域占用了多少磁盘空间
6 回答
我发现这些解决方案的问题是它们没有考虑目录继承。是的,您会发现某个目录下有多少“空间”。但是,如果您想真正了解某个区域占用了多少额外空间,则必须采用不同的方法。做一个
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....
是的 - 绝对是 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 不是所有者的目录。
我希望这有帮助!
试试 du 命令
由于我尝试了 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 -sk
root 身份访问它们)
:
tcsh>s du -sk /export/zones/myZone1
9930978 /export/zones/myZone1
如果您在 zfs 卷上安装区域,则可以使用 zfs 工具(“zfs 列表”)快速查看已使用了多少空间。
否则,您将不得不使用您已经发现的“du”(这会慢得多)。
根据在 Solaris 10 容器中管理 ZFS 的 Solaris 操作系统,以下命令将为您提供所需的信息。
zfs list