HP Vertica installation error FAIL (S0150) fix

This is a short fix for the error FAIL(S0150) that comes up during the HP Vertica Installation.

FAIL (S0150):These disks do not have 'deadline' or 'noop' IO scheduling: '/dev/sda1'
        ('sda') = 'cfq'
HP Vertica requires that I/O Scheduling be set to deadline or noop. What are the IO scheduling types : Input/output (I/O) scheduling is the method that computer operating systems use to decide which order block I/O operations will be submitted to storage volumes. I/O schedulers can have many purposes depending on the goal of the I/O scheduler. Some common ones are:
  • To minimize time wasted by hard disk seeks
  • To prioritize a certain processes' I/O requests
  • To give a share of the disk bandwidth to each running process
  • To guarantee that certain requests will be issued before a particular deadline
Types of scheduling
  • Random scheduling
  • First In, First Out (FIFO), also known as First Come First Served (FCFS)
  • Last In, First Out (LIFO)
  • Shortest seek first, also known as Shortest Seek / Service Time First (SSTF)
  • Elevator algorithm, also known as SCAN (including its variants, C-SCAN, LOOK, and C-LOOK)
  • N-Step-SCAN SCAN of N records at a time
  • FSCAN, N-Step-SCAN where N equals queue size at start of the SCAN cycle
  • Completely Fair Queuing (CFQ) on Linux
  • Anticipatory scheduling
  • Noop scheduler
  • Deadline scheduler
We are not going to explain all of them, we will only talk about the ones that HP Vertica recommend using and why. There two are deadline and noop. deadline -The Deadline scheduler gives priority to read requests over write requests. It also imposes a deadline on all requests. After reaching the deadline, such requests gain priority over all other requests. This scheduling methods helps prevent processes from becoming starved for I/O access. noop -The NOOP scheduler inserts all incoming I/O requests into a simple FIFO queue and implements request merging. This scheduler is useful when it has been determined that the host should not attempt to re-order requests based on the sector numbers contained therein. In other words, the scheduler assumes that the host is definitively unaware of how to productively re-order requests. This scheduler is best used on solid state drives (SSDs). Since SSDs do not have a physical read head, no performance penalty exists when accessing non-adjacent sectors. Let's go an see how we can fix this erros HP Vertica requires that IO scheduler be set to deadline or noop Viewing the contents of the /sys/block//queue/scheduler file to see you actual schedule definition. Where
[root@primary tmp]# cd  /sys/block
[root@primary block]# ll
total 0
lrwxrwxrwx 1 root root 0 Feb 24 14:21 dm-0 - ../devices/virtual/block/dm-0
lrwxrwxrwx 1 root root 0 Feb 24 14:21 dm-1 - ../devices/virtual/block/dm-1
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop0 - ../devices/virtual/block/loop0
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop1 - ../devices/virtual/block/loop1
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop2 - ../devices/virtual/block/loop2
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop3 - ../devices/virtual/block/loop3
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop4 - ../devices/virtual/block/loop4
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop5 - ../devices/virtual/block/loop5
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop6 - ../devices/virtual/block/loop6
lrwxrwxrwx 1 root root 0 Feb 24 14:21 loop7 - ../devices/virtual/block/loop7
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram0 - ../devices/virtual/block/ram0
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram1 - ../devices/virtual/block/ram1
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram10 - ../devices/virtual/block/ram10
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram11 - ../devices/virtual/block/ram11
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram12 - ../devices/virtual/block/ram12
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram13 - ../devices/virtual/block/ram13
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram14 - ../devices/virtual/block/ram14
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram15 - ../devices/virtual/block/ram15
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram2 - ../devices/virtual/block/ram2
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram3 - ../devices/virtual/block/ram3
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram4 - ../devices/virtual/block/ram4
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram5 - ../devices/virtual/block/ram5
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram6 - ../devices/virtual/block/ram6
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram7 - ../devices/virtual/block/ram7
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram8 - ../devices/virtual/block/ram8
lrwxrwxrwx 1 root root 0 Feb 24 14:21 ram9 - ../devices/virtual/block/ram9
lrwxrwxrwx 1 root root 0 Feb 24 14:21 sda - ../devices/pci0000:00/0000:00:0d.0/host2/target2:0:0/2:0:0:0/block/sda
lrwxrwxrwx 1 root root 0 Feb 24 14:21 sdb - ../devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0/block/sdb
lrwxrwxrwx 1 root root 0 Feb 24 14:21 sr0 - ../devices/pci0000:00/0000:00:01.1/host1/target1:0:0/1:0:0:0/block/sr0
In my case the devices that are going to be used for the HP Vertica install is sda. To it's definition :
[root@primary block]# cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
To change the scheduler, write the name of the scheduler you want the device to use to its scheduler file. You must have root privileges to write to this file. For example, to set the sda drive to use the deadline scheduler, run the following command as root:
[root@primary block]# echo deadline  /sys/block/sda/queue/scheduler
[root@primary block]# cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq