Scylla不能与docker卷一起工作

我正在尝试使用Docker的Scylla,并尝试启动一个容器,如下所示:

更新:只有当设置-developer-mode=0 ,并且如果设置--developer-mode 1 ,它才会运行。 就像在错误信息中的某处所说的那样。 那么有什么不同的performance?

 docker run --name some-scylla -v $(pwd)/scylla:/var/lib/scylla -d scylladb/scylla --developer-mode=0 

我得到以下错误:

  docker logs some-scylla running: (['/usr/lib/scylla/scylla_dev_mode_setup', '--developer-mode', '0'],) running: (['/usr/lib/scylla/scylla_io_setup'],) Unexpected end of /proc/mounts line `overlay / overlay rw,relatime,lowerdir=/var/lib/docker/overlay2/l/4EW63UOV5QXIGGMQLID2222UKM:/var/lib/docker/overlay2/l/6XJRXN2HPJYCHXAGSSVWQ7LJM5:/var/lib/docker/overlay2/l/7RYKDGFWLSHQ5RNAQ7UIKI5D7I:/var/lib/docker/overlay2/l/GJCMLIFXUHTV5VL62MKFAXK4AF:/var/lib/docker/overlay2/l/URWQYQVXC7M5WACG5RLJXVXWKQ:/var/lib/docker/overlay2/l/Z7IZ43DGLAA4INFGTVAYIKM6OT:/var/lib/docker/overlay2/l/VH54CMJH4X3CA73VDJ63PA7SWD:/var/lib/docker/overlay2/l/4C7TNR7TY4F3QEOBOFCUBUJWGX:/var/lib/docker/overlay2/l/LNERBP5J7NDIO' Unexpected end of /proc/mounts line `LH2VHSK2IDPTG:/var/lib/docker/overlay2/l/RNU5XYUHEFGGKKI2Z72VY6AFMR:/var/lib/docker/overlay2/l/62I7NFGNKNPMSYHM4SJOIZF3GE:/var/lib/docker/overlay2/l/ITSIUWLMY2ZDDWIYXHZN3OU3B5:/var/lib/docker/overlay2/l/NJZMNPZMNE4REV5ROKRYKALW66:/var/lib/docker/overlay2/l/6UZO7ISW4XSYPVRBAT2PWLDGTF:/var/lib/docker/overlay2/l/QHVAVYSQMYGUEE5WGGNNFBSKVF:/var/lib/docker/overlay2/l/EUSBWKEFMZRSXJ5OOMI7HC3B3V:/var/lib/docker/overlay2/l/QIJNRYNZVZ2RTON5CACSBQKSMA:/var/lib/docker/overlay2/l/PTQZWWDEG3ACWQMUYQ2V7QTVMS:/var/lib/do' terminate called after throwing an instance of 'std::system_error' what(): open: No such file or directory ERROR:root:/var/lib/scylla/data did not pass validation tests, it may not be on XFS and/or has limited disk space. This is a non-supported setup, and performance is expected to be very bad. For better performance, placing your data on XFS-formatted directories is required. To override this error, enable developer mode as follow: sudo /usr/lib/scylla/scylla_dev_mode_setup --developer-mode 1 failed! Traceback (most recent call last): File "/docker-entrypoint.py", line 15, in <module> setup.io() File "/scyllasetup.py", line 33, in io self._run(['/usr/lib/scylla/scylla_io_setup']) File "/scyllasetup.py", line 22, in _run subprocess.check_call(*args, **kwargs) File "/usr/lib64/python3.4/subprocess.py", line 558, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/usr/lib/scylla/scylla_io_setup']' returned non-zero exit status 1 

你知道为什么吗?

在开始之前,Scylla会对您现有的I / O基础架构进行基准testing,并确定一系列的事情,比如:

  • 磁盘可以并发请求的最大数量是多less?
  • asynchronous操作文件系统的性能如何?

然后将这些信息提供给Scylla的内部磁盘I / O调度程序 ,该调度程序用于在请求类之间提供QoS。

Scylla的许多优点 – 就像在一个正常工作的I / O调度程序中所预测的那样,就像低延迟和不同I / O类之间的自动隔离一样。

您看到的错误消息是因为您的I / O层未通过基本validationtesting而发生的,您可以在此消息中看到: ERROR:root:/var/lib/scylla/data did not pass validation tests, it may not be on XFS and/or has limited disk space.

从剩下的日志中,我假设你正在使用docker的默认覆盖,而不是推荐的将外部XFS格式的磁盘传递给Scylla的方法。

当你发现自己,你可以启动在developer-mode的容器。 这意味着Scylla的某些方面(如上所述)将无法正常运行,您将无法享受数据库中的最佳性能。

如果你没有进行任何生产部署,而只是testing基本的查询和testing应用程序,那么你就很好。