Raid 0 array on a laptop. Creating a Raid Array of Disks on Windows. Storage overloads

The amount of information is growing at a rapid pace. So, according to the analytical organization IDC, in 2006 about 161 billion GB of information, or 161 exabytes, was generated on Earth. If we represent this amount of information in the form of books, then we get 12 ordinary bookshelves, only their length will be equal to the distance from the Earth to the Sun. Many users are thinking about purchasing more and more capacious drives, since their prices are falling, and for $ 100 you can now buy a modern 320 GB hard drive. Most modern motherboards have an integrated RAID controller on board with the ability to organize arrays of levels 0 and 1. So you can always buy a couple of SATA drives and combine them into a RAID array. In this material, the process of creating RAID arrays of levels 0 and 1 is just considered, and their performance is compared. As tested, we took two modern hard drives Seagate Barracuda ES (Enterprise Storage) with a maximum capacity of 750 GB. A few words about the technology itself. The Redundant Array of Independent / Inexpensive Disks (RAID) was designed to improve the resiliency and efficiency of computer storage systems. RAID technology was developed at the University of California in 1987. It was based on the principle of using several small disks, interacting with each other by means of special software and hardware, as one large disk. The original design of RAID arrays was to simply connect the memory areas of multiple separate disks. However, later it turned out that such a scheme reduces the reliability of the matrix and practically does not affect the performance. For example, four drives in a matrix will fail four times more often than one such drive. To address this problem, Berkeley engineers have proposed six different RAID levels. Each of them is characterized by a certain fault tolerance, hard drive capacity and performance. In July 1992, the RAID Advisory Board (RAB) was formed to standardize, classify, and research RAID. Currently, RAB has defined seven standard RAID levels. A redundant array of independent disk drives is typically implemented with a RAID controller card. In our case hard drives connected to the integrated RAID controller of the abit AN8-Ultra motherboard based on the nForce 4 Ultra chipset. To begin with, let's consider the possibilities offered by the chipset for building RAID arrays. nForce 4 Ultra allows you to create RAID arrays of levels 0, 1, 0 + 1, JBOD.

RAID 0 (Stripe)

Disk striping, also known as RAID 0 mode, reduces disk read and write accesses for many applications. Data is split across multiple disks in an array so that read and write operations are performed on multiple disks simultaneously. This level provides a high speed of execution of read / write operations (theoretically - doubling), but low reliability. For a home user, this is probably the most interesting option that allows you to achieve a significant increase in the speed of reading and writing data from drives.

RAID 1 (Mirror)

Disk mirroring, known as RAID 1, is for those who want to easily back up their most important data. Each write operation is performed twice, in parallel. A mirrored, or duplicated, copy of the data can be stored on the same disk or on a second spare disk in the array. RAID 1 provides backup data if the current volume or disk is damaged or inaccessible due to a failure in hardware... Disk mirroring can be used for systems with high availability or for automatic data backups instead of the tedious manual procedure of duplicating information to more expensive and less reliable media.

RAID 0 systems can be duplicated using RAID 1. Disk striping and mirroring (RAID 0 + 1) provides higher performance and protection. The optimal method in terms of reliability / performance ratio, however, requires a large number of drives.

JBOD

JBOD - this abbreviation stands for "Just a Bunch of Disks", that is, just a group of discs. This technology makes it possible to combine disks of different capacities into an array, although in this case there is no increase in speed, rather, quite the opposite. The integrated NVIDIA RAID controller we are considering has other interesting features: Determining the failed disk. Many users of multi-disk systems buy several of the same hard drivesto take full advantage of the disk array. If the array fails, the faulty disk can only be identified by serial number, which limits the user's ability to correctly identify the damaged disk.

NVIDIA's Disk Alert System simplifies identification by displaying the motherboard with a broken port on the screen so you know exactly which disk needs to be replaced. Installing a spare disk. Disk mirroring technologies allow users to designate spare disks that can be configured as hot spares, protecting the disk array in the event of a failure. A shared spare disk can protect multiple disk arrays, and a dedicated spare disk can act as a hot spare for a specific disk array. Spare disk support, which provides additional protection over mirroring, has traditionally been limited to high-end multi-disk systems. NVIDIA storage technology brings this capability to the PC. A dedicated backup drive can replace the failed drive before the repair is complete, allowing the support team to choose any convenient time to repair. Morphing... In a traditional multi-disk environment, users who want to change the state of a disk or multi-disk array must back up data, delete the array, reboot the PC, and then configure the new array. During this process, the user has to go through many steps just to configure the new array. NVIDIA storage technology allows you to change the current state of a disk or array with a single action called morphing. Morphing allows users to upgrade a disk or array to increase performance, reliability, and capacity. But more importantly, you do not need to perform numerous actions. Cross RAID controller.Unlike competitive multi-disk (RAID) technologies, the NVIDIA solution supports both Serial ATA (SATA) and parallel ATA drives within a single RAID array. Users don't need to know the semantics of each hard disksince the differences in their settings are obvious. NVIDIA storage technology fully supports the use of a multi-drive array to boot the operating system when the computer is turned on. This means that all available hard drives can be included in the array for maximum performance and all data protection. Data recovery "on the fly".In the event of a disk failure, disk mirroring allows you to continue working without interruption by using a duplicate copy of the data stored in the array. NVIDIA storage technology goes one step further by allowing the user to create a new mirror of data while the system is running, without interrupting user and application access to the data. On-the-fly data recovery eliminates system downtime and increases the protection of critical information. Hot plugging.NVIDIA storage technology supports hot-plugging for SATA drives. In the event of a disk failure, the user can disconnect the failed disk without shutting down the system and replace it with a new one. NVIDIA user interface.With an intuitive interface, anyone with no RAID experience can easily use and manage NVIDIA storage technology (also known as NVIDIA RAID). An uncomplicated "mouse" interface allows you to quickly identify the disks to configure in the array, enable striping and create mirrored volumes. The configuration can be easily changed at any time using the same interface.

