Chapter 2. Setting Up Filesystems for Video Server Toolkit

This chapter describes how to set up XFS filesystems for Video Server Toolkit and for the VST clip cache, which holds the VST media assets. The clip cache h is maintained on one or more filesystems across one or more disks or RAID arrays. You set up the filesystems on a system disk and a duplicate disk.

This chapter includes explicit steps for setting up the plexed filesystem. However, it is beyond the scope of this book to explain in detail the intricacies of the tools, including XFS, XLV, and Guaranteed Rate I/O (GRIO), that you use to set up your filesystem. For information about any of these tools, see the latest version of IRIX Admin: Disks and Filesystems .

This chapter contains these sections:

Preparing for Logical Volume Creation

A logical volume is a set of disks or disk arrays that are treated as one disk. Logical volumes (XLVs) allow for the creation of a real-time subvolume to be used within a real-time filesystem. XLVs are also used to stripe data across a set of disks or disk arrays to form a subvolume.

This section consists of the following:

For more information about XLV, see IRIX Admin: Disks and Filesystems .

Planning for Optimal Performance

For optimal performance, follow these recommendations:

  • All RAID arrays should be RAID level 3.

  • Use real-time filesystems whenever possible so that VST can use GRIO, which provides highly reliable video streaming.

  • If multiple disks or RAID arrays are available, use XLV to stripe data across the disks.


    Note: Striping across multiple device types is not possible.


The creation of real-time filesystems requires the use of logical volumes. Logical volumes also provide the mechanisms for data striping. For information on configuring and using RAID arrays by creating logical units (LUNs), refer to the administration guide of the RAID storage system you are using.


Note: You can use a non-real-time filesystem, particularly if you are setting up a development system, but with some loss of performance. See “Configuring Non-Real-Time Filesystems”.


Using Real-Time Filesystems

An XFS filesystem can be created on an XLV disk volume that contains a real-time subvolume. The real-time subvolume is a separate data area, usually created on a separate set of disks or disk arrays, that is optimized for real-time recording and playback of digital media. When an XFS filesystem is part of the VST clip cache, the real-time subvolume, if available, is where the media data is stored. Only real-time filesystems have guaranteed real-time I/O rates (GRIO).

Data can be read normally from a real-time filesystem, but standard utilities, such as ftp and cp, cannot be used to write the data. However, the VST installation replaces the standard ftp daemon in the configuration file /etc/inetd.conf with vtrftpd, an enhanced version that is installed from vst_eoe.sw.ftpd. Thus, invoking ftp automatically initiates vtrftpd, which supports a site marks facility that keeps track of in and out points in clips.

For more information on the use of real-time filesystems, see Video Server Toolkit Developer's Guide .

Determining Volume Size

Table 2-1 can help you determine the size of the volumes and therefore the amount of disk space you need according to different compression formats.

Table 2-1. Disk Space Requirements

Format

Rate (MB/sec)

Disk Space for One Minute

Disk Space (GB) for One Hour

Uncompressed

22

1.32 GB

79

Rice lossless

11

0.66 GB

39.6

DVCPRO

3.6

216 MB

13

Rice values are typically one half of uncompressed values. The bit rate for MPEG clips depends upon the settings of the MPEG encoder which recorded it.

Observe the following guidelines when you create a logical volume to be used as part of VST's clip cache:

  • Set data subvolume size to at least 200 MB.

  • Create a real-time subvolume using a stripe size based on the striping guidelines in “Determining Volume Striping Values”.

  • If GRIO is used, put only real-time subvolumes on all partitions of any disks or disk arrays.

  • If a real-time subvolume is placed on a RAID subsystem(s), plex the data subvolume on a pair of internal disks to improve reliability.

Subsections of “Setting Up Plexing” later in this chapter contain explicit instructions for setting up plexing.

Determining Volume Striping Values

Part of the job of creating a logical volume is to supply XLV with values for striping the disks. Striping is the process of distributing media data across several disks so that different parts of the media can be simultaneously accessed, which provides a higher overall bandwidth.

Striping is highly recommended for real-time performance. You can stripe disks for the real-time subvolume of real-time filesystems (recommended), or for non-real time filesystems (not recommended).

