Swift-Veeam Cloud Backup : Request Timeout

Asked by bob51

Hello everyone,

In first, sorry for my english ! :)

I called you because I have a problem with a backup plan on Veeam Backup Cloud with Object Storage (Swift) OpenStack.

Indeed, the launch of the plan Veeam Backup Cloud Backup with a 25 GB file, it tells me **"Disk Space insufisant".**
Then, with a 120MB file for example, it performs the backup plan and one, the following message appears:
**"Request Timeout: The server has Waited too long for the request to be send by the client."**

So I set some variables regarding to 40GB, namely:

vim /etc/swift/swift.conf

    max_file_size = 42949672960

vim /etc/swift/proxy-server.conf

    [app:proxy-server]
    object_chunk_size = 42949672960
    client_chunk_size = 42949672960

I think he has a problem with many variables but which side OpenStack Swift?
I join my installation and configuration files side Swift and Swift Proxy.

Can you clarify me on this problem, please?
Thank you in advance.

Matthew

-------------------------------

--------------------------------

7 - Proxy Swift Installation (192.168.220.71)

--------------------------------

apt-get install swift openssh-server rsync memcached python-netifaces python-xattr python-memcache

    mkdir -p /etc/swift
    chown -R swift:swift /etc/swift/

    Copy of swift.conf file of storage server
    scp test@192.168.220.62:/etc/swift/swift.conf /etc/swift/

apt-get install swift-proxy memcached python-keystoneclient python-swiftclient python-webob

vim /etc/memcached.conf

    -l 192.168.220.71

service memcached restart

vim /etc/swift/proxy-server.conf

    [DEFAULT]
    bind_port = 8080
    user = swift

    [pipeline:main]
    pipeline = healthcheck cache authtoken keystoneauth proxy-server

    [app:proxy-server]
    use = egg:swift#proxy
    allow_account_management = true
    account_autocreate = true
    object_chunk_size = 42949672960
    client_chunk_size = 42949672960

    [filter:keystoneauth]
    use = egg:swift#keystoneauth
    operator_roles = Member,admin,swiftoperator

    [filter:authtoken]
    paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory

    # Delaying the auth decision is required to support token-less
    # usage for anonymous referrers ('.r:*').
    delay_auth_decision = true

    # cache directory for signing certificate
    signing_dir = /home/swift/keystone-signing

    # auth_* settings refer to the Keystone server
    auth_protocol = http
    auth_host = 192.168.220.70
    auth_port = 35357

    # the same admin_token as provided in keystone.conf
    admin_token = test2013

    # the service tenant and swift userid and password created in Keystone
    admin_tenant_name = service
    admin_user = swift
    admin_password = test2013

    [filter:cache]
    use = egg:swift#memcache

    [filter:catch_errors]
    use = egg:swift#catch_errors

    [filter:healthcheck]
    use = egg:swift#healthcheck

    mkdir -p /home/swift/keystone-signing
    chown -R swift:swift /home/swift/keystone-signing

    cd /etc/swift
    swift-ring-builder account.builder create 18 3 1
    swift-ring-builder container.builder create 18 3 1
    swift-ring-builder object.builder create 18 3 1

vim exportring

    # set the zone number for that storage device
    export ZONE=1
    # relative weight (higher for bigger/faster disks)
    export WEIGHT=100
    # Device stockage
    export DEVICE=sdb1

source exportring

    swift-ring-builder account.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
    swift-ring-builder container.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6001/$DEVICE $WEIGHT
    swift-ring-builder object.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6000/$DEVICE $WEIGHT

    swift-ring-builder account.builder
    swift-ring-builder container.builder
    swift-ring-builder object.builder

    swift-ring-builder account.builder rebalance
    swift-ring-builder container.builder rebalance
    swift-ring-builder object.builder rebalance

Copy the rings on the storage server

chown -R swift:swift /etc/swift

