Ответов (6)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.
Надеюсь, это поможет!
Согласно операционной системе 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