ring 生成 partition 分析

env

  • 系统:Ubuntu Server 16.04×64
  • 存储设置:4T
  • python-swiftclient 3.5.0
  • 架构部署:
主机名 IP 作用
keystone 192.168.100.50 keystone node
Proxy 192.168.100.50/192.168.0.50 代理节点
object1 192.168.100.105 存储节点1(zone1)
object2 192.168.100.106 存储节点2(zone1)
object3 192.168.100.107 存储节点3(zone1)
object4 192.168.100.107 存储节点4(zone1)

step

网上示例

通过 https://ask.openstack.org/en/question/6766/what-is-a-swift-partition/ 知道:

SEC/MY_account/cats/kitten.jpgRET => 4f3146f77835ff33a6baba807f7f5c10 => 4f31

  • SEC/MY_account/cats/kitten.jpgRET => 4f3146f77835ff33a6baba807f7f5c10 这一步,放到网上md5加密就能得到了。
  • 4f3146f77835ff33a6baba807f7f5c10 => 4f31
  • 4f31 => 20273 这一步,放到网上16进制转10进制就能得到了。

那么我们这个版本的是如何生成 partition 的呢?

现象

从下面的现象,我们知道,当传入

account= "AUTH_7d6eaa90d74a4f239963933c3a744df3" container = "test4" obj = "object-a.txt"

最后得到的 partition 值是 119

怎么得到下面的 119 呢?

本质

直接看源码。

源码位置

在 python 安装包的路径下。我这里是

root@controller:/usr/lib/python2.7/dist-packages/swift# ls
account  cli  common  container  __init__.py  __init__.pyc  locale  obj  proxy
root@controller:/usr/lib/python2.7/dist-packages/swift#

如果你当前没有安装swift的环境,也没有关系,去github下载。 这里要注意版本。不同版本,源代码当然不同啦, 找与你对应的版本哟! 我的swift是queen版本时安装的。 下载后,有一个,进入,里有还有一个swift文件夹,此文件夹中的内容,与上面我这里的是一致的。

各文件夹是什么作用,这里先不介绍了。

get_part

./common/ring/ring.py 的 333 行,找到 get_part 函数。这个就是我想要的。

    def get_part(self, account, container=None, obj=None):
        """
        Get the partition for an account/container/object.

        :param account: account name
        :param container: container name
        :param obj: object name
        :returns: the partition number
        """
        key = hash_path(account, container, obj, raw_digest=True)
        if time() > self._rtime:
            self._reload()
        part = struct.unpack_from('>I', key)[0] >> self._part_shift
        return part

我们分析一下。里面主要就是 hash_path 和 struct.unpack_from 函数

hash_path

找到源码 common/utils.py 的 2265 行,找到 hash_path 函数

def hash_path(account, container=None, object=None, raw_digest=False):
    """
    Get the canonical hash for an account/container/object

    :param account: Account
    :param container: Container
    :param object: Object
    :param raw_digest: If True, return the raw version rather than a hex digest
    :returns: hash string
    """
    if object and not container:
        raise ValueError('container is required if object is provided')
    paths = [account]
    if container:
        paths.append(container)
    if object:
        paths.append(object)
    if raw_digest:
        return md5(HASH_PATH_PREFIX + '/' + '/'.join(paths)
                   + HASH_PATH_SUFFIX).digest()
    else:
        return md5(HASH_PATH_PREFIX + '/' + '/'.join(paths)
                   + HASH_PATH_SUFFIX).hexdigest()

看到了么?我们这里是执行

md5(HASH_PATH_PREFIX + '/' + '/'.join(paths)
                   + HASH_PATH_SUFFIX).digest()

注意到这里有

  • HASH_PATH_PREFIX = "openstack"
  • HASH_PATH_SUFFIX = "openstack"

来自于配置文件/etc/swift/swift.conf

root@controller:/home/ubuntu# grep swift_hash_path_suffix -rn /etc/swift/swift.conf
9:swift_hash_path_suffix = openstack
root@controller:/home/ubuntu# grep swift_hash_path_prefix -rn /etc/swift/swift.conf
10:swift_hash_path_prefix = openstack
root@controller:/home/ubuntu#
# md5

https://docs.python.org/2/library/md5.html

struct.unpack_from

struct.unpack_from 的 作用,请看这里 或者 这里

简单说就是: 将字节流转换成python数据类型。Unpack the buffer according to the given format.

