15 Август 2011

Внутри IBM Storwize V7000. Часть 2

В первой части мы немного узнали про устройство железки, как говориться из первых рук, т.е. от нее самой :)

Теперь пойдем дальше.
На чем живет сама система? – На внутреннем SSD диске объемом 16Gb

echo $(</proc/mdstat)

major minor #blocks name
8 0 31266648 (15266 Mb ~16G) sda
8 1 1775182 (866,78 Mb) sda1
8 2 265072 (129,43 Mb) sda2
8 4 1 sda4
8 5 8297572 (4051,55 Mb) sda5
8 6 265072 (129,43 Mb) sda6
8 7 19615364 (9577,81 Mb) sda7
8 8 1044224 (509,875 Mb) sda8

Диск разбит на 6 разделов. Далее точки монтирования

echo $(</proc/mounts)

rootfs / rootfs rw 0 0
/dev/sda1 / ext3 ro,relatime,errors=continue,data=writeback 0 0
/proc /proc proc rw,relatime 0 0
/sys /sys sysfs rw,relatime 0 0
tmpfs /dev tmpfs rw,relatime,size=2048k 0 0
/dev/sda2 /compass ext3 ro,relatime,errors=continue,data=writeback 0 0
/dev/sda5 /data ext3 rw,relatime,errors=continue,data=writeback 0 0
/dev/sda6 /var ext3 rw,relatime,errors=continue,data=writeback 0 0
/dev/sda7 /dumps ext3 rw,relatime,errors=continue,data=writeback 0 0
/dev/sda8 /tmp ext3 rw,relatime,errors=continue,data=writeback 0 0
/dev/sda8 /home ext3 rw,relatime,errors=continue,data=writeback 0 0
none /dev/pts devpts rw,relatime,gid=5,mode=620 0 0 none
/dev/shm tmpfs rw,relatime 0 0
plfsmain /mnt/plfs fuse.plfsmain rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other 0 0

Все в общем то стандартно, но заинтересовала запись о монтировании PLFS.
PLFS это довольно таки экзотическая штука, по крайней мере я раньше не сталкивался и информации по ней не так много. Разрабатывается она прежде всего для HPC систем.

Собственно сам проект http://sourceforge.net/projects/plfs/
Разработчики http://institute.lanl.gov/plfs/
Краткое описание (постер) http://www.pdsi-scidac.org/events/PDSW10/resources/posters/plfs-r10.pdf
Презентация http://institute.lanl.gov/isti/irhpit/presentations/polte.pdf

Если кратко, то PLFS предназначена для распараллеливания совместного доступа на запись к единому файлу, со стороны множества конкурирующих за запись процессов.
Подозреваю что она используется для ускорения записи метаданных экстентов, но это догадки.

Теперь посмотрим на список процессов

for P in $(echo /proc/*/status); do echo $(<"$P"); done;

[тут вывод был почищен скриптом и вот что получилось]

init
ksoftirqd/2
watchdog/2
migration/3
ksoftirqd/3
watchdog/3
sleep
events/0
events/1
events/2
sleep
events/3
kjournald
udevd
khelper
sync_supers
bdi-default
kblockd/0
kblockd/1
kblockd/2
kblockd/3
kthreadd
kacpid
kacpi_notify
kacpi_hotplug
plmain
ietd
sshd
java_tomcat
cron
async/mgr
sshd
sshd
rbash
sshd
sshd
rbash
compass_start
mingetty
mingetty
kjournald
ecmain
syslogd
klogd
internal_sshd
ssh
internal_sshd
kjournald
kjournald
kjournald
kjournald
migration/0
ata/0
ata/1
ata/2
ata/3
ata_aux
ksuspend_usbd
khubd
kseriod
rpciod/0
rpciod/1
rpciod/2
rpciod/3
ksoftirqd/0
mcelog
khungtaskd
kswapd0
aio/0
aio/1
aio/2
aio/3
nfsiod
crypto/0
crypto/1
crypto/2
crypto/3
watchdog/0
endd_script
endd
migration/1
flush-8
iscsi_eh
scsi_eh_0
scsi_eh_1
ksoftirqd/1
kpsmoused
usbhid_resumer
plfsmain
tomcat_config_s
slv_dpadmpd
cimMemoryMonitor
slpd
cimserver
watchdog/1
sshd
sshd
rbash
migration/2
rbash

что интересного:
iscsi_eh – стандартный iSCSI модуль ядра
nfsiod – есть поддержка nfs клиента в ядре

Теперь посмотрим на командные строки запуска процессов в системе
for P in $(echo /proc/*/cmdline); do echo $(<"$P"); done;

