← Back to team overview

openstack team mailing list archive

Re: Openstack - cinder - volume driver NFS

 

(Resending with proper From: address.)

Hi,

nfs_shares_config is a text file where each line is an NFS share, ie. it looks like:

10.0.0.42:/nfs/foo
myserver:/export/bar

nfs_mount_point_base is a directory which must be writable by the unix user for cinder, or cinder must have permission to create it. Cinder will create a directory for each NFS share, and then (as root) mount it there.

Then nova will need to be able to create its own mount points too, but you aren't there yet.

Now, looking at the NFS driver code, I notice that it scans the output of stat(1) for "No such file or directory", but your logs show that your locale is french, and that is a bug which might be the cause for your errors.

Can you please try to run cinder with LANG=C?

Cheers,
Jean-Marc

On 01/15/2013 11:41 AM, Benoit ML wrote:
Hello,

(plz ignore my previous mail)

I'm sorry because I probabably misunderstand something.
I have :
- configured cinder like the file you show (thank you again)  (apport
the nfs_mount_point_base = /etc/cinder/volumes and volumes_dir =
/etc/cinder/volumes )
- mounted the nfs share in /etc/cinder/volumes
- echo '/etc/cinder/volumes' > /var/lib/cinder/nfsshare && chown
cinder /var/lib/cinder/nfsshare

And when I try to create a volume, it doesn't work. The volume is in
"error" state and in the log  (with debug/verbose activated) :
- cinder try to create a lv  : why create a lv ? not create a file on the nfs ?
- cinder try to "stat" a directory inside the nfs_share but failed
because it doesn't existe (of course does not create it before)

==============================================================
2013-01-15 11:32:08 29896 DEBUG cinder.openstack.common.rpc.amqp [-]
received {u'_context_roles': [u'KeystoneAdmin', u'admin',
u'KeystoneServiceAdmin'], u'_context_request_id':
u'req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca', u'_context_quota_class':
None, u'args': {u'image_id': None, u'snapshot_id': None, u'volume_id':
u'014cd61e-14a2-4aa5-b9f6-a3d80c44f302'}, u'_context_auth_token':
'<SANITIZED>', u'_context_is_admin': True, u'_context_project_id':
u'295b7cf015664e02ab54eb56eb95ee0c', u'_context_timestamp':
u'2013-01-15T10:32:08.523949', u'_context_read_deleted': u'no',
u'_context_user_id': u'108305fe03e24aa98626344b0f47e3a3', u'method':
u'create_volume', u'_context_remote_address': u'192.168.11.101'}
_safe_log /usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/common.py:195
2013-01-15 11:32:08 29896 DEBUG cinder.openstack.common.rpc.amqp [-]
unpacked context: {'user_id': u'108305fe03e24aa98626344b0f47e3a3',
'roles': [u'KeystoneAdmin', u'admin', u'KeystoneServiceAdmin'],
'timestamp': u'2013-01-15T10:32:08.523949', 'auth_token':
'<SANITIZED>', 'remote_address': u'192.168.11.101', 'quota_class':
None, 'is_admin': True, 'request_id':
u'req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca', 'project_id':
u'295b7cf015664e02ab54eb56eb95ee0c', 'read_deleted': u'no'} _safe_log
/usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/common.py:195
2013-01-15 11:32:08 INFO cinder.volume.manager
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
volume volume-014cd61e-14a2-4aa5-b9f6-a3d80c44f302: creating
2013-01-15 11:32:08 DEBUG cinder.volume.manager
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
volume volume-014cd61e-14a2-4aa5-b9f6-a3d80c44f302: creating lv of
size 10G create_volume
/usr/lib/python2.6/site-packages/cinder/volume/manager.py:133
2013-01-15 11:32:08 DEBUG cinder.utils
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
Running cmd (subprocess): sudo cinder-rootwrap
/etc/cinder/rootwrap.conf stat /etc/cinder/volumes/6614325979630346338
execute /usr/lib/python2.6/site-packages/cinder/utils.py:163
2013-01-15 11:32:08 DEBUG cinder.utils
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
Result was 1 execute
/usr/lib/python2.6/site-packages/cinder/utils.py:180
2013-01-15 11:32:08 WARNING cinder.volume.driver
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
Exception during mounting Unexpected error while running command.
Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf stat
/etc/cinder/volumes/6614325979630346338
Exit code: 1
Stdout: ''
Stderr: "/usr/bin/stat: impossible d'\xc3\xa9valuer
\xc2\xab\xc2\xa0/etc/cinder/volumes/6614325979630346338\xc2\xa0\xc2\xbb:
Aucun fichier ou dossier de ce type\n"
2013-01-15 11:32:08 DEBUG cinder.volume.driver
[req-0ed3bc1e-d5a1-43c6-8b88-3401734695ca
108305fe03e24aa98626344b0f47e3a3 295b7cf015664e02ab54eb56eb95ee0c]
Available shares [] _ensure_shares_mounted
/usr/lib/python2.6/site-packages/cinder/volume/nfs.py:200
2013-01-15 11:32:09 29896 ERROR cinder.openstack.common.rpc.amqp [-]
Exception during message handling
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
Traceback (most recent call last):
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/amqp.py",
line 276, in _process_data
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
rval = self.proxy.dispatch(ctxt, version, method, **args)
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/openstack/common/rpc/dispatcher.py",
line 145, in dispatch
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
return getattr(proxyobj, method)(ctxt, **kwargs)
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/volume/manager.py", line
163, in create_volume
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
volume_ref['id'], {'status': 'error'})
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib64/python2.6/contextlib.py", line 23, in __exit__
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
self.gen.next()
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/volume/manager.py", line
135, in create_volume
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
model_update = self.driver.create_volume(volume_ref)
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/volume/nfs.py", line 84,
in create_volume
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
volume['provider_location'] = self._find_share(volume['size'])
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
File "/usr/lib/python2.6/site-packages/cinder/volume/nfs.py", line
220, in _find_share
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
raise exception.NfsNoSharesMounted()
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
NfsNoSharesMounted: No mounted NFS shares found
2013-01-15 11:32:09 29896 TRACE cinder.openstack.common.rpc.amqp
2013-01-15 11:32:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._publish_service_capabilities periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:32:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._report_driver_status periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:33:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._publish_service_capabilities periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:33:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._report_driver_status periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:34:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._publish_service_capabilities periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:34:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._report_driver_status periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:35:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._publish_service_capabilities periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:35:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._report_driver_status periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:36:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._publish_service_capabilities periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
2013-01-15 11:36:40 29896 DEBUG cinder.manager [-] Running periodic
task VolumeManager._report_driver_status periodic_tasks
/usr/lib/python2.6/site-packages/cinder/manager.py:164
==============================================================