Follow these guidelines for striping volumes:

  • Choose a larger stripe unit to improve performance, but do not exceed the optimal I/O size for the individual disk devices being striped. Exceeding the optimal size does not significantly improve performance, but increases system memory requirements.

    • For non-RAID disks and disk arrays, the stripe unit per disk should be at lest 256 KB ({512 disk blocks), preferably 612 KB (1024 disk blocks).

    • For a 4+1 RAID-3 disk array, the stripe unit should be at least 1 MB ({2048 disk blocks), preferably 2 MB (4096 disk blocks).

    • For an 8+1 RAID-3 disk array, the stripe unit should be at least 2 MB (4096 disk blocks), preferably 4 MB {(8192 disk blocks).

  • If a real-time subvolume is being striped, the real-time extent size of the XFS filesystem must match the stripe size given by the following formula:

    num-striped-disks * stripe-unit * 512bytes/block
    

Uncompressed Media Striping

A stripe unit value that is a multiple of 552 disk blocks (226 KB) is optimal for 525-line/59.94 8-bit 4:2:2 uncompressed video use. This results in a stripe size of 2,260,992 bytes for an eight-disk volume, or 1,081,344 bytes for a four-disk volume. This stripe size holds, respectively, exactly six or three uncompressed 4:2:2 eight-bit fields (2 bytes/pixel) when the field is rounded up to the nearest 16 KB to match the recommended filesystem block size.

A stripe unit value that is a multiple of 624 disk blocks (312 KB) is optimal for 625-line/50 8-bit 4:2:2 uncompressed video use. This results in a stripe size of 2,654,208, bytes for an eight-disk volume, or 1,327,104 bytes for a four-disk volume. This stripe size holds, respectively, exactly six or three uncompressed 4:2:2 eight-bit fields (2 bytes/pixel) when the field is rounded up to the nearest 16 KB to match the recommended filesystem block size.

Non-Real-Time, Non-Striped Filesystems

If you use a non-real-time filesystem with no striping, add an entry to /usr/vtr/config/vtrfsinfo.conf to specify the optimal I/O size for the disk device. For example, to specify an optimal I/O size of 4 MB for a single RAID device, use:

/dev/dsk/dks2d1s7 4m 

Choosing Parameters for Creating and Mounting an XFS Filesystem

When you create an XFS filesystem, follow these guidelines:

  • Set filesystem block size to 16 KB only.

  • Set the real-time extent size to the optimal I/O size for the real-time subvolume.

    If the subvolume is striped, it must match the stripe size. If the subvolume is not striped (single disk or RAID array), it should match the optimal I/O size for the disk system.

    For a single RAID, use 2 to 4 MB for the extent size. For more information about determining the optimal I/O size for a disk, see the striping guidelines in “Using GRIO”.

For more information about XFS, see IRIX Admin: Disks and Filesystems .

Using Redundancy

VST works with IRIS FailSafe 1.2 to provide failover capability. You can also set up one or more servers for clip mirroring, to reflect the state of the primary server's clip cache. Chapter 5, “Configuring for Redundancy,” describes how to configure for these options.

Setting Up Plexing

Setting up plexing consists of several procedures, explained in the following subsections:


Caution: Partitioning the disk destroys all data on it.


Partitioning the System Disk

Table 2-2 summarizes the desired setup for the system disk in a redundant system.

Table 2-2. System Disk Partitions

Partition

Contents

Size

0

root, type xlv

256 MB

1

swap, type raw

512 MB

6

usr, type xlv

rest of disk

7

data subvolume, type xlv

1024 MB

8

volhdr

2 MB



Note: Have ready the following CDs: IRIX 6.5.4 and the IRIX 6.5 CDs: Installation Tools, Foundation 1, Foundation 2, Applications, and NFS.

This subsection gives instructions for partitioning the system disk and breaking the current IRIX installation. Follow these steps:

  1. Perform initial system administration, as explained in “Initial System Administration” in Chapter 1.

  2. Back up data on the disk as necessary.

  3. Enter

    # fx -x
    

    The system responds:

    fx version 6.5, Apr 13, 1999 
    fx: "device-name" = (dksc) 
    

  4. Press Enter. The system responds:

    fx: ctlr# = (0) 
    

  5. Press Enter. The system responds:

    fx: drive# = (1) 
    

  6. Press Enter. The system responds:

    fx: lun# = (0) 
    

  7. Press Enter. The system responds:

    ...opening dksc(0,1,0)
    ...drive selftest...OK
    Scsi drive type == SGI     IBM  DGHS18Y    0190
    
    ----- please choose one (? for help, .. to quit this menu)-----
    [exi]t             [d]ebug/           [l]abel/           [a]uto
    [b]adblock/        [exe]rcise/        [r]epartition/
    fx>
    

  8. Enter repartition/expert. The system responds:

    Warning: you will need to re-install all software and restore user data from backups after changing the partition layout.  Changing partitions will cause all data on the drive to be lost.  Be sure you have the drive backed up if it contains any user data.  Continue?
    

  9. Enter yes. The system responds:

    Enter .. when done
    fx/repartition/expert: change partition = (0)
    

  10. Press Enter. The system responds:

    before:  type xfs        block       0,         0 MB
                             len:        0 blks,    0 MB
    fx/repartition/expert: partition type = (xfs)
    

  11. Enter xlv. The system responds:

    fx/repartition/expert: base in megabytes = (0)
    

  12. Enter 2. The system responds:

    fx/repartition/expert: size in megabytes (max 17363) = (0)
    

  13. Enter 256. The system responds:

     after:  type xlv        block    4096,         2 MB
                             len:   524288 blks,  256 MB
    fx/repartition/expert: change partition = (1)
    

  14. Enter 1. The system responds:

    before:  type xfs        block       0,         0 MB
                             len:        0 blks,    0 MB
    fx/repartition/expert: partition type = (xfs)
    

  15. Enter raw. The system responds:

    fx/repartition/expert: base in megabytes = (0)
    

  16. Enter 258. The system responds:

    fx/repartition/expert: size in megabytes (max 17107) = (0)
    

  17. Enter 512. The system responds:

    after:  type raw        block  528384,       258 MB
                             len:  1048576 blks,  512 MB
    fx/repartition/expert: change partition = (6)
    

  18. Enter 7. The system responds:

    before:  type xfs        block    4096,         2 MB
                             len:  35558944 blks, 17363 MB
    fx/repartition/expert: partition type = (xfs)
    

  19. Enter xlv. The system responds:

    fx/repartition/expert: base in megabytes = (2)
    

  20. Enter 770. The system responds:

    fx/repartition/expert: size in megabytes (max 16595) = (17363)
    

  21. Enter 1024. The system responds:

     after:  type xlv        block 1576960,       770 MB
                             len:  2097152 blks, 1024 MB
    fx/repartition/expert: change partition = (8)
    

  22. Enter 6. The system responds:

    before:  type xfs        block       0,         0 MB
                             len:        0 blks,    0 MB
    fx/repartition/expert: partition type = (xfs) 
    

  23. Enter xlv. The system responds:

    fx/repartition/expert: base in megabytes = (0)
    

  24. Enter 1794. The system responds:

    fx/repartition/expert: size in megabytes (max 15571) = (0)
    

  25. Enter 15570 (that is, max -1) The system responds:

    after:  type xlv        block 3674112,      1794 MB
                             len:  31887360 blks, 15570 MB
    fx/repartition/expert: change partition = (7)
    

  26. Enter .. (two periods). The system responds:

    ----- partitions-----
    part  type        blocks            Megabytes   (base+size)
      0: xlv        4096 + 524288         2 + 256  
      1: raw      528384 + 1048576      258 + 512  
      6: xlv     3674112 + 31887360    1794 + 15570
      7: xlv     1576960 + 2097152      770 + 1024 
      8: volhdr        0 + 4096           0 + 2    
     10: volume        0 + 35563040       0 + 17365
    
    capacity is 35563040 blocks
    
    ----- please choose one (? for help, .. to quit this menu)-----
    [ro]otdrive           [o]ptiondrive         [e]xpert
    [u]srrootdrive        [re]size
    fx/repartition>
    
    * Enter /label/sync
    
    writing label info to dksc(0,1,0)
    
    ----- partitions-----
    part  type        blocks            Megabytes   (base+size)
      0: xlv        4096 + 524288         2 + 256  
      1: raw      528384 + 1048576      258 + 512  
      6: xlv     3674112 + 31887360    1794 + 15570
      7: xlv     1576960 + 2097152      770 + 1024 
      8: volhdr        0 + 4096           0 + 2    
     10: volume        0 + 35563040       0 + 17365
    
    capacity is 35563040 blocks
    
    ----- please choose one (? for help, .. to quit this menu)-----
    [ro]otdrive           [o]ptiondrive         [e]xpert
    [u]srrootdrive        [re]size
    fx/repartition>
    

  27. Enter /exit.

Installing System Software on the System Disk

When the label is written to disk, the system must be powered on again. Follow these steps:

  1. Power on the system. After the PROM executes, a message like the following appears:

    Autoboot failed. 
    dksc(0,1,0)unix: no such file or directory. 
     
    Hit Enter to continue. 
    

  2. Press Enter. The System Maintenance Menu appears:

     System Maintenance Menu
    
    1) Start System
    2) Install System Software
    3) Run Diagnostics
    4) Recover System
    5) Enter Command Monitor
    

  3. Choose “Install System Software” (2). The following message appears:

    Installing System Software... 
     
    Press <Esc> to return to the menu. 
    1) Remote Directory  X) Local CD-ROM  
    
    Enter 1-2 to select source type, <esc> to quit,
    or <enter> to start: 
    

  4. Load the IRIX 6.5.4 CD into the remote or local CD-ROM drive.

    • If you are installing from a local CD-ROM, enter 2 and continue at step 7.

    • If you are installing from a remote directory, enter 1. The system responds:

      Enter the name of the remote host:
      

  5. If you are installing from a remote CD-ROM, enter the name of the remote host. The system responds:

    Enter the remote directory:
    

  6. Enter /CDROM/dist. The system responds:

    1)[Remote Directory]  X) Local CD-ROM  
          *a) Remote directory /CDROM/dist from server remoteHost.
    
    Enter 1-2 to select source type, a to select the source, <esc> to quit, or <enter> to start:
    

  7. Press Enter. The system responds:

    Copying installation program to disk.
    ......... 10% ......... 20% ......... 30% ......... 40% ....... 50% 
    ......... 60% ......... 70% ......... 80% ......... 90% ....... 100% 
    
    Copy complete
    IRIX Release 6.5 IP27 Version 04151556 System V - 64 Bit
    Copyright 1987-1999 Silicon Graphics, Inc.
    All Rights Reserved.
    
    Setting rbaud to 19200
    WARNING: Cannot load runtime symbol table from bootp'ed kernel.
             Loadable modules will not be registered or loaded.
    Creating miniroot devices, please wait...
    
    Current system date is Mon May 17 15:30:19 PDT 1999
    
    Mounting file systems:
    
        /dev/miniroot            on  /
        /dev/dsk/dks0d3s0        on  /root
        /dev/dsk/dks0d3s6        on  /root/usr
    
    
    Invoking software installation.  
    

  8. The miniroot prompts for hostname, network address, and netmask; enter these for your system.

  9. At the Inst prompt, enter admin to display the Admin menu.

  10. At the Admin prompt, enter sh to get a shell.

  11. In the shell, enter

    # mkfs /dev/dsk/dks0d3s6 
    

    The system responds:

    meta-data=/dev/dsk/dks0d3s6   isize=256   agcount=16, agsize=249133 blks
    data     =                    bsize=4096  blocks=3986116, imaxpct=25
             =                    sunit=0     swidth=0 blks, unwritten=1
    naming   =version 1           bsize=4096  
    log      =internal log        bsize=4096  blocks=1000
    realtime =none                extsz=65536  blocks=0, rtextents=
    

  12. Enter

    # mount /dev/dsk/dks0d3s6 /root/usr 
    # exit 
    

  13. The Admin menu appears; enter exit to get to the Inst main menu.

  14. Insert the IRIX 6.5 CDs in the following order:

    • Installation Tools

    • Foundation-1

    • Foundation-2

    • Applications

    • NFS

    From the Inst menu, select Open to open the distributions on each CD. Unselect the distributions that you do not want.

  15. Install the following non-default subsystems:

    Inst> install eoe.sw.xlv eoe.sw.xfsrt eoe.sw.xlvplex 
    Inst> go 
    

    Installing the 6.5 subsystems takes a bit of time.

  16. Replace the last IRIX 6.5 CD with the IRIX 6.5.4 CD. Select the maintenance stream.

    Inst> keep N 
    Inst> go 
    

  17. Enter the following to edit root/etc/fstab:

    Inst> Admin
    Admin> sh 
    # cat > /root/etc/fstab 
    /dev/root /  xfs  rw,raw=/dev/rroot 0 0
    /dev/usr /usr  xfs  rw,raw=/dev/rusr 0 0
    

  18. Enter Crtrl+D to close root/etc/fstab. Exit from the shell and Admin, and quit Inst.

  19. The system prompts for a reboot; enter yes at the prompt.

  20. Perform an initial system administration as explained in “Initial System Administration” in Chapter 1.

