Having problems with DVD Store 2.1? Perhaps this will help.Posted: December 10, 2012
Oh…my…goodness. This caused me such a big headache. I’m using DVD Store as a placeholder for a production database in the lab. We’re in the middle of a proof-of-concept of SRM and we’re getting close to the due date. My boss comes to me and says, “We’re close to the due date. Do you want to document the vSphere 5.1 upgrade or work on DVD Store?” Well, having played with DVD Store a bit in the last few weeks and knowing it wasn’t “plug-n-play” for a custom database size, I couldn’t hand the DVD Store project over to a workmate in good conscience. I didn’t find the learning curve for a simple fellow like myself short and to throw someone else knee deep into the project when I’ve already played with it wouldn’t be right. “I’ll work on DVD Store.” I said, dejectedly. You see, I rarely get excited about scripts I don’t write myself. And to be perfectly honest, once I started reading about DVD Store and the amount of work that would have to go into getting a custom-sized database, I put it off as long as possible. Now I knew I was going to be elbow deep in scripts the next day and I wasn’t very happy about it. Here’s what I found out.
The normal way to install DVD Store with a custom-sized database for Microsoft SQL Server goes something like this:
- Have two VMs ready – one for the database server and one for the app server
- Install SQL Server and Active Perl on the database server
- Download the DVD Store and SQL Server tarballs from Dell – http://linux.dell.com/dvdstore/
Uncompress each and place them in a directory structure like this
- C:\ds2\ds21_sqlserver (or C:\ds2\sqlserverds2)
- Run the Install_DVDStore.pl Perl script and follow the prompts
- Run the create_all SQL script that is created by the installation script
- Run the CreateConfigFile.pl Perl script to create the file the driver program uses
- Run the driver program from the app server using the config file created in step 7
When I did this, I had a problem completing step 6 because the scripts never seemed to be created from the generic template as the DVD Store documentation mentioned. There were standard-sized create_all SQL script:, small, medium, large2, and large4 (large scripts were different based on the number of LUNs used), but no custom scripts were created with my custom database size. The documentation says it should append the database size to the file name, something like sqlserverds2_create_all_100MB.sql, but the script didn’t exist after running the installation. So I started digging around, knowing I was crunched for time.
I opened the DVD Store installation Perl script in Notepad++ so I could see the line numbers mentioned in compilation errors. Now, I’m not a SQL guy and I don’t know Perl, but Computer Science was a big part of my college studies way-back-when so I was able to stumble around a bit and figure out what I needed to know. You’ll notice that the installation Perl script spits out data in a command line window. Once it’s done, though, the window closes. In order to capture and view the output, execute the installation script from a command line. Be sure to increase your window buffer size so you can see all of the output.
The template used to create custom-sized database scripts is saved in the ds21_sqlserver directory. Looking for the MSSQL-specific sections of the installation script in Figure 1, I see that at one point, the script needs to move into the SQL Server directory of DVD Store. Notice that the directory name, though, is not the same directory name downloaded and extracted. The script is looking for sqlserverds2 and my directory is ds21_sqlserver.
Figure 1. Original line 811 with incorrect SQL Server directory name
I added a couple of statements before and after this chdir command to show me what directory we’re working from. The added lines are seen in Figure 2 as 811, 812, 816, and 817. If those lines don’t seem correct, I wouldn’t be surprised. As I said, I’m not a Perl dude – but hey, it works! J I later changed the original line 811 to what is seen in line 814 in figure 2: the new name of the SQL Server directory, ds21_sqlserver.
Figure 2. Corrected line 811 (now line 814) with version 2.1 directory name
The first time I added these ‘get current directory’ lines, I get the expected results as seen in Figure 3. The script obviously can’t find the directory and so, stays in its current directory.
Figure3. Output of original script, modified to show current working directory. Notice it never finds sqlserverds2 directory.
After I changed the directory name, it seemed to find it just fine as seen in the output of Figure 4.
Figure 4. Output of inserted printouts to verify script
The only other change that I needed was to comment out line 845 of the installation script as seen in figure 5. This line would have chdir’d into the build directory. ‘build’ should have been a subdirectory of sqlserverds2, along with ‘load’ and ‘web’ subdirectories. The structure of sqlserverds2 is supposed to look like this:
Looking down a few lines past this chdir, I saw that the files for creating a new cleanup script were already in the root of my ds21_sqlserver directory. So commenting out this particular chdir is necessary.
Figure 5. Line 845 commented out because the directory doesn’t exist and files needed are in current working directory, ds21_sqlserver
After making these changes, figure 6 shows that my custom-sized database scripts are indeed created in the ds21_sqlserver directory.
Figure 6. Custom SQL scripts are created for requested database size
For clarity, I’ve included screenshots of freshly downloaded and extracted ds21, figure 7, and ds21_sqlserver, figure 8, tarballs saved to C:\ and C:\ds2, respectively. This is what I saw when I started the DVD Store installation and why I was having problems.
Figure 7. Directory structure of C:\ds2
The ds2 directory looks fine. The first problem appears to be the name of the SQL Server directory. It is ds21_sqlserver when, according to DVD Store documentation, it should be sqlserverds2. You’ll also notice in the ds21_sqlserver directory there are no subdirectories. All the files that should be included in those subdirectories are instead at the root of ds21_sqlserver. This is very odd, indeed. Although my changes to the installation Perl script seemed to work (I was able to successfully run the rest of DVD Store), I reached out and shared my findings with the creators of DVD Store, Dave Jaffe and Todd Muirhead (@virtualTodd).
Figure 8. Directory structure of ds21_sqlserver. Note there are no subdirectories build, load, or web.
Firstly, Dave suggested I run the small database to verify I can get it to work at all. This succeeded. We actually wanted about a 10GB database for our tests, so I really needed to get the custom size working. Todd reiterated that the official download site is http://linux.dell.com/dvdstore/. He said that someone had forked a version and put it on github, keeping the DVD Store name. They’ve since asked him to at least change the name to keep them separate. Todd also said that names and directory structures hadn’t changed. Other than that, this experience shouldn’t have been the case. I did download the program, several times in fact, from the Dell site. I used WinZip, version unknown at this time, to extract the tarballs. I was using Server 2008 R2 64-bit in VMs running on in vSphere 5.0. I also downloaded and extracted in Windows 7 SP1 x64.
Then over the following weekend, I downloaded DVD Store from home only to find that everything seemed fine. The SQL Server directory was named sqlserverds2 and its subdirectories were there.
I don’t really know what happened here. I thought maybe our Riverbeds at work had cached a copy of DVD Store, but if the directory names and structure hadn’t changed, I still don’t know where the issue is. For now, though, I at least have a workaround. I could also download it from someplace else that has the correct directory structure and copy it to my work PC. I’d be interested to know if anyone else out there has seen this issue and what the likely cause is.