sleep 36000
udevd --daemon
/compass/plmainupgradenormal
/compass/ietd
/usr/sbin/sshd -o PidFile=/var/run/sshd.init.pid

/usr/bin/java_tomcat -Xms192m -Xmx192m -verbose:gc -X verbosegclog:/dumps/cimom/tomcat.gc.78G03CT-2.xml,8,200 -Xdump:system:defaults:file=/dumps/cimom/jvm_core.78G03CT-2.%Y%m%d.%H%M%S.%pid.%seq.dmp -Xdump:snap:defaults:file=/dumps/cimom/jvm_Snap.78G03CT-2.%Y%m%d.%H%M%S.%pid.%seq.trc -Xdump:heap:defaults:file=/dumps/cimom/jvm_heapdump.78G03CT-2.%Y%m%d.%H%M%S.%pid.%seq.phd -Xdump:java:defaults:file=/dumps/cimom/jvm_javacore.78G03CT-2.%Y%m%d.%H%M%S.%pid.%seq.txt -Xjit:disableInterpreterProfiling,scratchSpaceLimit=3000 -D java.awt.headless=true -D java.util.logging.config.file=/data/apache-tomcat/conf/logging.properties -D java.util.logging.manager=org.apache.juli.ClassLoaderLogManager -D AspenLogProperties=/data/apache-tomcat/tbui/WEB-INF/classes/com/ibm/svc/util/log/jlog/jlog.properties -classpath:/data/apache-tomcat/bin/bootstrap.jar:/data/apache-tomcat/bin/tomcat-juli.jar -D catalina.base=/data/apache-tomcat -D catalina.home=/data/apache-tomcat -D java.io.tmpdir=/data/apache-tomcat/work -D sun.reflect.inflation Threshold=0 org.apache.catalina.startup.Bootstrap start

/usr/sbin/cron
sshd: user [priv]
sshd: user@pts/5
rbash --rcfile /etc/rbashrc --noprofile --restricted
sshd: user [priv]
sshd: user@pts/1
rbash --rcfile /etc/rbashrc --noprofile --restricted
sshd: user [priv]
sshd: user@pts/6
rbash --rcfile/etc/rbashrc --noprofile --restricted
/bin/bash/compass/compass_start
/sbin/mingetty --nocleartty1
/sbin/mingetty tty2
/compass/ecmain -model8
/sbin/syslogd -r -f/data/etc/syslog.conf -a /var/lib/named/dev/log
/sbin/klogd -c1 -x
/usr/sbin/internal_sshd -f /etc/ssh/internal_sshd_config -o PidFile=/var/run/internal_sshd.pid
/usr/bin/ssh -N -p 21 -i /home/root/.ssh/id_internal -o StrictHostKeyChecking=no -6 -R[::]:80:[::1]:8080 -R[::]:443:[::1]:8443 root@::1
internal_sshd: root
sleep 60
/usr/sbin/mcelog --pidfile /var/run/mcelog.pid --logfile/var/log/mcelog --config-file /etc/mcelog/mcelog.conf --daemon
/bin/bash/compass/endd_script -x
/compass/modules/endd -w
/compass/plfsmain/mnt/plfs -o allow_other -d -c /var/run/plfs.pid
/bin/bash/data/tomcat_config_service
/compass/slv_dpadmpd
/bin/sh -x /compass/cimom/bin/cimMemoryMonitor
/usr/sbin/slpd -c /data/etc/slp.conf -r /etc/slp.reg -l /var/log/slpd.log
cimserver
sshd: admin [priv]
sshd: admin@pts/0
rbash --rcfile /etc/rbashrc --noprofile --restricted
rbash --rcfile /etc/rbashrc --noprofile --restricted

интерфейс пользователя работает на сервере приложений tomcat, данные похоже все лежат в /data

вот интересная штука
/usr/sbin/internal_sshd -f /etc/ssh/internal_sshd_config -o PidFile=/var/run/internal_sshd.pid
похоже это специальный sshd не для пользователей, возможно это он слушает порт 21

а вот внутренняя ssh сессия под рутом
/usr/bin/ssh -N -p 21 -i /home/root/.ssh/id_internal -o StrictHostKeyChecking=no -6 -R[::]:80:[::1]:8080 -R[::]:443:[::1]:8443
судя по параметрам она используется для форвардинга портов 80->loopback:8080, 443->loopack:8443, причем используется только IPv6 адресация
/home/root/.ssh/id_internal – это приватный ключ для соединения
проверка открытого ключа хоста отключена

Зачем это…? сложно сказать, мало информации. А вы как думаете?

Вот такая интересная железка IBM Storwize V7000, учитывая конструкцию штука мега прибыльная для производителя.
Ну что же, посмотрим что дальше будет.