All modern motherboards are equipped with an integrated RAID controller, and top models even have several integrated RAID controllers. How much integrated RAID controllers are in demand by home users is a separate question. In any case, a modern motherboard provides the user with the ability to create a RAID array from several disks. However, not every home user knows how to create a RAID array, which level of the array to choose, and generally has a poor idea of \u200b\u200bthe pros and cons of using RAID arrays.
In this article, we will give brief recommendations for creating RAID arrays on home PCs and, using a specific example, we will demonstrate how you can independently test the performance of a RAID array.

History of creation

The term "RAID array" first appeared in 1987, when American researchers Patterson, Gibson and Katz from the University of California, Berkeley, in their article "A Case for Redundant Arrays of Inexpensive Discs, RAID", described how In this way, multiple low-cost hard drives can be combined into a single logical device so that the result is increased system capacity and performance, and the failure of individual drives does not lead to failure of the entire system.

More than 20 years have passed since this article was published, but the technology of building RAID arrays has not lost its relevance today. The only thing that has changed since then is the decoding of the RAID acronym. The fact is that initially RAID arrays were not built on cheap disks, so the word Inexpensive was changed to Independent, which was more in line with reality.

Operating principle

So, RAID is a redundant array of independent disks (Redundant Arrays of Independent Discs), which is entrusted with the task of providing fault tolerance and improving performance. Fault tolerance is achieved through redundancy. That is, part of the disk space is allocated for service purposes, becoming inaccessible to the user.

The increase in the performance of the disk subsystem is provided by the simultaneous operation of several disks, and in this sense, the more disks in the array (up to a certain limit), the better.

Disk sharing in an array can be done using either parallel or independent access. With parallel access, disk space is divided into blocks (strips) for data recording. Similarly, information to be written to disk is divided into the same blocks. When writing, separate blocks are written to different disks, and several blocks are written to different disks simultaneously, which leads to an increase in performance in write operations. The necessary information is also read in separate blocks simultaneously from several disks, which also contributes to an increase in performance in proportion to the number of disks in the array.

It should be noted that the parallel access model is implemented only if the size of the data write request is larger than the size of the block itself. Otherwise, it is almost impossible to write multiple blocks in parallel. Imagine a situation where the size of an individual block is 8 KB, and the size of a data write request is 64 KB. In this case, the original information is cut into eight blocks of 8 KB each. If you have a four-disk array, you can write four blocks, or 32KB, at a time. Obviously, in the considered example, the write speed and read speed will be four times higher than when using a single disc. This is true only for an ideal situation, but the request size is not always a multiple of the block size and the number of disks in the array.

If the size of the recorded data is less than the block size, then a fundamentally different model is implemented - independent access. Moreover, this model can also be used when the size of the recorded data is greater than the size of one block. With independent access, all the data of a single request is written to a separate disk, that is, the situation is identical to working with one disk. The advantage of the independent access model is that if multiple write (read) requests are received at the same time, they will all be executed on separate disks independently of each other. This situation is typical, for example, for servers.

According to the different types of access, there are different types RAID arrays, which are usually characterized by RAID levels. In addition to the type of access, RAID levels differ in the way they are located and redundant information is generated. Redundant information can either be placed on a dedicated disk or shared across all disks. There are many ways to generate this information. The simplest of these is full duplication (100% redundancy), or mirroring. In addition, error correction codes are used as well as parity computation.

RAID levels

Currently, there are several RAID levels that can be considered standardized - these are RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, and RAID 6.

Various combinations of RAID levels are also used to combine their merits. Typically this is a combination of some fault tolerant level and level 0 used to improve performance (RAID 1 + 0, RAID 0 + 1, RAID 50).

Note that all modern RAID controllers support the JBOD (Just a Bench Of Disks) function, which is not intended for creating arrays - it provides the ability to connect individual disks to the RAID controller.

It should be noted that RAID controllers integrated on motherboards for home PCs do not support all RAID levels. Dual-port RAID controllers support only levels 0 and 1, while RAID controllers with a large number of ports (for example, the 6-port RAID controller integrated into the south bridge of the ICH9R / ICH10R chipset) also support levels 10 and 5.

Also, if we talk about motherboards on Intel chipsets, they also implement the Intel Matrix RAID function, which allows you to create RAID matrices of several levels on several hard disks at the same time, allocating a part of the disk space for each of them.

RAID 0

RAID level 0, strictly speaking, is not a redundant array and therefore does not provide data storage reliability. Nevertheless, this level is actively used in cases where it is necessary to ensure high performance of the disk subsystem. When creating a RAID 0 array, information is split into blocks (sometimes these blocks are called stripes), which are written to separate disks, that is, a system with parallel access is created (if, of course, the block size allows it). With the ability to concurrently I / O from multiple drives, RAID 0 provides the fastest data transfer rate and maximum disk space utilization because it does not require storage space for checksums. The implementation of this level is very simple. RAID 0 is mainly used in areas where fast transfer of large amounts of data is required.

RAID 1 (Mirrored disk)

RAID Level 1 is a 100 percent redundant array of two drives. That is, the data is simply completely duplicated (mirrored), due to which a very high level of reliability (as well as cost) is achieved. Note that implementing Level 1 does not require pre-partitioning disks and data into blocks. In the simplest case, two drives contain the same information and are one logical drive. If one disk fails, its functions are performed by another (which is absolutely transparent to the user). The array is restored by simple copying. In addition, this level doubles the speed of information reading, since this operation can be performed simultaneously from two disks. This information storage scheme is used mainly in cases where the cost of data security is much higher than the cost of implementing the storage system.

RAID 5

RAID 5 is a fault-tolerant disk array with distributed checksum storage. When writing, the data stream is divided into blocks (stripes) at the byte level and simultaneously written to all disks in the array in a circular order.

Suppose the array contains n disks, and the stripe size d... For each portion of n – 1 stripes checksum is calculated p.

Stripe d 1 written to the first disk, stripe d 2 - on the second and so on up to the stripe d n – 1which is written to ( n–1) th disc. Further on n-th disk checksum is written p n, and the process is cyclically repeated from the first disk on which the stripe is written d n.