Duplicating the System Disk

Once you have installed the system software on the system disk, duplicate it; follow these steps:

  1. Choose another disk as a backup option disk (for example, disk 2) and enter:

    # fx -x "dksc"(0,2) 
    

  2. Follow steps 8 through 27.

  3. As root, create a filesystem on partition 0:

    # mkfs /dev/dsk/dks0d2s0 
    

    The system responds:

    meta-data=/dev/dsk/dks0d3s0      isize=256    agcount=8, agsize=8192 blks
    data     =                       bsize=4096   blocks=65536, imaxpct=25
             =                       sunit=0      swidth=0 blks, unwritten=1
    naming   =version 1              bsize=4096  
    log      =internal log           bsize=4096   blocks=1000
    realtime =none                   extsz=65536  blocks=0, rtextents=0
    

  4. Create filesystem on /dev/dsk/dks0d2s6 and /dev/dsk/dks0d2s7 in a similar way.

  5. Use xfs_copy to copy the current system disk to the duplicate disk, with root copied into /dev/dsk/dks0d2s0 and /usr copied into /dev/dsk/dks0d2s6:

    xfs_copy /dev/dsk/dks0d1s0 /dev/dsk/dks0d2s0
    xfs_copy /dev/dsk/dks0d1s6 /dev/dsk/dks0d2s6
    

    Ignore messages about the mounted source drive.

