Как узнать, сколько места на диске занимает каждая зона Solaris?

ЕСЛИ я использую команду df, я могу видеть только на сервере Solaris, сколько дискового пространства занято. Но я хочу знать, сколько дискового пространства занимает конкретная зона Solaris.

Ответов (6)

Да, для этого определенно 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

Согласно операционной системе Solaris, управляющей ZFS в контейнерах Solaris 10, следующая команда предоставит вам необходимую информацию.

zfs list 

Проблема, которую я обнаружил с этими решениями, заключается в том, что они не принимают во внимание наследование каталогов. Да, вы узнаете, сколько «места» находится под определенным каталогом. Но если вы действительно хотите узнать, сколько дополнительного места занимает зона, вам придется пойти другим путем. Сделайте

zonecfg -z zonename info

где zonename - имя зоны. И посмотрите на каждую строку inherit-pkg-dir.

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

Любая линия, имеющая наследование, жестко связана с зоной. Таким образом, вы будете двойным счетом в глобальной зоне, если просто выполните

du -sh /zonepath/zonename

В основном вам нужно считать только каталоги (исключая / proc и, возможно, / tmp), которые не указаны ни в одной inherit-pkg-dir строке.

cd /zonepath/zonename/root

du -sh /bin /dev /etc /home /kernel opt /system /var etc....

Поскольку я пробовал как решение Джона, так и решение Пьера-Люка, у меня работает следующее:

  • перечислить все зоны (из глобальной зоны)

:

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», как вы уже обнаружили (что будет намного медленнее).