Recording process (n – 1) stripes and their checksum are produced simultaneously for all n disks.

The checksum is calculated using a bitwise exclusive OR (XOR) operation on the data blocks being written. So, if there is n hard drives, d - data block (stripe), the checksum is calculated using the following formula:

p n \u003d d 1 d 2 ... d 1–1.

If any disk fails, the data on it can be recovered from the control data and from the data remaining on the healthy disks.

As an illustration, consider blocks of four bits. Suppose there are only five disks for storing data and writing checksums. If there is a sequence of bits 1101 0011 1100 1011, divided into blocks of four bits, then to calculate the checksum, you must perform the following bitwise operation:

1101 0011 1100 1011 = 1001.

Thus, the checksum written to the fifth disc is 1001.

If one of the disks, for example the fourth, fails, then the block d 4 \u003d 1100 will be unavailable when read. However, its value can be easily restored from the checksum and from the values \u200b\u200bof the remaining blocks using the same "exclusive OR" operation:

d 4 \u003d d 1 d 2d 4p 5.

In our example, we get:

d 4 \u003d (1101) (0011) (1100) (1011) = 1001.

In the case of RAID 5, all the disks in the array are the same size, but the total capacity of the disk subsystem available for writing becomes less than exactly one disk. For example, if five disks are 100 GB, then the actual size of the array is 400 GB because 100 GB is reserved for audit information.

RAID 5 can be built on three or more hard drives. As the number of hard drives in an array increases, its redundancy decreases.

RAID 5 has an independent access architecture that allows multiple reads or writes to be performed simultaneously.

RAID 10

RAID 10 is a combination of levels 0 and 1. A minimum of four drives are required for this level. In a RAID 10 array of four disks, they are paired together into arrays of level 0, and both of these arrays are combined as logical drives into an array of level 1. Another approach is also possible: initially, the disks are combined into mirrored arrays of level 1, and then logical drives based on these arrays - into an array of level 0.

Intel Matrix RAID

The considered RAID-arrays of levels 5 and 1 are rarely used at home, which is primarily due to the high cost of such solutions. The most commonly used for home PCs is a level 0 array on two disks. As we have already noted, RAID level 0 does not provide data storage security, and therefore end users are faced with a choice: to create a fast, but do not provide data reliability RAID-array 0 or, increasing the cost of disk space, - RAID-level 1, which provides data reliability, but does not provide significant performance gain ...

To address this daunting challenge, Intel has developed Intel Matrix Storage Technology to combine the benefits of Tier 0 and Tier 1 arrays on just two physical drives. And in order to emphasize that in this case we are talking not just about a RAID array, but about an array that combines both physical and logical disks, the technology name uses the word "matrix" instead of the word "array".

So what is a dual-drive RAID array with Intel Matrix Storage Technology? The main idea is that if there are several hard drives in the system and a motherboard with an Intel chipset that supports Intel Matrix Storage technology, it is possible to divide the disk space into several parts, each of which will function as a separate RAID array.

Let's take a look at a simple example of a RAID matrix consisting of two 120 GB drives. Any of the disks can be split into two logical disks, for example, 40 GB and 80 GB. Then, two logical drives of the same size (for example, 40 GB each) can be combined into a RAID level 1 matrix, and the remaining logical drives into a RAID level 0 matrix.

In principle, using two physical disks, you can also create only one or two RAID 0 matrices, but it is impossible to get only level 1 matrices. That is, if the system has only two disks, then intel technology Matrix Storage allows you to create the following types of RAID matrices:

  • one matrix of level 0;
  • two matrices of level 0;
  • level 0 matrix and level 1 matrix.

If the system has three hard disks, then the following types of RAID matrices can be created:

  • one matrix of level 0;
  • one level 5 matrix;
  • two matrices of level 0;
  • two matrices of level 5;
  • a level 0 matrix and a level 5 matrix.

If the system has four hard drives, then it is additionally possible to create a RAID 10 matrix, as well as combinations of level 10 and level 0 or 5.

From theory to practice

If we talk about home computers, the most demanded and popular are RAID arrays of levels 0 and 1. Using RAID arrays of three or more disks in home PCs is rather an exception to the rule. This is due to the fact that, on the one hand, the cost of RAID arrays increases in proportion to the number of disks used in it, and on the other hand, for home computers, the capacity of the disk array is of primary importance, and not its performance and reliability.

Therefore, in the following we will consider RAID arrays of levels 0 and 1 based on only two disks. The task of our research will be to compare the performance and functionality of RAID arrays of levels 0 and 1, created on the basis of several integrated RAID controllers, as well as to study the dependence of the speed characteristics of a RAID array on the stripe size.

The fact is that, although theoretically, when using a RAID 0 array, the read and write speed should double, in practice the increase in speed characteristics is much less modest and is different for different RAID controllers. Similarly, for a RAID 1 array: despite the fact that in theory the read speed should be doubled, in practice everything is not so smooth.

For our comparative testing of RAID controllers, we used a Gigabyte GA-EX58A-UD7 motherboard. This fee is based on intel chipset X58 Express with ICH10R Southbridge, featuring an integrated six-port SATA II RAID controller that supports RAID 0, 1, 10 and 5 with Intel Matrix RAID. In addition, the Gigabyte GA-EX58A-UD7 integrates a GIGABYTE SATA2 RAID controller, on the basis of which two SATA II ports are implemented with the possibility of organizing RAID arrays of levels 0, 1 and JBOD.

The GA-EX58A-UD7 also integrates the Marvell 9128 SATA III controller, on the basis of which two SATA III ports are implemented with the ability to organize RAID arrays of levels 0, 1 and JBOD.

Thus, the Gigabyte GA-EX58A-UD7 has three separate RAID controllers, on the basis of which you can create RAID arrays of levels 0 and 1 and compare them with each other. Recall that the SATA III standard is backward compatible with the SATA II standard, therefore, based on the Marvell 9128 controller that supports SATA III drives, you can also create RAID arrays using SATA II drives.

The test bench had the following configuration:

  • processor - Intel Core i7-965 Extreme Edition;
  • motherboard - Gigabyte GA-EX58A-UD7;
  • bIOS version - F2a;
  • hard drives - two Western Digital WD1002FBYS drives, one Western Digital WD3200AAKS drive;
  • integrated RAID controllers:
  • ICH10R,
  • GIGABYTE SATA2,
  • Marvell 9128;
  • memory - DDR3-1066;
  • memory size - 3 GB (three modules of 1024 MB each);
  • memory operating mode - DDR3-1333, three-channel operating mode;
  • video card - Gigabyte GeForce GTS295;
  • power supply - Tagan 1300W.

Testing conducted under operating room control microsoft systems Windows 7 Ultimate (32-bit). The operating system was installed on a Western Digital WD3200AAKS disk, which was connected to the port sATA controller II integrated into the ICH10R south bridge. The RAID array was assembled on two WD1002FBYS disks with a SATA II interface.

To measure the speed characteristics of the created RAID arrays, we used the IOmeter utility, which is the industry standard for measuring the performance of disk systems.

IOmeter Utility

Since we conceived this article as a kind of user guide for creating and testing RAID arrays, it would be logical to start with a description of the IOmeter (Input / Output meter) utility, which, as we have already noted, is a kind of industry standard for measuring the performance of disk systems. This utility is free and can be downloaded from http://www.iometer.org.

The IOmeter utility is a synthetic benchmark that allows you to work with unpartitioned hard disks, so you can test disks regardless of the file structure and minimize the impact of the operating system.

During testing, it is possible to create a specific access model, or "pattern", which allows you to concretize the performance of specific operations by the hard disk. In case of creation specific model access is allowed to change the following parameters:

  • the size of the data transfer request;
  • random / sequential distribution (in%);
  • distribution of read / write operations (in%);
  • the number of separate I / O operations running in parallel.

The IOmeter utility does not require installation on a computer and consists of two parts: IOmeter itself and Dynamo.

IOmeter is a control part of the program with a graphical user interface that allows you to make all the necessary settings. Dynamo is a load generator that has no interface. Each time you run the IOmeter.exe file, the Dynamo.exe load generator is automatically started.

To start working with the IOmeter program, just run the IOmeter.exe file. This opens the main window of the IOmeter program (Fig. 1).

Figure: 1. Main window of the IOmeter program

It should be noted that the IOmeter utility allows you to test not only local disk systems (DAS), but also network storage devices (NAS). For example, it can be used to test the performance of the disk subsystem of a server (file server) using several network clients. Therefore, some of the bookmarks and tools in the IOmeter utility window refer specifically to the program's network settings. It is clear that when testing disks and RAID arrays, we will not need these features of the program, and therefore we will not explain the purpose of all the tabs and tools.

So, when you start the IOmeter program, a tree structure of all running load generators (Dynamo instances) will be displayed on the left side of the main window (in the Topology window). Each running Dynamo Load Generator instance is called a manager. In addition, the IOmeter program is multi-threaded and each individual running thread of a Dynamo Load Generator instance is called a Worker. The number of running Workers always corresponds to the number of logical processor cores.

In our example, only one computer with a quad-core processor supporting Hyper-Threading technology is used, so only one manager (one Dynamo instance) and eight (according to the number of logical processor cores) Workers are launched.

Actually, to test disks in this window, there is no need to change or add anything.

If you select the computer name in the tree structure of running Dynamo instances with the mouse, then in the window Target in the tab Disk Target all disks, disk arrays and other drives (including network drives) installed in the computer will be displayed. These are the drives that IOmeter can handle. Media can be marked in yellow or blue. The logical partitions of the media are marked in yellow, and the physical devices without logical partitions created on them. The logical section may or may not be crossed out. The fact is that for a program to work with a logical partition, it must first be prepared by creating a special file on it, equal in size to the capacity of the entire logical partition. If the logical section is crossed out, it means that the section has not yet been prepared for testing (it will be prepared automatically at the first stage of testing), but if the section is not crossed out, it means that a file has already been created on the logical section that is completely ready for testing ...

Note that, despite the supported ability to work with logical partitions, it is optimal to test exactly disks that are not partitioned into logical partitions. It is very easy to delete a logical disk partition - through the snap-in Disk Management... To access it, just right-click on the icon Computer on the desktop and in the menu that opens, select the item Manage... In the opened window Computer Management on the left side, select the item Storage, and in it - Disk Management... After that, on the right side of the window Computer Management all connected drives will be displayed. By right clicking on the desired disk and selecting in the menu that opens Delete Volume..., you can delete a logical partition on a physical disk. Recall that when a logical partition is deleted from a disk, all information on it is permanently deleted.

In general, only blank disks or disk arrays can be tested using the IOmeter utility. That is, you cannot test the disk or disk array on which the operating system is installed.

So, back to the description of the IOmeter utility. In the window Target in the tab Disk Target you need to select the disk (or disk array) that will be tested. Next, you need to open the tab Access Specifications(Fig. 2), where you can define the test scenario.

Figure: 2. Access Specifications tab of the IOmeter utility

In the window Global Access Specifications there is a list of predefined test scripts that can be assigned to the boot manager. However, we do not need these scripts, so all of them can be selected and deleted (for this, there is a button Delete). After that, click on the button Newto create a new test script. In the opened window Edit Access Specification you can define a disk or RAID boot script.

Suppose we want to find out the dependence of the sequential (linear) read and write speed on the size of the data transfer request block. To do this, we need to generate a sequence of sequential read boot scripts at different block sizes, and then a sequence of sequential write boot scripts with different block sizes. Typically, block sizes are chosen as a row, each member of which is twice the size of the previous one, and the first member of this row is 512 bytes. That is, the block sizes are as follows: 512 bytes, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 KB, 1 MB. It makes no sense to make the block size larger than 1 MB for sequential operations, since the speed of sequential operations does not change with such large data block sizes.

So, let's create a sequential read boot script for a 512-byte block.

In field Name window Edit Access Specification enter the name of the boot script. For example, Sequential_Read_512. Further in the field Transfer Request Size set the data block size to 512 bytes. Slider Percent Random / Sequential Distribution (percentage ratio between sequential and selective operations) we shift all the way to the left so that all our operations are only sequential. Well, the slider , which sets the percentage between read and write operations, we shift all the way to the right so that all our operations are read only. Other parameters in the window Edit Access Specification you do not need to change (fig. 3).

Figure: 3. Edit Access Specification window for creating a sequential read boot script
with a data block size of 512 bytes

Click on the button Ok, and the first script we created will be displayed in the window Global Access Specifications in the tab Access Specifications IOmeter utilities.

Similarly, you need to create scripts for the rest of the data blocks, however, in order to make your work easier, it is easier not to create the script again every time by clicking the button New, and, having selected the last created scenario, press the button Edit Copy (edit copy). After that, the window will open again Edit Access Specification with the settings of our last created script. It will be enough to change only the name and size of the block. Having done a similar procedure for all other block sizes, you can start generating scripts for sequential recording, which is done in exactly the same way, except that the slider Percent Read / Write Distribution, which sets the percentage between read and write operations, must be shifted all the way to the left.

Similarly, you can create scripts for selective writing and reading.

After all the scripts are ready, they need to be assigned to the download manager, that is, indicate which scripts it will work with Dynamo.

To do this, check once again that in the window Topology the computer name is highlighted (i.e. the load manager on the local PC), not a separate Worker. This ensures that load scenarios will be assigned to all Workers at once. Next in the window Global Access Specifications select all the load scenarios we have created and press the button Add... All selected load scenarios will be added to the window (fig. 4).

Figure: 4. Assigning the generated load scenarios to the load manager

After that, you need to go to the tab Test Setup (Fig. 5), where you can set the execution time of each script we created. For this in the group Run time we set the execution time of the load scenario. It will be enough to set the time equal to 3 minutes.

Figure: 5. Setting the execution time of the load scenario

Also in the field Test Description you must specify the name of the entire test. In principle, this tab has a lot of other settings, but they are not needed for our tasks.

After all the necessary settings have been made, it is recommended to save the created test by clicking on the button with a floppy disk on the toolbar. The test is saved with the * .icf extension. Subsequently, you can use the generated load scenario by running not the IOmeter.exe file, but the saved file with the * .icf extension.

Now you can start testing directly by clicking on the button with the flag. You will be prompted to specify the name of the file with the test results and select its location. Test results are saved in a CSV file, which can then be easily exported to Excel and, having set a filter on the first column, select the required data with test results.

During testing, intermediate results can be observed on the tab Result Display, and you can determine which load scenario they relate to on the tab Access Specifications... In the window Assigned Access Specification an executable script is displayed in green, completed scripts in red, and scripts not yet executed in blue.

So, we have covered the basic techniques of working with the IOmeter utility, which will be required to test individual disks or RAID arrays. Note that we have not covered all the features of the IOmeter utility, but a description of all its features is beyond the scope of this article.

Creating a RAID array based on the GIGABYTE SATA2 controller

So, we start building a dual-drive RAID array using the on-board GIGABYTE SATA2 RAID controller. Of course, Gigabyte itself does not manufacture chips, and therefore a re-labeled chip from another company is hidden under the GIGABYTE SATA2 chip. As you can see from the driver INF file, this is a JMicron JMB36x series controller.

Access to the controller configuration menu is possible at the stage of system boot, for which you need to press the key combination Ctrl + G when the corresponding message appears on the screen. Naturally, before bIOS settings you need to define the mode of operation of the two SATA ports belonging to the GIGABYTE SATA2 controller as RAID (otherwise access to the RAID configurator menu will not be possible).

The configuration menu for the GIGABYTE SATA2 RAID controller is pretty straightforward. As we have already noted, the controller is dual-port and allows you to create RAID arrays of level 0 or 1. You can delete or create a RAID array through the controller configuration menu. When creating a RAID array, you can specify its name, select the level of the array (0 or 1), set the stripe size for RAID 0 (128, 84, 32, 16, 8 or 4K), and also determine the size of the array.

If the array is created, then any changes in it are no longer possible. That is, you cannot subsequently change for the created array, for example, its level or stripe size. To do this, you first need to delete the array (with loss of data), and then create it again. Actually, this is characteristic not only of the GIGABYTE SATA2 controller. The impossibility of changing the parameters of the created RAID arrays is a feature of all controllers, which follows from the very principle of implementing a RAID array.

Once the GIGABYTE SATA2 Controller Array has been created, you can view its current information using the GIGABYTE RAID Configurer Utility, which is automatically installed with the driver.

Creating a RAID array based on the Marvell 9128 controller

Configuring the Marvell 9128 RAID controller is only possible via BIOS settings gigabyte boards GA-EX58A-UD7. In general, it must be said that the menu of the configurator of the Marvell 9128 controller is somewhat damp and may mislead inexperienced users. However, we will talk about these minor flaws a little later, but for now we will consider the main functionality controller Marvell 9128.

So, while this controller supports SATA III drives, it is also fully compatible with SATA II drives.

The Marvell 9128 controller allows you to create a RAID 0 and 1 array based on two drives. For a level 0 array, you can specify a stripe size of 32 or 64 KB, and also specify an array name. In addition, there is an option like Gigabyte Rounding, which needs some explanation. Despite the name, which is consonant with the name of the manufacturer, the Gigabyte Rounding function has nothing to do with it. Moreover, it has nothing to do with a RAID level 0 array, although in the controller settings it can be defined specifically for an array of this level. Actually, this is the first of those flaws in the configurator of the Marvell 9128 controller that we mentioned. Gigabyte Rounding is only defined for RAID level 1. It allows you to use two drives to create a RAID 1 array (for example, different manufacturers or different models), the capacity of which is slightly different from each other. The Gigabyte Rounding function sets the difference in the size of the two drives used to create a RAID 1 array. In the Marvell 9128 controller, the Gigabyte Rounding function allows you to determine the difference in the size of the drives of 1 GB or 10 GB.

Another flaw in the configurator of the Marvell 9128 controller is that when creating a RAID-array of level 1, the user has the opportunity to choose the stripe size (32 or 64 KB). However, the notion of stripe is not defined at all for a RAID level 1 array.

Creation of a RAID array based on the controller integrated into the ICH10R

The RAID controller integrated into the ICH10R south bridge is the most common. As noted, this is a 6-port RAID controller and supports not only RAID 0 and RAID 1, but also RAID 5 and RAID 10.

Access to the controller configuration menu is possible at the stage of system boot, for which you need to press the Ctrl + I key combination when the corresponding message appears on the screen. Naturally, first, in the BIOS settings, you should define the operating mode of this controller as RAID (otherwise, access to the menu of the RAID array configurator will be impossible).

The setup menu for the RAID controller is fairly straightforward. You can delete or create a RAID array through the controller configuration menu. When creating a RAID array, you can specify its name, select the array level (0, 1, 5, or 10), set the stripe size for RAID 0 (128, 84, 32, 16, 8, or 4K), and define the size of the array.

Performance comparison of RAID arrays

To test RAID arrays using the IOmeter utility, we created sequential read, sequential write, selective read, and selective write load scenarios. The sizes of data blocks in each load scenario were as follows: 512 bytes, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 KB, 1 MB.

On each of the RAID controllers, a RAID 0 array with all allowed stripe sizes and a RAID 1 array was created. In addition, in order to be able to evaluate the performance gains obtained from using a RAID array, we also tested a single disk on each of the RAID controllers.

So, let's turn to the results of our testing.

GIGABYTE SATA2 Controller

First of all, let's look at the results of testing RAID arrays based on the GIGABYTE SATA2 controller (Fig. 6-13). In general, the controller turned out to be literally mysterious, and its performance was simply disappointing.

Figure: 6. Speed \u200b\u200bof consecutive
and selective operations for the disk
Western Digital WD1002FBYS

Figure: 7. Speed \u200b\u200bof consecutive

with a stripe size of 128 KB
(GIGABYTE SATA2 controller)

Figure: 12. Speed \u200b\u200bof consecutive
and selective operations for RAID 0
with a stripe size of 4 KB
(GIGABYTE SATA2 controller)

Figure: 13. Speed \u200b\u200bof consecutive
and selective operations
for RAID 1 (GIGABYTE SATA2 controller)

If we look at the speed characteristics of a single disk (without a RAID array), the maximum sequential read speed is 102 MB / s, and the maximum sequential write speed is 107 MB / s.

When creating a RAID 0 array with a 128 KB stripe, the maximum sequential read and write speed is increased to 125 MB / s, an increase of about 22%.

With a stripe size of 64, 32, or 16 KB, the maximum sequential read speed is 130 MB / s and the maximum sequential write speed is 141 MB / s. That is, with the specified stripe sizes, the maximum sequential read speed increases by 27%, and the maximum sequential write speed - by 31%.

Actually, this is not enough for a level 0 array, and I would like the maximum speed of sequential operations to be higher.

With a stripe size of 8 KB, the maximum sequential operations (read and write) remain about the same as with a stripe size of 64, 32 or 16 KB, but there are obvious problems with selective reading. When the data block size is increased up to 128 KB, the selective read speed (as it should be) increases in proportion to the data block size. However, when the data block size is more than 128 KB, the selective read speed drops to almost zero (to about 0.1 MB / s).

With a stripe size of 4 KB, not only the selective read speed decreases with a block size of more than 128 KB, but also the sequential read speed with a block size of more than 16 KB.

Using a RAID 1 array on the GIGABYTE SATA2 controller hardly changes (compared to a single drive) the sequential read speed, but the maximum sequential write speed is reduced to 75 MB / s. Recall that for a RAID 1 array, the read speed should increase and the write speed should not decrease compared to the read and write speed of a single disk.

There is only one conclusion that can be drawn from the GIGABYTE SATA2 controller test results. It makes sense to use this controller to create RAID 0 and RAID 1 arrays only when all other RAID controllers (Marvell 9128, ICH10R) are already in use. Although it is rather difficult to imagine such a situation.

Controller Marvell 9128

The Marvell 9128 controller performed much faster than the GIGABYTE SATA2 controller (Figure 14-17). Actually, the differences appear even when the controller is working with one disk. While the GIGABYTE SATA2 controller achieves a maximum sequential read speed of 102MB / s with a 128KB data block, the Marvell 9128 controller achieves a maximum sequential read speed of 107MB / s with a 16KB block size.

When creating a RAID 0 array with 64K and 32K stripe sizes, the maximum sequential read speed is increased to 211 MB / s, and the sequential write speed is increased to 185 MB / s. That is, with the specified stripe sizes, the maximum sequential read speed increases by 97%, and the maximum sequential write speed - 73%.

There is no significant difference in speed performance of a RAID 0 array with a 32K and 64K stripe size, but the 32KB stripe is more preferable, since in this case the sequential operations speed with a block size of less than 128KB will be slightly higher.

When creating a RAID 1 array on a Marvell 9128 controller, the maximum sequential speed is almost unchanged compared to a single disk. So, if for a single disk the maximum sequential operation speed is 107 MB / s, then for RAID 1 it is 105 MB / s. Also note that for RAID 1, the selective read speed degrades slightly.

In general, it should be noted that the Marvell 9128 controller has good speed characteristics and can be used both for creating RAID-arrays and for connecting single disks to it.

ICH10R controller

The ICH10R's built-in RAID controller is the highest performing we've tested (Figure 18-25). When working with a single disk (without creating a RAID array), its performance is practically the same as that of the Marvell 9128 controller. The maximum sequential read and write speed is 107 MB and is achieved with a data block size of 16 KB.

Figure: 18. Speed \u200b\u200bof consecutive
and selective operations
for Western Digital WD1002FBYS disk (ICH10R controller)

If we talk about the RAID 0 array on the ICH10R controller, the maximum sequential read and write speed does not depend on the stripe size and is 212 MB / s. Only the size of the data block depends on the stripe size, at which the maximum value of the sequential read and write speed is reached. As the test results show, for RAID 0 based on the ICH10R controller, it is optimal to use a 64 KB stripe. In this case, the maximum sequential read and write speed is reached with a data block size of only 16 KB.

So, to summarize, let us emphasize once again that the RAID controller built into the ICH10R significantly outperforms all other integrated RAID controllers. And given that it also has more functionality, it is optimal to use this particular controller and just forget about the existence of all the others (unless, of course, the system does not use SATA III disks).

Greetings to all, dear readers of the blog site. I think many of you have come across such an interesting expression on the Internet at least once - "RAID array". What it means and why an ordinary user may need it, that's what we will talk about today. It is a well-known fact that it is the slowest component in a PC and is inferior to the processor and.

To compensate for the "innate" slowness where it is out of place at all (we are talking primarily about servers and high-performance PCs), they came up with a so-called disk array RAID - a kind of "bundle" of several identical hard drives working in parallel. This solution allows you to significantly increase the speed of work, coupled with reliability.

First of all, a RAID array allows you to provide high fault tolerance for the hard disks (HDD) of your computer, by combining several hard disks into one logical element. Accordingly, to implement this technology, you will need at least two hard drives.... In addition, RAID is just convenient, because all the information that previously had to be copied to backup sources (external hard drives) can now be left "as is", because the risk of its complete loss is minimal and tends to zero, but not always, about this just below.

RAID translates something like this: a secure set of inexpensive disks. The name goes back to the times when large hard drives were very expensive and it was cheaper to assemble one common array of smaller disks. The essence has not changed since then, in general, like the name, only now you can make a giant storage from several HDDs of a large volume, or make it so that one disk will duplicate another. You can also combine both functions, thereby gaining the benefits of one and the other.

All these arrays are under their own numbers, most likely you have heard about them - raid 0, 1 ... 10, that is, arrays of different levels.

Varieties of RAID

Speed \u200b\u200bRaid 0

Raid 0 has nothing to do with reliability, because it only increases speed. You need at least 2 hard drives and in this case the data will be "cut" and written to both disks simultaneously. That is, you will have access to the full volume of these disks and in theory this means that you get 2 times higher read / write speed.

But, let's imagine that one of these drives is broken - in this case, the loss of ALL your data is inevitable. In other words, you still have to regularly make backups in order to be able to restore information later. It usually uses 2 to 4 discs.

Raid 1 or "mirror"

Reliability does not decrease here. You get disk space and performance from only one hard drive, but you have double the reliability. One disk breaks - the information will be saved on the other.

An array of RAID 1 does not affect the speed, but the volume - here you have only half of the total disk space, which, by the way, in raid 1 can be 2, 4, etc., that is, an even number. In general, the main feature of the first level raid is reliability.

Raid 10

It combines all the best from the previous types. I propose to analyze how it works on the example of four HDDs. So, information is written in parallel on two disks, and this data is duplicated on two other disks.

As a result, the access speed is doubled, but also the volume of only two of the four disks in the array. But if any two disks break, there will be no data loss.

Raid 5

This type of array is very similar to RAID 1 in its purpose, only now you need at least 3 disks, one of them will store the information necessary for recovery. For example, if such an array contains 6 HDDs, then only 5 of them will be used to record information.

Due to the fact that data is written to several hard drives at once, the read speed is high, which is perfect for storing a large amount of data there. But, without an expensive raid controller, the speed will not be very high. God forbid one of the disks breaks - restoring information will take a lot of time.

Raid 6

This array can survive the failure of two hard drives at once. This means that to create such an array, you will need at least four disks, despite the fact that the write speed will be even lower than that of RAID 5.

Please note that such an array (6) will hardly be possible to collect without a productive raid controller. If you have only 4 hard drives at your disposal, it is better to build RAID 1.

How to create and configure a RAID array

RAID controller

A raid array can be done by connecting several HDDs to a computer motherboard that supports this technology. This means that such a motherboard has an integrated controller, which, as a rule, is built into. But, the controller can also be external, which is connected via PCI or PCI-E connector. Each controller usually has its own configuration software.

The raid can be organized both at the hardware level and at the software level, the latter option being the most common among home PCs. Users do not like the controller built into the motherboard for poor reliability. In addition, in case of damage to the motherboard, it will be very problematic to recover data. At the software level, it plays the role of a controller, in which case it will be possible to safely transfer your raid array to another PC.

Hardware

How to make a RAID array? To do this, you need:

  1. Get it somewhere with raid support (in the case of hardware RAID);
  2. Buy at least two identical hard drives. It is better that they are identical not only in characteristics, but also of the same manufacturer and model, and connected to the mat. board with one.
  3. Transfer all data from your HDD to other media, otherwise they will be destroyed during the raid creation process.
  4. Further, in the BIOS, you will need to enable RAID support, how to do this in the case of your computer - I cannot tell, due to the fact that everyone has different BIOSes. Usually this parameter is named something like this: "SATA Configuration or Configure SATA as RAID".
  5. Then restart your PC and a table with more detailed raid settings should appear. You may have to press the "ctrl + i" key combination during the "POST" procedure for this table to appear. For those who have an external controller, they will most likely need to press "F2". In the table itself, click "Create Massive" and select the required array level.

After creating a raid array in BIOS, you need to go to "disk management" in OS -10 and format the unallocated area - this is our array.

Program

You don't have to enable or disable anything in the BIOS to create a software RAID. You, in fact, don't even need the motherboard to support the raid. As mentioned above, the technology is implemented due to central processing unit PC and the means of Windows itself. Yeah, you don't even need to install any third-party software. True, in this way you can create only RAID of the first type, which is a "mirror".

Right-click on "my computer" - item "management" - "disk management". Then we click on any of the hard drives intended for the raid (disk1 or disk2) and select "Create mirrored volume". In the next window, select a disk that will be a mirror of another hard drive, then assign a letter and format the resulting partition.