Installing an XFS Flexlm XLV License

Once you have duplicated the system disk, use the following procedure to set up the plexing:

  1. To make sure that plexing is enabled and supported, start xlv and run the show config command:

    # xlv_mgr
    xlv_mgr> show config 
    

    The system responds:

    Plexing license: present
    Plexing support: present
    

  2. Exit xlv_mgr:

    xlv_mgr> exit
    

  3. If a plexing license is not present, to install the license in /var/flexlm/license.dat. Provide a symlink to the /etc/flexlm directory:

    # ln -s /var/flexlm /etc/flexlm 
    

  4. If you do not have a license for XLV, you must request one through the Key-O-Matic Web page http://www.sgi.com/Support/Licensing/. If your request is granted, you receive a license by e-mail or in your Web browser.

  5. Once you receive the license, log on to the VST server.

  6. As superuser, open the license file.

    # vi /etc/flexlm/license.dat 
    

  7. Copy and paste license lines from the web site into the license file; for example:

    FEATURE XLV sgifd 2.000 01-jan-0 0 6CC5738489148F24823C \
    HOSTID=#1761963733 vendor_info="XLV XFS PLEXING" \
    ISSUER="Silicon Graphics, Inc." 
    

  8. Save the file and exit vi.

Making the Root Partition on the System Disk Into an XLV Volume

