1 # 2 # CDDL HEADER START 3 # 4 # The contents of this file are subject to the terms of the 5 # Common Development and Distribution License (the "License"). 6 # You may not use this file except in compliance with the License. 7 # 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 # or http://www.opensolaris.org/os/licensing. 10 # See the License for the specific language governing permissions 11 # and limitations under the License. 12 # 13 # When distributing Covered Code, include this CDDL HEADER in each 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 # If applicable, add the following below this CDDL HEADER, with the 16 # fields enclosed by brackets "[]" replaced with your own identifying 17 # information: Portions Copyright [yyyy] [name of copyright owner] 18 # 19 # CDDL HEADER END 20 # 21 22 #ident "@(#)README 1.9 09/05/26 SMI" 23 24 # 25 # Copyright 2009 Sun Microsystems, Inc. All rights reserved. 26 # Use is subject to license terms. 27 # 28 29 Introduction 30 ------------ 31 Diskomizer is a program for testing and verifying disk subsystems. 32 It uses multiple processes to do asynchronous writes and reads to 33 devices that are specified and then verifies the data that is read 34 back is the data that was written to that block. Every block of data 35 has a unique header each time it is written and the body of the data 36 changes every time the block is written. It can also be used to do 37 read only testing of devices; providing a non destructive method of 38 testing. 39 40 Detailed documentation on Diskomizer is available in the file 41 "diskomizer.html" and at the web page listed under STC_URL in the 42 STC.INFO file in this directory. 43 44 45 Modifying diskomizer source 46 --------------------------- 47 The source is lint and cstyle clean. Keep it that way. 48 49 50 Building diskomizer 51 ------------------- 52 There are two ways to build Diskomizer. 53 54 1) The original way which produces a single package called SUNWdiskomizer 55 that contains binaries for all the architecutures that diskomizer supports 56 and all OS releases currently supported. 57 58 2) The STC way which produces a package called SUNWstc-diskomizer that contains 59 only the binaries for the current archictecture and OS release. 60 61 Both build methods work with distributed make in parallel mode. 62 63 (a) The original method to build diskomizer: 64 65 The 32bit SPARC version has to be built on 5.8 66 The 64bit SPARC and the intel version on 5.8 67 The 32bit x86 version has to be built on 5.8 68 The 64bit x86 and the intel version on 5.10 69 70 The package should be built on 5.10 after this. 71 72 On the SPARC build system you can 73 74 $ cd build/`uname`/sparc && make install 75 76 On the 32 bit x86 system: 77 78 $ cd build/`uname`/i386 && \ 79 make "ALL_ISA = pentium_pro pentium" pkg 80 81 On the 64 bit x86 system do: 82 83 $ cd build/`uname`/i386/amd64 && make install 84 85 and then on any system: 86 87 $ cd build/`uname`/shell && make install 88 89 $ cd build/`uname`/pkg && make 90 91 (b) Building diskomizer for STC 92 93 From the top level diskomizer source directory, do 94 95 $ make package 96 97 98 Testing Diskomizer 99 ------------------ 100 You should always verify that diskomizer can detect and report data 101 corruptions. The simplest way to do this is using dd(1) and the 102 EXPERT_O_EXCL=0 option to disomizer so that the device can be accessed 103 and written to by dd. 104 105 More extensive testing can be done using virtual targets that can be 106 programed to inject data corruption of all types. 107 108 Diskomizer should be able to overwhelm any storage system from a 109 modertately configured client. 110 111 It is particuarly important to verify that the DAIO_FS and DAIO_SUNOS 112 modules work correctly and can detect data corruption. 113 114 Diskomizer Versions. 115 116 The versions numbers used are in major.minor format. To aid bug tracking 117 even major numbers reflect released versions of diskomizer with their 118 corresponding minor releases being patches to those releases. Odd major 119 numbers are development releases for the next even release. 120 121 So version 2N.0 would be a major release while ((2N)-1).0,((2N)-1).1,... would 122 be a devlopment builds of the release that will be known as 2N.0. Release 2N.1 123 would be a bug fix release of release 2N. 124