我们这里是 struct.unpack_from('>I', key)[0]

'>I', 表示转换成python的 unsigned int。

本质的一个示例

ubuntu@controller:~$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import swift
>>> from swift.common.utils import hash_path, validate_configuration
>>> from hashlib import md5, sha1
>>> import struct
>>> HASH_PATH_PREFIX = "openstack"
>>> HASH_PATH_SUFFIX = "openstack"
>>> account= "AUTH_7d6eaa90d74a4f239963933c3a744df3"
>>> container = "test4"
>>> obj = "object-a.txt"
>>> paths = [account, container, obj]
>>> '/'.join(paths)
'AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a.txt'
>>> HASH_PATH_PREFIX + '/' + '/'.join(paths) + HASH_PATH_SUFFIX
'openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a.txtopenstack'
>>> md5(HASH_PATH_PREFIX + '/' + '/'.join(paths) + HASH_PATH_SUFFIX)
<md5 HASH object @ 0x7f8632c45670>
>>> md5(HASH_PATH_PREFIX + '/' + '/'.join(paths) + HASH_PATH_SUFFIX).digest()
'\x1d\xf3\xd1_:\x9a+x\x8e75v\xbc\xf9v\x11'
>>> key = hash_path(account, container, obj, raw_digest=True)
>>> key
'\x1d\xf3\xd1_:\x9a+x\x8e75v\xbc\xf9v\x11'
>>> print(struct.unpack_from('>I', key))
(502518111,)
>>> print(struct.unpack_from('>I', key)[0])
502518111
>>> 502518111 >> 22
119
>>> part = struct.unpack_from('>I', key)[0] >> 22
>>> part
119
>>> exit()

好了,现在基本上知道,119,就是这么来的了。

调试源代码

但是,如果你看是想亲眼见一下,119,怎么办?调试源代码吧。

因为我之前已经上传了 object = "object-a.txt" 。不能同名的。所以我现在object = "object-a-3.txt"

修改源代码

我这里只是示例。

  • ./common/ring/ring.py 的 333 行
    def get_part(self, account, container=None, obj=None):
        """
        Get the partition for an account/container/object.

        :param account: account name
        :param container: container name
        :param obj: object name
        :returns: the partition number
        """
        key = hash_path(account, container, obj, raw_digest=True)
        print("--------------------------------------------------, my debug --------------------")
        print("=========keys:", key)
        if time() > self._rtime:
            self._reload()
        part = struct.unpack_from('>I', key)[0] >> self._part_shift
        print("11111111partition:", part)
        return part
  • common/utils.py 的 2265 行
def hash_path(account, container=None, object=None, raw_digest=False):
    """
    Get the canonical hash for an account/container/object

    :param account: Account
    :param container: Container
    :param object: Object
    :param raw_digest: If True, return the raw version rather than a hex digest
    :returns: hash string
    """
    if object and not container:
        raise ValueError('container is required if object is provided')
    paths = [account]
    if container:
        paths.append(container)
    if object:
        paths.append(object)
    if raw_digest:
        print("--------------------------------------------------, my debug --------------------")
        print(HASH_PATH_PREFIX)
        print(HASH_PATH_PREFIX + '/' + '/'.join(paths) + HASH_PATH_SUFFIX)
        print(md5(HASH_PATH_PREFIX + '/' + '/'.join(paths) + HASH_PATH_SUFFIX).digest())

        return md5(HASH_PATH_PREFIX + '/' + '/'.join(paths)
                   + HASH_PATH_SUFFIX).digest()
    else:
        return md5(HASH_PATH_PREFIX + '/' + '/'.join(paths)
                   + HASH_PATH_SUFFIX).hexdigest()
