views:

111

answers:

5

I want to create a test setup which should have a 4tb of High density filesystem. I've tried some tools(wst) but they are crashing after sometime. After struggling for two days im able to fill not even 20% of disk space. I need this tool on windows. Any suggestions?

A: 

I can't really make the two terms "Windows" and "4TB of data" match in my head. Windows is a desktop OS written for the average user who does a bit of Word and browsing with IE. If you have special needs, use a server OS like Linux. It comes with all the tools you need to handle large amounts of data. You also get FS benchmark tools like bonnie.

You can also choose from a large set of filesystems where some (like ZFS) are designed for huge sizes (Exabytes). NTFS can theoretically handle this amount of data but I'm not aware that anyone has actually tried this. See this Wikipedia article for some pointers.

[EDIT] Since you use a "server" edition of Windows (which translates to "Desktop OS with a couple of nice wizards to set up the network"), you must have a professional support contract with Microsoft. This means you can just call them, explain your problem and let them tell you how to solve it.

Sorry, I'm being unnecessarily sarcastic here but I find all this really amusing ;) Just because the marketing department slaps a "Server" label on something doesn't mean that a professional administrator would buy it. I'd be surprised if someone would post an answer to the effect "we did the same thing and we could get it working reliably and to our satisfaction".

Aaron Digulla
i was talking about windows 2003 server, All i need is a small tool to create files. Please stop talking about performance of windows or which OS is better or IE etc...I've my reasons to say Win2k3 server is the best server...
calvin
If you can't get the right tools, then it's not the right OS for you.
Aaron Digulla
Hating the solution will help as much as hitting your head against the wall ;)
Aaron Digulla
@Aaron. 99% of the time the choice of technology is out of your hands, the decision is made for us by others, and we're left carrying the can. You could say that we should leave our BAD technology jobs and go work for GOOD technology employers . . . but unfortunately we live in the real world, and that isn't as easily done as said. -1 from me, for the "Pointing and laughing" content of this answer.
Binary Worrier
@Aaron - what an unhelpful answer, -1
Rob
I'm still waiting for anyone to say "We've done it and it worked". :)
Aaron Digulla
@Binary: Agreed. I just doubt that the guys who pay calvin will be very happy with the results even if he gets past his tests. So either he'll get slapped for delivering what he was told or he'll get slapped for saying "Windows doesn't deliver". When I see questions like this one, I always have this image of an 18-wheeler that someone wants to use to go shopping and then, they start complaining that they can't find a parking lot.
Aaron Digulla
A: 

You can:

  1. create a small file in a directory,
  2. copy-paste the directory itself,
  3. put the duplicate directory into the original one,

and repeat steps 2 and 3 until you reach your need (about thirty times, depending on the size of the initial file).

mouviciel
Aaron Digulla
Try `xcopy` instead.
Aaron Digulla
Or robocopy in the command line.
spa
+1  A: 

You can use Disk Tools. I used it once for stress testing a hard disk which presumably had bad sectors.

spa
A: 

If all you want is simply to create many many files, you can use this batch script that copies a given file for as many times as possible. There is no stop condition, but I suppose the counter variable will overflow after about 2^31.

Use the script like extreme_copy my_test_file.txt where the test file can have any size you want.

This is the script:

@ECHO OFF

IF "%1"=="" GOTO END
IF NOT EXIST "%1" GOTO END

REM copy loop
SET FILE_NUMBER=1

:COPY

copy "%1" "%~dpn1_%FILE_NUMBER%%~x1" > nul

REM show some progress
SET /A SHOW_ITERATIONS="%FILE_NUMBER% %% 1000"
IF /I %SHOW_ITERATIONS%==0 ECHO %FILE_NUMBER% files created...

SET /A FILE_NUMBER=%FILE_NUMBER% + 1

GOTO COPY

:END
Frank Bollack
A: 

I made a C# console app do create random files, with random content from 2kb to 10kb. Compile it ( this is .net 2, but im sure it will compile with any .NET version ) Run like this:
YourExe d:
YourExe d:\temp2

Semi disclaimer, if you run the app long enough it might get a stackoverflow, just start it again if that happens. File names are random, so it will not create any issues

class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1 || !Directory.Exists(args[0]))
            {
                Console.WriteLine("Arg should be: C:\\ (or your drive letter)");
                return;
            }

            const int RandomFilesToCreate = int.MaxValue;
            for (int i = 0; i < RandomFilesToCreate; i++)
            {
                string FileName = CreateRandomFile(args[0]);
                Console.WriteLine(i + ") Wrote file " + FileName);
            }
        }

        static Random gRan = new Random();
        static string CreateRandomFile(string Path)
        {
            byte[] FileContent = new byte[gRan.Next(2,10) * 1024] ;

            // generate a random filename
            string FileName = Path + "\\TempF_" + gRan.Next(0, int.MaxValue) + "_" + gRan.Next(0, int.MaxValue) + "_" + gRan.Next(0, int.MaxValue) + ".tmp";
            while(File.Exists(FileName))
                FileName = Path + "\\TempF_" + gRan.Next(0, int.MaxValue) + "_" + gRan.Next(0, int.MaxValue) + "_" + gRan.Next(0, int.MaxValue) + ".tmp";

            // fill with random bytes.
            gRan.NextBytes(FileContent);

            // Write to disk
            File.WriteAllBytes(FileName, FileContent);
            return FileName;
        }
    }
EKS