swift-init proxy start

--------------------------------

6 - Swift Installation (192.168.220.62)

--------------------------------

apt-get install swift openssh-server rsync memcached python-netifaces python-xattr python-memcache

    mkdir -p /etc/swift
    chown -R swift:swift /etc/swift/

cat >/etc/swift/swift.conf <<EOF

    [swift-hash]
    # random unique strings that can never change (DO NOT LOSE)
    swift_hash_path_prefix = `od -t x8 -N 8 -A n </dev/random`
    swift_hash_path_suffix = `od -t x8 -N 8 -A n </dev/random`

    [swift-constraints]
    max_file_size = 42949672960

EOF

Copy the file swift.conf on the proxy server

apt-get install swift-account swift-container swift-object xfsprogs

fdisk /dev/sdb

    n
    p
    1
    ENTRER
    ENTRER
    p
    w

    mkfs.xfs -i size=1024 /dev/sdb1
    echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
    mkdir -p /srv/node/sdb1
    mount /srv/node/sdb1
    chown -R swift:swift /srv/node

vim /etc/rsyncd.conf

    uid = swift
    gid = swift
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    address = 192.168.220.62

    [account]
    max connections = 25
    path = /srv/node/
    read only = false
    lock file = /var/lock/account.lock

    [container]
    max connections = 25
    path = /srv/node/
    read only = false
    lock file = /var/lock/container.lock

    [object]
    max connections = 25
    path = /srv/node/
    read only = false
    lock file = /var/lock/object.lock

vim /etc/default/rsync

    RSYNC_ENABLE = true

service rsync start

Copying rings proxy server

    scp test@192.168.220.71:/etc/swift/account.ring.gz /etc/swift
    scp test@192.168.220.71:/etc/swift/container.ring.gz /etc/swift
    scp test@192.168.220.71:/etc/swift/object.ring.gz /etc/swift

    mkdir -p /var/swift/recon
    chown -R swift:swift /var/swift/recon

swift-init all start

--------------------------------

Just for information, when I put this command in Proxy server:

--------------------------------

root@srv-os-swift-proxy:~# swift-recon -d -v

    ===============================================================================
    --> Starting reconnaissance on 1 hosts
    ===============================================================================
    [2013-06-13 11:03:44] Checking disk usage now
    -> http://192.168.220.62:6000/recon/diskusage: [{'device': 'sdb1', 'avail': 1606
    Distribution Graph:
      0% 1 *********************************************************************
    Disk usage: space used: 358199296 of 160981585920
    Disk usage: space free: 160623386624 of 160981585920
    Disk usage: lowest: 0.22%, highest: 0.22%, avg: 0.222509483897%
    ===============================================================================

root@srv-os-swift-proxy:~# swift -V 2.0 -A http://192.168.220.70:5000/v2.0 -U

    demo:admin -K $ADMINPASS stat
    Account: AUTH_57XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Containers: 1
       Objects: 6
         Bytes: 720243
    Accept-Ranges: bytes
    X-Timestamp: 1371030931.41193
    Content-Type: text/plain; charset=utf-8