Any  help will be greatly appreciate !

2013/1/14 Benoit ML <ben42ml@xxxxxxxxx>:
Hello,

Thank you for your configuration, it will help me a lot.

One last question : what is the data in the file of
"nfs_shares_config" : /var/lib/cinder/nfsshare  plz ?

Thx in advance

2013/1/14 Ray Sun <qsun01185@xxxxxxxxxxxxx>:
Here's my configuration for cinder using NFS, also I submit bug for creating
volume snapshot and volume from snapshot here, I already fixed it in my
local, not submit yet:
https://bugs.launchpad.net/cinder/+bug/1097266

/etc/cinder/cinder.conf
[DEFAULT]
rootwrap_config=/etc/cinder/rootwrap.conf
sql_connection =
mysql://cinder:cinder-administrator@xxxxxxxxxxxxxxxxxxxxxxxx/cinder
api_paste_confg = /etc/cinder/api-paste.ini
iscsi_helper=ietadm
volume_name_template = volume-%s
volume_group = vg_cinder
#volume_group = cinder-volumes
verbose = True
auth_strategy = keystone
#osapi_volume_listen_port=5900
volumes_dir=/var/lib/cinder/volumes/
rabbit_host=controller.cienet.com.cn
volume_driver=cinder.volume.nfs.NfsDriver
######## defined in cinder.volume.drivers.nfs ########
nfs_shares_config=/var/lib/cinder/nfsshare
nfs_mount_point_base=/var/lib/cinder/volumes
nfs_disk_util=df
nfs_sparsed_volumes=true

/etc/cinder/rootwrap.d/volume.filters add
# cinder/volume/nfs.py
stat: CommandFilter, /usr/bin/stat, root
mount: CommandFilter, /bin/mount, root
df: CommandFilter, /bin/df, root
truncate: CommandFilter, /usr/bin/truncate, root
chmod: CommandFilter, /bin/chmod, root
rm: CommandFilter, /bin/rm, root

/etc/nova/nova.conf add
# for cinder use volume as nfs
libvirt_volume_drivers="iscsi=nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver,local=nova.virt.libvirt.volume.LibvirtVolumeDriver,fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver,rbd=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver,nfs=nova.virt.libvirt.volume_nfs.NfsVolumeDriver"

- Ray
Yours faithfully, Kind regards.

CIeNET Technologies (Beijing) Co., Ltd
Email: qsun01185@xxxxxxxxxxxxx
Office Phone: +86-01081470088-7079
Mobile Phone: +86-13581988291


On Mon, Jan 14, 2013 at 10:22 PM, Benoit ML <ben42ml@xxxxxxxxx> wrote:

Hello,

I've installed openstack Folsom on centos with the epel repo.
Basically the all things works on 4 nodes configuration(controller,
network and 2 compute). Quantum is configured with GRE and L3
services.

At my point, i'd like to go futher on the storage part.

I'm trying to use the cinder NFS driver to manage volume.  From what I
read, the driver is basic : créate/delete volume on an NFS share.
Well but I didn't manage to get it work ...  can you help me please ?
what I must do ?

When I look into the cinder/volume.log, I see that cinder first create
a LV, and  try to stat </nfsPath/><bigUUID>  and fail. Why cinder try
to créate a LV ? and try to access a directory on the nfs share thaht
is not create before ?


Moreover if you have any advice for a "good" basic shared storage
architecture with Openstack, plz shared the information ;)

In cinder.conf :
-----------------------------------------------------------------
volume_driver=cinder.volume.nfs.NfsDriver
state_path = /var/lib/cinder
nfs_shares_config=/etc/cinder/shares.conf
nfs_mount_point_base = /mnt/exports/volumes/
#nfs_sparsed_volumes = True
#nfs_disk_util = df
lock_path = /var/lib/cinder/tmp
-----------------------------------------------------------------


Thank you in advance.

Regards,

--
--
Benoit

_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp





--
--
Benoit






References