The next procedure is to make the root partition on the system disk into an XLV volume; follow these steps:

  1. Enter:

    # xlv_make
    

    The system responds:

    xlv_make> 
    

  2. Enter vol root. The system responds:

    xlv_make> 
    

  3. Enter data.

    root.data
    xlv_make> 
    

  4. Enter ve -force /dev/dsk/dks0d1s0. The system responds:

    root.data.0.0
    xlv_make> 
    

  5. Enter end. The system responds:

    Object specification completed
    xlv_make> 
    

  6. Enter vol usr. The system responds:

    usr
    xlv_make> 
    

  7. Enter data. The system responds:

    usr.data
    xlv_make> 
    

  8. Enter ve -force /dev/dsk/dks0d1s6. The system responds:

    usr.data.0.0
    xlv_make> 
    

  9. Enter end. The system responds:

    Object specification completed
    xlv_make> 
    

  10. Enter exit. The system responds:

    Newly created objects will be written to disk.
    Is this what you want?(yes)  
    

  11. Enter yes. The system responds:

    Invoking xlv_assemble
    

    The result is XLV volumes named root and usr that contain the root and usr partitions on the system disk. Since XLV preserves the data in partitions, the contents of the root and usr partitions are preserved. The -force option to the ve command was used because a mounted partition was included in the volume.

  12. Open /etc/fstab and add the following entry:

    /dev/xlv/usr/   /usr   xfs   rw   0   0
    

  13. Create a /etc/config/xlv_plexd.options file with the following content:

    # cat > /etc/config/xlv_plexd.options
      -b 1024 -w 50
      
    Press ctrl-D   # to close the file
    

    These commands make sure that a revive does not use too much of the disk's bandwidth.

  14. Reboot the system so that it switches from running from the root partition on the system disk (/dev/dsk/dks0d1s0) to running from the logical volume /dev/xlv/root.

Creating the Plex for the Root

After making the root partition on the system disk into an XLV volume, create the plex for the root. Follow these steps:

  1. Create the plex for the root out of /dev/dsk/dks0d2s0, and call it root_plex; also create plex for usr out of /dev/dsk/dks0d2s6, and call it usr_plex.

  2. Enter

    # xlv_make
    

    The system responds:

    xlv_make> 
    

  3. Enter plex root_plex. The system responds:

    root_plex
    xlv_make> 
    

  4. Enter ve /dev/dsk/dks0d2s0. The system responds:

    root_plex.0
    xlv_make> 
    

  5. Enter end. The system responds:

    Object specification completed
    xlv_make> 
    

  6. Enter plex usr_plex. The system responds:

    usr_plex
    xlv_make> 
    

  7. Enter ve /dev/dsk/dks0d2s6. The system responds:

    usr_plex.0
    xlv_make> 
    

  8. Enter end. The system responds:

    Object specification completed
    xlv_make> 
    

  9. Enter exit. The system responds:

    Newly created objects will be written to disk.
    Is this what you want?(yes)  
    

  10. Enter yes. The system responds:

    Invoking xlv_assemble
    

  11. Add sash to the volume header of the option disk used for the root_plex. It enables booting from of the root_plex if the primary root fails.

    # dvhtool -v get sash /tmp/sash /dev/rdsk/dks0d1vh
    # dvhtool -v add /tmp/sash sash /dev/rdsk/dks0d2vh
    

  12. Attach the root_plex to the root volume, and usr_plex to the usr volume using xlv_mgr.

    # xlv_mgr
    

    The system responds:

    xlv_mgr> 
    

  13. Enter the following three lines in xlv_mgr:

    xlv_mgr> attach plex root_plex root.data
    xlv_mgr> attach plex usr_plex usr.data
    xlv_mgr> quit
    

    When the shell prompt returns, the system automatically begins a plex revive so that the two plexes contain the same data.

Partitioning the Clip Cache