root@srv-os-swift-proxy:~# curl -k -v -H 'X-Storage-User: demo:admin' -H 'X-Storage-Pass: $ADMINPASS' http://192.168.220.70:5000/auth/v2.0

    * About to connect() to 192.168.220.70 port 5000 (#0)
    * Trying 192.168.220.70... connected
    > GET /auth/v2.0 HTTP/1.1
    > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
    > Host: 192.168.220.70:5000
    > Accept: */*
    > X-Storage-User: demo:admin
    > X-Storage-Pass: $ADMINPASS
    >
    < HTTP/1.1 404 Not Found
    < Vary: X-Auth-Token
    < Content-Type: application/json
    < Content-Length: 93
    < Date: Thu, 13 Jun 2013 09:37:02 GMT
    <
    * Connection #0 to host 192.168.220.70 left intact
    * Closing connection #0
    {"error": {"message": "The resource could not be found.", "code": 404, "title": "Not Found"}}

root@srv-os-swift-proxy:~# curl -k -v -X 'POST' http://192.168.220.70:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username":"admin", "password":"test2013"}, "tenantName":"demo"}}' -H 'Content-type: application/json' -H 'Accept: application/xml'

    * About to connect() to 192.168.220.70 port 5000 (#0)
    * Trying 192.168.220.70... connected
    > POST /v2.0/tokens HTTP/1.1
    > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
    > Host: 192.168.220.70:5000
    > Content-type: application/json
    > Accept: application/xml
    > Content-Length: 96
    >
    * upload completely sent off: 96out of 96 bytes
    < HTTP/1.1 200 OK
    < Vary: X-Auth-Token
    < Content-Type: application/xml
    < Content-Length: 5428
    < Date: Thu, 13 Jun 2013 12:25:49 GMT
    <
    <?xml version="1.0" encoding="UTF-8"?>
    <access xmlns="http://docs.openstack.org/identity/api/v2.0">
      <token issued_at="2013-06-13T12:25:49.632643" expires="2013-06-14T12:25:49Z" id="XXXXXXXX">
        <tenant enabled="true" name="demo" id="57XXXXXXXXXXXXXXXXXXX"/>
      </token>
      <serviceCatalog>
        <service type="object-store" name="swift">
          <endpoints_links/>
          <endpoint adminURL="http://192.168.220.71:8080/v1" region="RegionOne" publicURL="http://192.168.220.71:8080/v1/AUTH_57XXXXXXXXXXXXXXXXXXX" internalURL="http://192.168.220.71:8080/v1/AUTH_57XXXXXXXXXXXXXXXXXXX" id="78XXXXXXXXXXXXXXXXXXXXX"/>
        </service>
        <service type="image" name="glance">
          <endpoints_links/>
          <endpoint adminURL="http://192.168.220.64:9292/v2" region="RegionOne" publicURL="http://192.168.220.64:9292/v2" internalURL="http://192.168.220.64:9292/v2" id="0dXXXXXXXXXXXXXXXXXXXXXXXX"/>
        </service>
        <service type="compute" name="nova">
          <endpoints_links/>
          <endpoint adminURL="http://192.168.220.60:8774/v2/57XXXXXXXXXXXXXXXXXXX" region="RegionOne" publicURL="http://192.168.220.60:8774/v2/57XXXXXXXXXXXXXXXXXXX" internalURL="http://192.168.220.60:8774/v2/57XXXXXXXXXXXXXXXXXXX" id="17XXXXXXXXXXXXXXXXXXXXXX"/>
        </service>
        <service type="ec2" name="ec2">
          <endpoints_links/>
          <endpoint adminURL="http://192.168.220.70:8773/services/Admin" region="RegionOne" publicURL="http://192.168.220.70:8773/services/Cloud" internalURL="http://192.168.220.70:8773/services/Cloud" id="28XXXXXXXXXXXXXXXX"/>
        </service>
        <service type="identity" name="keystone">
          <endpoints_links/>
          <endpoint adminURL="http://192.168.220.70:35357/v2.0" region="RegionOne" publicURL="http://192.168.220.70:5000/v2.0" internalURL="http://192.168.220.70:5000/v2.0" id="00XXXXXXXXXXXXXXXXXXXXXX"/>
        </service>
      </serviceCatalog>
      <user username="admin" id="a5XXXXXXXXXXXXXXXXXXXXXXX" name="admin">
        <roles_links/>
        <role name="admin"/>
      </user>
      <metadata is_admin="0">
        <roles>
          <role>bdXXXXXXXXXXXXXXXXXX</role>
        </roles>
      </metadata>
    </access>
    * Connection #0 to host 192.168.220.70 left intact
    * Closing connection #0

root@srv-os-swift-proxy:~# curl -k -v -H 'X-Auth-Token: XXXXX' http://192.168.220.71:8080/v1/AUTH_57XXXXXXXXXXXXXXXXXXX

       * About to connect() to 192.168.220.71 port 8080 (#0)
        * Trying 192.168.220.71... connected
        > GET /v1/AUTH_57XXXXXXXXXXXXXXXXXXX HTTP/1.1
        > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
        > Host: 192.168.220.71:8080
        > Accept: */*
        > X-Auth-Token: XXXXXX
        >
        < HTTP/1.1 200 OK
        < Content-Length: 10
        < Accept-Ranges: bytes
        < X-Timestamp: 1371030931.41193
        < X-Account-Bytes-Used: 720243
        < X-Account-Container-Count: 1
        < Content-Type: text/plain; charset=utf-8
        < X-Account-Object-Count: 6
        < Date: Thu, 13 Jun 2013 12:30:15 GMT
        <
        VEEAM-WAN
        * Connection #0 to host 192.168.220.71 left intact
        * Closing connection #0

Question information

Language:
English Edit question
Status:
Expired
For:
OpenStack Object Storage (swift) Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
bob51 (mmarle) said :
#2

UP ! Please ! :)
The problem is the result of OpenStack.

