Support Questions

Find answers, ask questions, and share your expertise

CDSW installation: Entries in DOCKER_BLOCK_DEVICES must only be block devices

avatar
Contributor

Hello guys,

 

I have a problem by adding CDS 1.4 as service on my CDH 5.14.
The error-message is: 

ERROR:: Entries in DOCKER_BLOCK_DEVICES must only be block devices: [/dev/xvde]: 1

ERROR:: Unable to create storage for docker.: 1

 

What I did so far or tried out:

  1. Added two new Hosts to my Cluster (Master and Worder for CDSW)
  2. Installed CDSW successfully with Cloudera Manager
  3. Formatted and mounted one block device to /var/lib/cdsw for the Application Block Device (CDSW Documentation Page 45)
  4. At this point I am not sure what to paste in during the installation for DOCKER_BLOCK_DEVICES
    Block_Device.png
    I tried here severl paths without success.
    As I understood I can choose myself here a path for instance /dev/xvde (Example can be found on CDSW documentation page 48) and the installer will do the work (format and mount Docker on each gateway host)

Full-Log from Cloudera Manager after the installation aborts:

 

Mi 10. Okt 11:26:24 CEST 2018
Current working directory: /run/cloudera-scm-agent/process/2762-cdsw-CDSW_DOCKER-prepare_node
Launching one-off process: /usr/lib64/cmf/service/csd/csd.sh prepare_node true
Mi 10. Okt 11:26:24 CEST 2018
JAVA_HOME=/usr/java/jdk1.8.0_181
Using /run/cloudera-scm-agent/process/2762-cdsw-CDSW_DOCKER-prepare_node as conf dir
Using scripts/control.sh as process script
CONF_DIR=/run/cloudera-scm-agent/process/2762-cdsw-CDSW_DOCKER-prepare_node
CMF_CONF_DIR=/etc/cloudera-scm-agent
Checking if [nfs-utils.x86_64] is installed...OK
Checking if [redhat-lsb-core.x86_64] is installed...OK
Checking if [nmap-ncat.x86_64] is installed...OK
Checking if [selinux-policy-targeted.noarch] is installed...OK
Checking if [libtool-ltdl.x86_64] is installed...OK
Checking if [libcgroup.x86_64] is installed...OK
Checking if [libseccomp.x86_64] is installed...OK
Checking if [lvm2.x86_64] is installed...OK
Checking if [bridge-utils.x86_64] is installed...OK
Checking if [policycoreutils-python.x86_64] is installed...OK
Checking if [ntp.x86_64] is installed...OK
Checking if [ebtables.x86_64] is installed...OK
Checking if [bind-utils.x86_64] is installed...OK
Checking if [openssl.x86_64] is installed...OK
Checking if [e2fsprogs.x86_64] is installed...OK
Checking if [rsync.x86_64] is installed...OK
Checking if [selinux-policy.noarch] is installed...OK
Checking if [gawk.x86_64] is installed...OK
Checking if [sed.x86_64] is installed...OK
Checking if [coreutils.x86_64] is installed...OK
Checking if [util-linux.x86_64] is installed...OK
Checking if [ncurses.x86_64] is installed...OK
Checking if [socat.x86_64] is installed...OK
Setting up docker storage.

ERROR:: Entries in DOCKER_BLOCK_DEVICES must only be block devices: [/dev/xvde]: 1

ERROR:: Unable to create storage for docker.: 1
Exit code: 1

Grateful for any help!

 

1 ACCEPTED SOLUTION

avatar
Contributor

I could solve the problem myself. As written in the documentation you have to have a block device for Docker. This can be either a second hard drive or a file which works as a block device.

Since I have only one hard drive on every CDSW-Host I had to create a block device as a file.
Following steps might be helpful for someone:

  • Creating a file (300GB) out of our aivalable block device (hard drive) under /home/myBlockDevice :
    dd if=/dev/sda of=/home/myBlockDevice bs=1M count=300000
  • Format file with ext4:
    mkfs.ext4 /home/myBlockDevice
  • Bind file with loop device loop0:
    losetup /dev/loop0 /home/myBlockDevice

Do the following if you wish to bind your newely created block-device after a reboot of your host with the loop device:

  • nano /etc/rc.local
  • Paste: losetup /dev/loop0 /home/myBlockDevice
  • Safe file and close
  • Run following comment on shell  to ensure that the script will be executed during boot:
    chmod +x /etc/rc.d/rc.local

In this example the path of DOCKER_BLOCK_DEVICES during the installation of CDSW will be /dev/loop0

 

View solution in original post

2 REPLIES 2

avatar
Contributor

I could solve the problem myself. As written in the documentation you have to have a block device for Docker. This can be either a second hard drive or a file which works as a block device.

Since I have only one hard drive on every CDSW-Host I had to create a block device as a file.
Following steps might be helpful for someone:

  • Creating a file (300GB) out of our aivalable block device (hard drive) under /home/myBlockDevice :
    dd if=/dev/sda of=/home/myBlockDevice bs=1M count=300000
  • Format file with ext4:
    mkfs.ext4 /home/myBlockDevice
  • Bind file with loop device loop0:
    losetup /dev/loop0 /home/myBlockDevice

Do the following if you wish to bind your newely created block-device after a reboot of your host with the loop device:

  • nano /etc/rc.local
  • Paste: losetup /dev/loop0 /home/myBlockDevice
  • Safe file and close
  • Run following comment on shell  to ensure that the script will be executed during boot:
    chmod +x /etc/rc.d/rc.local

In this example the path of DOCKER_BLOCK_DEVICES during the installation of CDSW will be /dev/loop0

 

avatar
Contributor

Thanks Boris for the below information. Will try the same.