After creating the plex for the root, partition the clip cache. Follow these steps:

  1. Determine the SCSI ID and bus info of the Ciprico FC disk arrays.

    # hinv
    

    The system responds:

    FPU: MIPS R10010 Floating Point Chip Revision: 0.0
    CPU: MIPS R10000 Processor Chip Revision: 2.6
    2 180 MHZ IP27 P
    ...
    
    Integral SCSI controller 3: Version Fibre Channel AIC-1160, revision 2
    Disk drive: unit 1 on SCSI controller 3
    Integral SCSI controller 2: Version Fibre Channel AIC-1160, revision 2
    Disk drive: unit 1 on SCSI controller 2
    ...
    
    DIVO Video: controller 2 unit 2: Input, Output
    DIVO Video: controller 3 unit 3: Input, Output
    IOC3 external interrupts: 1
    

  2. Start fx:

    # fx -x
    fx: devicename = (dksc)
    

  3. Press Enter. The system responds:

    fx: ctlr# = (0) 
    

  4. Enter the controller where the Ciprico device is, for example, 3. The system responds:

    fx: drive# = (1)
    

  5. Press Enter. The system responds:

    fx: lun# = (0)
    

  6. Press Enter. The system responds:

    ----- please choose one (? for help, .. to quit this menu)-----
    [exi]t             [d]ebug/           [l]abel/           [a]uto
    [b]adblock/        [exe]rcise/        [r]epartition/     [f]ormat
    fx>
    ----- partitions-----
    part  type        blocks            Megabytes   (base+size)
      7: xlv        4096 + 142258752       2 + 69462
      8: volhdr        0 + 4096           0 + 2
     10: volume        0 + 142262848       0 + 69464
    
    capacity is 142262848 blocks
    
    ----- please choose one (? for help, .. to quit this menu)-----
    [ro]otdrive           [o]ptiondrive         [e]xpert
    [u]srrootdrive        [re]size
    fx/repartition>
    

  7. Enter o for option drive. The system responds:

    fx/repartition/optiondrive: type of data partition = (xfs)
    

  8. Press Enter. The system responds:

    fx/repartition/optiondrive: create log partition? = (no)
    

  9. Press Enter. The system responds:

    Warning: you will need to re-install all software and restore user data
    from backups after changing the partition layout.  Changing partitions
    will cause all data on the drive to be lost.  Be sure you have the drive
    backed up if it contains any user data.  Continue? yes
    
    ----- partitions-----
    part  type        blocks            Megabytes   (base+size)
      7: xlv        4096 + 142258752       2 + 69462
      8: volhdr        0 + 4096           0 + 2
     10: volume        0 + 142262848       0 + 69464
    
    capacity is 142262848 blocks
    ----- please choose one (? for help, .. to quit this menu)-----
    [ro]otdrive           [o]ptiondrive         [e]xpert
    [u]srrootdrive        [re]size
    fx/repartition>
    

  10. Enter /label/sync.The system responds:

    writing label info to dksc(0,3,0)
    
    ----- partitions-----
    part  type        blocks            Megabytes   (base+size)
      7: xlv        4096 + 142258752       2 + 69462
      8: volhdr        0 + 4096           0 + 2
     10: volume        0 + 142262848       0 + 69464
    
    capacity is 142262848 blocks
    ----- please choose one (? for help, .. to quit this menu)-----
    [ro]otdrive           [o]ptiondrive         [e]xpert
    [u]srrootdrive        [re]size
    fx/repartition>
    

  11. Enter /exit.

  12. Repeat steps 3 through step 11 for each Ciprico RAID array.

Creating the XLV Volume for the Clip Cache

After partitioning the clip cache, create the XLV volume for it. Follow these steps:

  1. Create the XLV volume for the clip cache using the data partitions on the system and option disk, and the two fibre channel RAID arrays. Enter:

    # xlv_make
    

    The system responds:

    xlv_make> 
    

  2. Enter the volume's name, for example, vol vtr. The system responds:

    vtr
    xlv_make> 
    

  3. Enter data. The system responds:

    vtr.data
    xlv_make> 
    

  4. Enter plex. The system responds:

    vtr.data.0
    xlv_make> 
    

  5. Enter ve dks0d1s7. The system responds:

    vtr.data.0.0
    xlv_make> 
    

  6. Enter plex. The system responds:

    vtr.data.1
    xlv_make> 
    

  7. Enter ve dks0d2s7. The system responds:

    vtr.data.1.0
    xlv_make> 
    

  8. Enter rt. The system responds:

    vtr.rt
    xlv_make> 
    

  9. Enter plex. The system responds:

    vtr.rt.0
    xlv_make> 
    

  10. Enter the following:

    xlv_make> ve -stripe -stripe_unit 4096 /dev/dsk/dks2d1s7 /dev/dsk/dks3d1s7.
    

    The system responds:

    vtr.rt.0.0
    xlv_make> 
    

  11. Enter end. The system responds:

    Object specification completed
    xlv_make> 
    

  12. Enter exit. The system responds:

    Newly created objects will be written to disk.
    Is this what you want?(yes)  
    

  13. Enter yes. The system responds:

    Invoking xlv_assemble
    

  14. Create an XFS filesystem on the clip's logical volume:

    # mkfs_xfs -b size=16k -r extsize=4m /dev/xlv/vtr 
    

  15. Create an entry in the filesystem table:

    # vi /etc/fstab
    /dev/xlv/vtr  /usr/vtr/clips xfs     rw,raw=/dev/rxlv/vtr  0 0
    

  16. Mount the clips filesystem:

    # mount -av 
    

  17. Create required links for /var/adm and /var/tmp:

    # mkdir /usr/vtrtmp
    # rm -r /var/tmp
    # rm -r /usr/tmp
    # ln -s /usr/vtrtmp /var/tmp
    # ln -s /var/tmp /usr/tmp
    

Configuring Non-Real-Time Filesystems

Normal VST system configuration requires that the clip cache /usr/vtr/clips reside on a filesystem that has a real-time subvolume. However, in developer or other non-production configurations, the clip cache can be on a filesystem that does not include a real-time subvolume.

If the clip cache filesystem does not contain a real-time subvolume and the filesystem does not reside on a striped (RAID-0) disk volume, the filesystem configuration file /usr/vtr/config/vtrfsinfo.conf must have an entry that specifies the I/O size and alignment required for the filesystem.

The configuration file includes a line for each disk device or logical volume used for playback or recording of clips; it has the following syntax:

device_name     I/O_size   alignment_size

For example:

/dev/xlv/striped 4m 4m

device_name

device_name is the device path for the disk or the XLV volume. The device name is either the block device name of the physical disk itself (for example, /dev/dsk/dks2d1s7) or is the block device name of the logical volume (for example, /dev/xlv/clips).

I/O_size

I/O_size is the desired I/O size, in bytes, for the disk device or volume. Select a value of at least 256 KB per disk spindle but no more than 512 KB per disk spindle. Use the suffix “k” as an abbreviation for 1024 bytes and the suffix “m” for 1024*1024 bytes.

For example, to specify a single Ultra-SCSI-attached disk, the I/O size should be from 256 KB to 512 KB. The I/O size for an 8+1 fibre channel RAID subsystem should be from 2 MB (8*256 KB) to 4 MB (8*512 KB).

alignment_size

The alignment_size should always be equal to the I/O_size unless you transfer the clips to a system with a different alignment size. In that case, use the alignment size of the other system, unless you transfer the clips to a system with a larger alignment size.

Using GRIO

High-performance media streaming is of utmost importance in using VST. Guaranteed Rate I/O (GRIO) provides high-performance streaming by enabling a user application to reserve part of a system's I/O resources for its exclusive use. It is used for real-time retrieval and storage of data streams. GRIO is an installable component in the IRIX operating system.

VST assumes that GRIO is running on real-time subvolumes. The supported configuration requires a filesystem with a real-time subvolume for clip storage and uses GRIO for bandwidth management. Other configurations can be used for development purposes or very small systems, but performance is not guaranteed. For example, record and play do not work while using an edit controller with Rice-encoded clips.

VST also assumes that the disks are striped according to the guidelines specified in “Determining Volume Striping Values”.

This section consists of the following subsections:

For more information about GRIO and its installation, see IRIX Admin: Disks and Filesystems .

Determining Disk I/O Size

The first step for using GRIO is deciding between 256 KB or 512 KB I/O per disk:

  • Choose 256 KB for lower latency and less memory usage, with relatively reduced performance.

  • Choose 512 KB for greater performance but with greater memory usage, resulting in increased latency. This choice makes sense for systems with plenty of memory.

To use GRIO, you must adjust the maximum bandwidth rating for the controllers and the disks by adding REPLACE or ADD lines to the /etc/grio_disks file; REPLACE is for controllers, ADD is for disks. The next sections explain adjusting maximum bandwidth for SCSI controllers and disks, respectively.

Adjusting the Maximum Bandwidth of the SCSI Controllers

To specify the bandwidth for a fibre channel SCSI controller, add to the /etc/grio_disks file a REPLACE line with the hardware tree path to the controller. For example:

REPLACE /hw/module/1/slot/io7/MotherBoard/pci/3/scsi_ctlr/0 2048K 40
REPLACE /hw/module/1/slot/io7/MotherBoard/pci/1/scsi_ctlr/0 2048K 40

The fibre channel SCSI controller is thus capable of 80 MB/sec each, or 40 I/Os of 2 MB/sec each. The recommended value is 80 MB/sec.

Use the command grio -P -d disk_devicename to determine the hardware graph path name for the SCSI controller. The controller is the second hardware graph name listed. For example:

matrix 15# grio -P -d /dev/dsk/dks0d1s7
Device Path: 
        /hw/module/1/slot/io1/MotherBoard/pci/0/scsi_ctlr/0/target/1/lun/0/disk
        /hw/module/1/slot/io1/MotherBoard/pci/0/scsi_ctlr/0
        /hw/module/1/slot/io1/MotherBoard/pci/controller
        /hw/module/1/slot/MotherBoard/node/xtalk/0/xbow
        /hw/module/1/slot/MotherBoard/node

vcpqa5 2# grio -P -d /dev/dsk/dks4d2s7
Device Path: 
        /hw/module/1/slot/io2/fibre_channel/pci/1/scsi_ctlr/0/target/2
           /lun/0/disk
        /hw/module/1/slot/io2/fibre_channel/pci/1/scsi_ctlr/0
        /hw/module/1/slot/io2/fibre_channel/pci/controller
        /hw/module/1/slot/MotherBoard/node/xtalk/0/xbow
        /hw/module/1/slot/MotherBoard/node

Adjusting the Maximum Bandwidth of the Disks

To adjust the maximum bandwidth of the disks, insert an ADD line into the /etc/grio_disks file to specify disk bandwidth. Note the following:

  • Disk I/O size must have the same value as the stripe unit size of the filesystem on the disk.

  • The SCSI identifier must match the SCSI identifier of the attached RAID array. If the identifiers do not match, GRIO and therefore VST are unable to start; playout and recording from that disk are impossible.