重启swift-proxy服务
root@controller:/home/ubuntu# service swift-proxy restart
root@controller:/home/ubuntu# service swift-proxy status
看日志
root@controller:/home/ubuntu# tail -f /var/log/syslog
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ??70L??023G (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('=========keys:', '\xdf\xcf\x8a\xff\x9b7\xc1H0L\xf4A\xb2\x13\xc1\x87') (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('11111111partition:', 895) (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: - - 30/Jan/2019/08/07/44 HEAD /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3%3Fformat%3Djson HTTP/1.0 204 - Swift - - - - tx5d49fd7b64cb4e0c89e04-005c515b50 - 0.0047 RL - 1548835664.549806118 1548835664.554487944 -
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ??70L??023G (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('=========keys:', '\xdf\xcf\x8a\xff\x9b7\xc1H0L\xf4A\xb2\x13\xc1\x87') (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('11111111partition:', 895) (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: tx5d49fd7b64cb4e0c89e04-005c515b50)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txtopenstack (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: >&#013??#026%?? (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('=========keys:', '>\xe6\x83\x98&\x0b\xaa\xe1\xe0\xa1\x16%\xd9\xf6\x82\xbf') (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: STDOUT: ('11111111partition:', 251) (txn: tx5d49fd7b64cb4e0c89e04-005c515b50) (client_ip: 127.0.0.1)
Jan 30 16:07:44 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/44 HEAD /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txt HTTP/1.0 404 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... - - - tx5d49fd7b64cb4e0c89e04-005c515b50 - 0.0212 - - 1548835664.548610926 1548835664.569818020 0
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txtopenstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: >&#013??#026%?? (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '>\xe6\x83\x98&\x0b\xaa\xe1\xe0\xa1\x16%\xd9\xf6\x82\xbf') (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 251) (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/45 PUT /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txt HTTP/1.0 201 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... 18431 - - txacc37f453a6441499423e-005c515b51 - 0.0709 - - 1548835665.213526964 1548835665.284423113 0
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3openstack (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ??70L??023G (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xdf\xcf\x8a\xff\x9b7\xc1H0L\xf4A\xb2\x13\xc1\x87') (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 895) (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: tx06a68fa051174db18c0aa-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3openstack (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ??70L??023G (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xdf\xcf\x8a\xff\x9b7\xc1H0L\xf4A\xb2\x13\xc1\x87') (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 895) (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: tx8a9fb911df1d48af97b6f-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/45 GET /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/%3Fformat%3Djson HTTP/1.0 200 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... - 103 - tx06a68fa051174db18c0aa-005c515b51 - 0.0584 - - 1548835665.329989910 1548835665.388351917 0
Jan 30 16:07:45 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/45 GET /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4%3Fdelimiter%3D%252F%26limit%3D1001%26format%3Djson HTTP/1.0 200 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... - 1017 - tx8a9fb911df1d48af97b6f-005c515b51 - 0.0464 - - 1548835665.346412897 1548835665.392823935 0
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3openstack (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ??70L??023G (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xdf\xcf\x8a\xff\x9b7\xc1H0L\xf4A\xb2\x13\xc1\x87') (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 895) (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4openstack (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ?]?14Ν?#023#032#032#001#027??txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '\xbc]\xec\x0c\xcf]\x8a\xb6\x13\x1a\x96\x1a\x01\x17\xf6\xd1') (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 753) (txn: tx10ed616c142448debc5d4-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/45 GET /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4%3Fmarker%3Dobject-server.txt%26delimiter%3D%252F%26limit%3D1001%26format%3Djson HTTP/1.0 200 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... - 2 - tx10ed616c142448debc5d4-005c515b51 - 0.0069 - - 1548835665.394655943 1548835665.401551962 0

找到了

Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: openstack/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txtopenstack (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: >惘&#013??#026%?? (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: --------------------------------------------------, my debug -------------------- (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('=========keys:', '>\xe6\x83\x98&\x0b\xaa\xe1\xe0\xa1\x16%\xd9\xf6\x82\xbf') (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: STDOUT: ('11111111partition:', 251) (txn: txacc37f453a6441499423e-005c515b51) (client_ip: 127.0.0.1)
Jan 30 16:07:45 controller proxy-server: 127.0.0.1 127.0.0.1 30/Jan/2019/08/07/45 PUT /v1/AUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a-3.txt HTTP/1.0 201 - python-swiftclient-3.5.0 gAAAAABcUVjCZNjJ... 18431 - - txacc37f453a6441499423e-005c515b51 - 0.0709 - - 1548835665.213526964 1548835665.284423113 0

这下终于放心了。

几个想看到的点,都看到了。最后得到的 partition 是 251。哈哈!~

现象结合本质

openstackAUTH_7d6eaa90d74a4f239963933c3a744df3/test4/object-a.txtopenstack

Compute the MD5 hash of that string to get 942354320ddd6c54d9a4c052ef18bc25

then take the first 16 bits to get 9423, or in decimal, *.

ref

results matching ""

    No results matching ""