In this utility, mirrored volumes are highlighted in one color (red) and are designated by a single letter. In this case, files are copied to both volumes, once to one volume, and the same file is copied to the second volume. It is noteworthy that in the window "my computer" our array will be displayed as one section, the second section is, as it were, hidden, so as not to "call out" the eyes, because there are the same duplicate files.

If any hard drive fails, the error "Failed redundancy" will appear, while on the second partition everything will remain intact.

Let's summarize

RAID 5 is needed for a limited range of tasks, when much more (than 4 disks) number of HDDs are collected in huge arrays. For most users, Raid 1 is the best option. For example, if you have four disks with a capacity of 3 terabytes each - in RAID 1, then 6 terabytes of capacity are available. RAID 5 in this case will give more space, however, the access speed will drop dramatically. RAID 6 will give you the same 6 terabytes, but even lower access speed, and it will also require an expensive controller from you.

Let's add more RAID disks and you will see how everything changes. For example, let's take eight disks of the same capacity (3 terabytes). In RAID 1, only 12 terabytes of space will be available for writing, half of the volume will be closed! RAID 5 in this example will give 21 terabytes of disk space + it will be possible to get data from any one damaged hard drive. RAID 6 will give 18 terabytes and data can be retrieved from any two drives.

In general, RAID is not a cheap thing, but personally I would like to have a RAID of the first level of 3 terabyte disks at my disposal. There are even more sophisticated methods, such as RAID 6 0, or "raid from raid arrays", but this makes sense with a large number of HDDs, at least 8, 16 or 30 - you must admit, this is far beyond the scope of ordinary "household" use and is used in demand for the most part in servers.

Something like this, leave comments, add the site to bookmarks (for convenience), there will be many more interesting and useful things, and see you soon on the blog pages!

RAID array (Redundant Array of Independent Disks) - connecting multiple devices to improve performance and / or data storage reliability, in translation - a redundant array of independent disks.

According to Moore's Law, current performance is increasing every year (namely, the number of transistors on a chip doubles every 2 years). This can be seen in almost every branch of computer hardware manufacturing. Processors increase the number of cores and transistors, while reducing those of the process, RAM increases frequency and bandwidth, memory solid state drives increases wear resistance and read speed.

But simple hard disk drives (HDDs) have not made much progress in the past 10 years. As was the standard speed of 7200 rpm, so it remained (not taking into account server HDDs with a speed of 10.000 or more). Slow 5400 RPM is still found on laptops. For most users, in order to increase the performance of their computer, it will be more convenient to buy an SDD, but the price for 1 gigabyte of such media is much higher than that of a simple HDD. “How can I improve storage performance without losing too much money and space? How to save your data or increase the safety of your data? " There is an answer to these questions - a RAID array.

Types of RAID arrays

At the moment there are the following types of RAID arrays:

RAID 0 or Striped - an array of two or more drives to improve overall performance. The volume of the raid will be general (HDD 1 + HDD 2 \u003d Total volume), the read / write speed will be higher (due to the division of the record into 2 devices), but the reliability of information security suffers. If one of the devices fails, then all information in the array will be lost.

RAID 1 or "Mirror" - several disks copying each other to increase reliability. The write speed remains at the same level, the reading speed increases, the reliability increases many times over (even if one device fails, the second will work), but the cost of 1 Gigabyte of information doubles (if you make an array of two hdd).

RAID 2 is an array built around the operation of storage disks and error correction disks. The calculation of the number of HDDs for storing information is performed according to the formula "2 ^ n-n-1", where n is the number of HDD correction. This type is used with a large number of HDDs, the minimum acceptable number is 7, where 4 is for storing information, and 3 is for storing errors. The advantage of this type will be the increased performance compared to a single disk.

RAID 3 - consists of "n-1" disks, where n is the disk for storing parity blocks, the rest are devices for storing information. The information is divided into pieces less than the sector size (split into bytes), well suited for working with large files, the speed of reading small files is very low. It is characterized by high performance, but low reliability and narrow specialization.

RAID 4 is similar to type 3, but the division is in blocks, not bytes. This solution managed to fix the low read speed of small files, but the write speed remained low.

RAID 5 and 6 - instead of a separate disk for error correlation, as in previous versions, blocks are used, evenly distributed across all devices. In this case, the speed of reading / writing information increases due to parallelization of the recording. Minus of this type long-term recovery of information in the event of failure of one of the disks. During recovery, there is a very high load on other devices, which reduces reliability and increases the failure of another device and the loss of all data in the array. Type 6 improves overall reliability but decreases performance.

Combined types of RAID arrays:

RAID 01 (0 + 1) - Two Raid 0's are combined into Raid 1.

RAID 10 (1 + 0) - RAID 1 disk arrays that are used in Type 0 architecture. It is considered the most reliable storage option, combining high reliability and performance.

You can also create an array of SSD drives ... According to 3DNews testing, such a combination does not give a significant increase. Better to buy a drive with a higher performance PCI or eSATA interface

Raid array: how to create

Created by connecting through a special RAID controller. At the moment there are 3 types of controllers:

  1. Software - an array is emulated by software, all calculations are performed by the CPU.
  2. Integrated - mostly common on motherboards (not in the server segment). A small chip on the mat. the board responsible for emulating the array, calculations are performed through the CPU.
  3. Hardware - expansion board (for stationary computers), usually with a PCI interface, has its own memory and computing processor.

RAID array hdd: How to make 2 disks via IRST


Data recovery

Some data recovery options:

  1. In case of failure, Raid 0 or 5 can be helped by the RAID Reconstructor utility, which will collect available information drives and will overwrite to another device or media in the form of an image of the past array. This option will help if the disks are working properly and there is a software error.
  2. For Linux systems used mdadm recovery (utility for managing software RAID arrays).
  3. Hardware recovery should be performed through specialized services, because without knowing the controller's operating methodology, you can lose all data and it will be very difficult or impossible to return them.

There are many nuances to consider when creating a Raid on your computer. Basically, most of the options are used in the server segment, where stability and data safety are important and necessary. If you have any questions or additions, you can leave them in the comments.

Have a great day!