-------------------------------------
A member of the community Veeam left a message at my problem:

I'm not sure about the second error message, but the disk space inefficient message is correct if you are trying to upload large chunks without using the "Advanced" option. When using "Advanced" we automatically break large files into smaller "chunks" that can be uploaded (default is 10MB, can be set under options). With "Simple" mode we attempt upload the files exactly as they exist on the local disk, so you hit chunk size limits with large files.
-------------------------------------
Veeam support response:

Hello,

Thank you for your reply.

Here is the information that I have seen in the log:
"
2013-06-12 14:26:23,700 [PL] [1] INFO - Loading info for share drive cbb_configuration
2013-06-12 14:26:23,989 [Base] [14] WARN - memoryManager: Memory allocation limit is used. Available: 314572800, Need: 25894115115
2013-06-12 14:26:23,992 [Base] [14] WARN - Allocating 25,894,115,115 bytes store on disk.
2013-06-12 14:26:24,004 [Base] [14] ERROR - memoryManager: Failed to allocate file on disk. Available: 0, Need: 25894115115. Error: Not enough space on the disk.
"
It will define the cause of occurrence of problem. I do not think the problem came from the side of Veeam.
OpenStack is probably that returns the value of the space incorrectly.

Have you ever contacted OpenStack? What is the answer?

I am always in your disposal.

Waiting for your answer,
Sincerely,
Veeam Software.

Revision history for this message
bob51 (mmarle) said :
#3

No one has a solution? :/

Revision history for this message
Peter Portante (peter-a-portante) said :
#4

Hello, looking at your chunk size parameters it seems they are way too big. I would recommend restoring them to the default of 64k. Try that out first. -peter

Revision history for this message
bob51 (mmarle) said :
#5

Hi Peter,

Thank you very much for your answer, it works !! :)

I handed these default variables (64k), namely:
object_chunk_size = 65536
client_chunk_size = 65536
and it works for a 120MB file (compress with Veeam) ! :)

NB: Why with great value, this does not work?
NB2: I'm testing a 20GB file, I'll let you know.

But! When I look at the virtual test drive on Windows, the size does not increase, and therefore, by refreshing the page, the file is not inside. To solve this problem, I have to delete the virtual disk and back. And then I see my big file in the virtual disk.

Screenshot: http://img15.hostingpics.net/pics/136086PrtScrcapture6.jpg

This problem bothers me! An idea to see the file just by refreshing the page?

Thank you in advance!

Revision history for this message
Launchpad Janitor (janitor) said :
#6

This question was expired because it remained in the 'Open' state without activity for the last 15 days.