Obtaining the RAID Array SCSI Identifier

The SCSI identifier in the ADD line must match the SCSI identifier of the attached RAID. If the identifiers do not match, GRIO and therefore V ST are unable to start; playout and recording from that disk is impossible.

To identify the SCSI ID of attached RAID array or other SCSI disk, follow these steps:

  1. Use the versions command to make sure that the XFS GRIO subsystem, eoe.sw.xfsrt, is installed.

    % versions eoe.sw.xfsrt
    I  eoe.sw.xfsrt 02/24/97  XFS Realtime & Guaranteed-Rate Support
    

  2. Use the hinv command to produce a list of the disks in the system.:

    # hinv -c disk
    Integral SCSI controller 3: Version Fibre Channel AIC-1160, revision 2
      Disk drive: unit 1 on SCSI controller 3
    Integral SCSI controller 2: Version Fibre Channel AIC-1160, revision 2
      Disk drive: unit 1 on SCSI controller 2
    Integral SCSI controller 0: Version QL1040B (rev. 2), single ended
      Disk drive: unit 1 on SCSI controller 0
      Disk drive: unit 2 on SCSI controller 0
      Disk drive: unit 3 on SCSI controller 0
      Disk drive: unit 4 on SCSI controller 0
      Disk drive: unit 5 on SCSI controller 0
    Integral SCSI controller 1: Version QL1040B (rev. 2), single ended
    

  3. Using the information in the previous step, get the SCSI ID with the following command:

    # fx "dksc(c,n)" 
    

    where c is the SCSI controller number, and n is the disk number on that controller.

    For example, the root disk is controller 0 disk 1. An attached RAID should have its own controller and should be the only disk on that controller.

    In the following example, controller 2 is a fibre channel controller and disk 1 is the RAID array (the only disk on the fibre channel card). The drive type is Ciprico Rimfire 7010 03.1.

    # fx "dksc(2,1)" 
    Unable to determine drive type, defaulting to SCSI, ctrlr 0, drive 1
    fx version 6.5, Apr 13, 1999
    ...opening dksc(2,1,0)
    fx: partition already in use by xlv logical volume
    fx: devname             seq owner   state
    fx: /dev/rdsk/dks2d1s7    1 xlv     part of xlv vol
    
    fx: Warning:  this disk appears to have mounted filesystems.
             Don't do anything destructive, unless you are sure
             nothing is really mounted on this disk.
    ...drive selftest...OK
    Scsi drive type == Ciprico Rimfire 7010    03.1
    
    ----- please choose one (? for help, .. to quit this menu)-----
    [exi]t               [d]ebug/             [l]abel/
    [b]adblock/          [exe]rcise/          [r]epartition/
    fx> exit
    

  4. Restart GRIO:

    # /etc/init.d/grio stop 
    # /etc/init.d/grio start 
    

    The system responds:

    Total number of licensed grio streams is unlimited.
    #
    

    When GRIO is misconfigured, it fails to start and gives a brief description of the problem.

  5. When the GRIO daemon runs, check the bandwidth for the storage devices:

    # grio -C -d /dev/dsk/devname
    

    The system responds with the bandwidth information; for example:

    GRIO information for path of  disk device /dev/dsk/devname
    
    GRIO information for device:
    /hw/module/1/slot/io7/xbox_dualxtown/pci/0/scsi_ctlr/0/target/2/lun/0/disk
    opt i/o size:  4194304 bytes
    reservations:    1 ops currently reserved (max. per quantum),   10 ops maximum
       bandwidth:    36864 kbytes/sec available,    40960 kbytes/sec maximum
    
    GRIO information for device:
    /hw/module/1/slot/io7/xbox_dualxtown/pci/0/scsi_ctlr/0
    opt i/o size:  4194304 bytes
    reservations:    1 ops currently reserved (max. per quantum),   25 ops maximum
       bandwidth:    98304 kbytes/sec available,   102400 kbytes/sec maximum
    

Inserting the ADD Line for Disk Bandwidth

Insert an ADD line into the /etc/grio_disks file to specify disk bandwidth. Set the I/O size to the same value as the stripe unit size of the filesystem on that disk.

For example, if you have a Ciprico 7000 fibre channel RAID storage system, you might use the following line:

ADD     “Ciprico Rimfire 7010    03.1” 2048K 22

This line says that the RAID array should produce 44 MB/sec, or, in this case, 22 I/Os at 2 MB/sec. (The recommended value is 44 MB/sec.) The filesystem on this disk has a stripe size of 2 MB.

You can insert multiple ADD entries for systems that have filesystems with different stripe unit sizes on the same type of disk.

Now the user application can be started. Files created on the real-time subvolume can be accessed using guaranteed-rate I/O.

Disabling GRIO

Although using GRIO is recommended, VST enables you to disable it with the following control setting in /usr/vtr/config/system-defaults:

vtr.storage.fs.grio.enabled false