みなさん、ありがとうございます。
私のEssexはUbuntu12.04のパッケージです。gitはまだ試したことがなく、主に下記2つのリンクを参考に構築しました。見よう見まねなのでそんなに自信はありません。私が数カ月前に試したDiabloのFlatDHCPではvolumeはもう少しすんなりアタッチできたように覚えてます。
http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin
http://dodeeric.wordpress.com/2012/04/29/install-your-own-openstack-cloud-essex-edition/僕のnova.confは下記のとおりです。--iscsi_ip_address=172.20.1.1はvolumeノードにだけつけていますが--my_ipとそれ以外はどれも同じです。
##### RabbitMQ #####
--rabbit_host=192.168.1.1
##### MySQL #####
--sql_connection=mysql://
novadbadmin:XXXX...@172.20.1.1/nova##### nova-api #####
--auth_strategy=keystone
--cc_host=192.168.1.1
##### ec2 and s3 #####
--ec2_host = 172.20.1.1
--s3_host = 172.20.1.1
##### nova-network #####
--network_manager=nova.network.manager.VlanManager
--public_interface=eth1
--vlan_interface=eth0
--vlan_start=101
--network_host=192.168.1.1
--fixed_range=
10.2.0.0/16--dmz_cidr=
192.168.1.0/24--network_size=1024
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--force_dhcp_release=True
--fixed_ip_disassociate_timeout=30
--my_ip=192.168.1.1
--routing_source_ip=172.20.1.1
##### nova-compute #####
--connection_type=libvirt
--libvirt_type=kvm
--libvirt_use_virtio_for_bridges=True
--use_cow_images=True
--snapshot_image_format=qcow2
--start_guests_on_host_boot=true
--resume_guests_state_on_host_boot=true
##### nova-volume #####
--iscsi_ip_address=172.20.1.1
--num_iscsi_scan_tries=3
--num_targets=100
--iscsi_helper=tgtadm
##### nova-scheduler #####
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
##### glance #####
--image_service=nova.image.glance.GlanceImageService
--glance_api_servers=
172.20.1.1:9292##### Misc #####
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--root_helper=sudo nova-rootwrap
--verbose=true
##### Keystone #####
--keystone_ec2_url =
http://172.20.1.1:5000/v2.0/ec2tokens
##### Zone #####
--storage_availability_zone = nova_dev
--node_availability_zone = nova_dev
--default_schedule_zone= nova_dev
nova-volumeのログは下記のようになってます。
2012-06-05 23:58:57 DEBUG nova.rpc.amqp [-] received {u'_context_roles': [u'KeystoneAdmin', u'admin', u'KeystoneServiceAdmin'], u'_msg_id': u'eed9a935ae1c48fbb3405f6558656559', u'_context_read_deleted': u'no', u'_context_request_id': u'req-caf4c806-15c0-4e39-acb9-a81e9ed9b666', u'args': {u'connector': {u'ip': u'192.168.1.1', u'initiator': u'iqn.1993-08.org.debian:01:5255efa0af2f'}, u'volume_id': 4}, u'_context_auth_token': '<SANITIZED>', u'_context_is_admin': True, u'_context_project_id': u'f07ca073f69648708d0480da9d761a42', u'_context_timestamp': u'2012-06-06T03:58:57.479098', u'_context_user_id': u'22783796c597492dbb05f149aff16238', u'method': u'initialize_connection', u'_context_remote_address': u'172.20.1.1'} from (pid=5821) _safe_log /usr/lib/python2.7/dist-packages/nova/rpc/common.py:160
2012-06-05 23:58:57 DEBUG nova.rpc.amqp [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] unpacked context: {'user_id': u'22783796c597492dbb05f149aff16238', 'roles': [u'KeystoneAdmin', u'admin', u'KeystoneServiceAdmin'], 'timestamp': '2012-06-06T03:58:57.479098', 'auth_token': '<SANITIZED>', 'remote_address': u'172.20.1.1', 'is_admin': True, 'request_id': u'req-caf4c806-15c0-4e39-acb9-a81e9ed9b666', 'project_id': u'f07ca073f69648708d0480da9d761a42', 'read_deleted': u'no'} from (pid=5821) _safe_log /usr/lib/python2.7/dist-packages/nova/rpc/common.py:160
なんとなくnova-volumeよりもnova-computeのプロセスで止まっているような感がするので、nova-computeのログも添付します。。。
Login to [iface: default, target: iqn.2010-10.org.openstack:volume-00000004, portal: 192.168.1.1,3260]: successful
stderr= from (pid=5773) _run_iscsiadm /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:114
2012-06-05 23:58:59 DEBUG nova.virt.libvirt.volume [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] ktanaka: iscsiadm ('--login',): stdout=Logging in to [iface: default, target: iqn.2010-10.org.openstack:volume-00000004, portal: 192.168.1.1,3260]
Login to [iface: default, target: iqn.2010-10.org.openstack:volume-00000004, portal: 192.168.1.1,3260]: successful
stderr= from (pid=5773) _run_iscsiadm /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:116
2012-06-05 23:58:59 DEBUG nova.virt.libvirt.volume [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] ktanaka: _iscsiadm_update from (pid=5773) _iscsiadm_update /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:120
2012-06-05 23:58:59 DEBUG nova.virt.libvirt.volume [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] ktanaka: _run_iscsiadm from (pid=5773) _run_iscsiadm /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:106
2012-06-05 23:58:59 DEBUG nova.utils [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] Running cmd (subprocess): sudo nova-rootwrap iscsiadm -m node -T iqn.2010-10.org.openstack:volume-00000004 -p
192.168.1.1:3260 --op update -n node.startup -v automatic from (pid=5773) execute /usr/lib/python2.7/dist-packages/nova/utils.py:219
2012-06-05 23:58:59 DEBUG nova.virt.libvirt.volume [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] iscsiadm ('--op', 'update', '-n', 'node.startup', '-v', 'automatic'): stdout= stderr= from (pid=5773) _run_iscsiadm /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:114
2012-06-05 23:58:59 DEBUG nova.virt.libvirt.volume [req-caf4c806-15c0-4e39-acb9-a81e9ed9b666 22783796c597492dbb05f149aff16238 f07ca073f69648708d0480da9d761a42] ktanaka: iscsiadm ('--op', 'update', '-n', 'node.startup', '-v', 'automatic'): stdout= stderr= from (pid=5773) _run_iscsiadm /usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py:116
このログの最後のvolume.py:116ではどうやら下記のコマンドを実行しているのですが、この動作自体は手動でも問題なくiscsiボリュームをアタッチできました。
iscsiadm --mode node --targetname iqn.2010-10.org.openstack:volume-00000004 -p 192.168.1.1,3260 --login
このあとにlibvirtにxmlかなにかでボリュームの情報を手渡してinstanceにアタッチしようとして、そこで問題が起こっているように見えるのですが、エラーが出ずにハングしているのでまだよくわかりません。今日はとめどないグーグル検索をやめて、volume.pyのコードの中にデバッグのラインを付け足してハングしているコマンドを手探りしていますが、まだ解決できてません。
tgtのバージョンは1:1.0.17-1ubuntu2
libvirtのバージョンは0.9.8-2ubuntu17.1
qemu-kvmのバージョンは1:84+dfsg-0ubuntu16+1.0+noroms+0ubuntu13
となっています。
長くなってしまってすみませんが、
どうぞよろしくお願いいたします。
田仲