Thursday, March 19, 2009

Symantec product hierarchy

Copyright © 2009 Li Hong
Permission is granted to reprint or republic this article as long as the original source information and the copyright are kept.

  • Altiris
    • Endpoint Management
      1. Altiris Client Management Suite
      2. Altiris Server Management Suite
    • IT Service Management
      1. Service and Asset Management Suite
      2. Helpdesk Solution
      3. Altiris Asset Management Solution
    • Take Total Control
      1. Altiris Total Management Suite
      2. Altiris Workflow Solution
    • Get Started with the Basics
      1. Altiris Inventory Solution
      2. Altiris Deployment Solution
      3. Wise Package Studio
  • Back Exec
    • Data Protection
      1. Backup Exec for Windows Servers
      2. Backup Exec for Small Business Servers
      3. Services for Backup Exec
    • System Recovery
      1. Backup Exec System Recovery Server Edition
      2. Backup Exec System Recovery Small Business Server Edition
      3. Backup Exec System Recovery Desktop Edition
    • Extend Backup Capabilities
      1. Symantec Backup Exec for Windows Servers Agents and Options
      2. Symantec Backup Exec for Windows Small Business Server Agents and Options
      3. Symantec Backup Exec System Recovery Desktop Edition Options
      4. Symantec Backup Exec System Recovery Server Edition Options
      5. Symantec Backup Exec System Recovery Windows Small Business Server Edition Options
  • Brightmail
    • Brightmail Enterprise and Mid-Market
      1. Brightmail Gateway
      2. Brightmail Traffic Shaper
    • Brightmail Service Provider
      1. Brightmail Message Filter
      2. Brightmail Traffic Shaper
    • Mail Security for Groupware
      1. Protection for SharePoint Servers
      2. Mail Security for Microsoft Exchange
      3. Mail Security for Domino
  • Data Loss Prevention
    • Discover
      1. Symantec Data Loss Prevention Network Discover
      2. Symantec Data Loss Prevention Endpoint Discover
    • Monitor
      1. Symantec Data Loss Prevention Network Monitor
      2. Symantec Data Loss Prevention Endpoint Prevent
    • Protect
      1. Symantec Data Loss Prevention Network Protect
      2. Symantec Data Loss Prevention Network Prevent
      3. Symantec Data Loss Prevention Endpoint Prevent
    • Manage
      1. Symantec Data Loss Prevention Enforce Platform
      2. Universal Policy
      3. Automated Remediation and Workflow
  • Endpoint Security
    • Endpoint Protection
      1. Symantec Endpoint Protection
      2. Symantec Multi-tier Protection
      3. Symantec Multi-tier Protection Small Business Edition
    • Endpoint Enforcement
      1. Symantec Network Access Control
      2. Symantec Network Access Control Starter Edition
    • More Endpoint Security Solutions
      1. Symantec Critical System Protection
      2. Symantec Endpoint Encryption
      3. Symantec Mobile Security
  • NetBackup
    • Complete Backup and Recovery
      1. NetBackup
      2. NetBackup PureDisk
      3. NetBackup RealTime Protection
    • Reporting and Archiving
      1. Backup Reporter
      2. Enterprise Vault
    • Extend Backup and Restore Capabilities
      1. Veritas NetBackup Agents and Options
      2. Veritas NetBackup PureDisk Agents
      3. Symantec Enterprise Vault Agents and Options
  • Symantec Protection Network
  • Veritas Data Center Software
    • Data Protection
      1. Veritas NetBackup
      2. Veritas NetBackup PureDisk
      3. Veritas NetBackup Reporter
    • Storage Management
      1. Veritas Storage Foundation
      2. Veritas Storage Foundation for Windows
      3. Veritas CommandCentral Storage
    • High Availability and Disaster Recovery
      1. Veritas Cluster Server
      2. Veritas Configuration Manager
      3. Veritas Volume Replicator
    • Archiving
      1. Symantec Enterprise Vault

Create a root file system image

Copyright © 2009 Li Hong

Permission is granted to reprint or republic this article as long as the original source information and the copyright are kept.

The root filesystem is the filesystem that is contained on the same partition on which the root directory is located, and it is the filesystem on which all the other filesystems are mounted as the system is booted up. You can get a short and clear introduction to it at Root Filesystem Definition.

Most of time, the root filesystem resides on a real hardware such as a hard disk. But we can also make a virtual root filesystem out of a file and use it in a virtual machine. Combine it with a kernel image and a boot loader, you can setup a personal system immediately.


1 Create a hard disk image

A hard disk is complex, but can also be easy enough if you take it just as a sequence of bytes. See more introduction about a hard disk at Hard Disk

So using a file schema it is very handy to create a virtual disk:

     $dd if=/dev/zero of=root.img seek=1G bs=1 count=0

Please note, we use 'seek' action here, this will not allocate real space and is very fast. If you are using qemu, you can also create a compressed disk as follows. But I suggest you not to if you just want to do some tests and debug. Because it is inconvenient to use it under another virtual machine or to manage it directly without an emulator.

     $qemu-img create -f qcow root.img 1G

2 Format the disk

Su to root, then

     #losetup /dev/loop0 root.img #fdisk /dev/loop0

You can format this disk as what you like. To create only one partition is a googd choice, otherwise you will bother computing the offset to each partition when make the root file systems.


3 Make root file system

Assume there is only one partition in this disk. It should be 63 sectors after the beginning. That is at file offset 522 * 63 = 32256. So loop detach the disk first, then loop setup the partion and finally create a ext2 file system on it.

     #losetup --detach /dev/loop0

#losetup -o 32256 /dev/loop0 root.img

$mke2fs /dev/loop0

4 Copy files

Mount the partition first.

     #mount /dev/loop0 /mnt

Then copy all files (include grub files under /boot/grub) from an available root file system to /mnt. Umount and detach the disk

     #umount /mnt #losetup --detach /dev/loop0 #exit

5 Make the disk bootable

We use the grub to load the kernel and bootup the system. Because the disk can't boot up itself now, we should download a bootable grub floppy image ( grub.img) and run it in qemu. Then use grub to write the bootstrap into the head of the disk. (use 'qemu -h' to see the option information)

     $qemu -hda root.img -fda grub.img -boot a

When grub starts, write the bootstrap and then close qemu. Now you have a brand new system and are free to hack it with qemu.

     $qemu -hda root.img

You can install an new version of kernel easily either by booting up the this virtual disk in a virtual system or by managing root.img directly on a real box.

If you somewhat lack an adventurous spirit and feel these steps are still messy there is a easier way. Download a os distribution ISO file that you favor and then, after you finish the first step, run the following command to install a new root file system directly into this disk.

     $qemu -cdrom os.ISO -hda root.img -boot d

The story of storage: extended partition


Copyright © 2009 Li Hong

Permission is granted to reprint or republic this article as long as the original source information and the copyright are kept.

Extended Partition

As we mentioned in Hard Disk, a hard disk can have at most four primary partitions. If we want more partitions, we can change one primary partition into an extended one by subdividing it into logic ones and setting the partition type to 0x5 (extended type).

Like Master Boot Record (MBR) describing a hard disk, a Extended Boot Record (EBR) is used for a logic partition. However, there is one EBR for each logic partition and all the logic partitions in a extended partition is linked one by one using two partition table records in MBR.

EBRs have essentially the same structure as the MBR; except only the first two entries of the partition table are supposed to be used.

The structure of EBR is as follows:

Offset Description Size
0x0000 Generally unused 446
0x01BE Partition Table's First entry 16
0x1CE Partition Table's Second entry 16
0x1DE Unused 32
0x1FE MBR signature (0x55, 0xAA) 2

Follows is the layout of one 16-byte partition record:

Offset Length Description
0x00 1 status (0x80 = bootable, 0x00 = non-bootable, other = invalid)
0x01 3 CHS address of first sector in partition
0x04 1 partition type
0x05 3 CHS address of last sector in partition
0x08 4 Starting Sector
0x0C 4 Number of sectors in partition, in little-endian format

The first entry of an EBR partition table points to the logical partition belonging to that EBR:

  • Starting Sector = relative offset between this EBR sector and the first sector of the logical partition This will be the same value for each EBR on the same hard disk; usually 63.
  • Number of Sectors = total count of sectors for this logical partition

The second entry of an EBR partition table will contain zero-bytes if it's the last EBR in the extended partition; otherwise, it points to the next EBR in the EBR chain:

  • Starting Sector = relative address of next EBR within extended partition in other words: Starting Sector = LBA address of next EBR minus LBA address of extended partition's first EBR
  • Number of Sectors = total count of sectors for next logical partition, but count starts from the next EBR sector

The following figure gives an example of a hard disk holding an extended partition and a primary partition. There are two logic partitions in the extended partition.



The story of storage: hard disk


Copyright © 2009 Li Hong

Permission is granted to reprint or republic this article as long as the original source information and the copyright are kept.

Hard disk is a kind of storage that uses a concentric stack of disks or "platters" to record data. It is a block device, that says it reads and writes data in fixed-size blocks. Generally, the block size is 512 bytes. So from a software engineer's point of view, a hard disk is just a sequence of continuous blocks of data, and you can visit any of them freely using some kind of address mechanism.


1 MBR

A master boot record (MBR) is the first sector of a hard disk. It serves mainly two functions:

  • Holds a disk's primary partition table.
  • Holds the bootstrapping code. After BIOS initializing the PC, it will load this sector into memory and pass execution to it.

The structure of MBR is as follows:

Offset Description Size
0x0000 Code area 440
0x01B8 Disk signature 4
0x01BC Usually NULL (0x0000) 2
0x01BE Primary partition table (Fore entries, each 16 bytes) 64
0x01FE MBR signature (0x55, 0xAA) 2

Disk signature is used to uniquely indentify the boot disk by the OS and further by userland processes. But after the introduction of EDD, disk signature can be omitted and code area can be extended to a length of 446.

By convention, there are exactly four primary partition table entries in the MBR Partition Table scheme. Both the partition length and partition start address are stored as 32-bit quantities. Because the block size is 512 bytes, this implies that neither the maximum size of a partition nor the maximum start address (both in bytes) can exceed 2^32 * 512 bytes, or 2 TiB.

See Partition Table, for more info.


2 CHS

Cylinder-head-sector, also known as CHS, was an early method for giving addresses to each physical block of data on a hard disk drive. Though CHS values no longer have a direct physical relationship to the data stored on disks, pseudo CHS values (which can be translated by disk electronics or software) are still being used by many utility programs.

  • Head: Data is written to or read from a platter of the hard disk by a device called head. Usually, two heads are used to manipulate the data on both surfaces of a platter.
  • Track, Sylinder: A platter surface is composed of concentric circles. They are called tracks. All information stored on a hard disk is recorded in tracks. The tracks are numbered, starting from 0, starting at the outside of the platter and increasing as you go in. All tracks that have the same number and span across each platter surface form a sylinder.
  • Sector: A track is divided into sectors that are the base units managed by a hard disk driver.

So each sector can be addressed by a three-dimensional coordinate system (CHS). The number of sectors a hard disk holds is:

cylinders * heads * sectors

In earlier hard drive designs, the number of sectors per track was fixed and because the outer tracks on a platter have a larger circumference than the inner tracks, space on the outer tracks was wasted. The number of sectors that would fit on the innermost track constrained the number of sectors per track for the entire platter. However, many of today's advanced drives use a formatting technique called Multiple Zone Recording to pack more data onto the surface of the disk. Multiple Zone Recording allows the number of sectors per track to be adjusted so more sectors are stored on the larger, outer tracks. By dividing the outer tracks into more sectors, data can be packed uniformly throughout the surface of a platter, disk surface is used more efficiently, and higher capacities can be achieved with fewer platters. Not only is effective storage capacity increased by as much as 25 percent with Multiple Zone Recording, but the disk-to-buffer transfer rate also is boosted. With more bytes per track data in the outer zones is read at a faster rate.

However, as I metioned before, CHS values no longer have a direct physical relationship to the data stored on disks, the pseudo CHS still uses a uniform schema. The total length of CHS is 24 bits. Below is the detailed limit. See Partition Table.

Name Bits Start From End Limit Total Number
Cylinder 10 0 1023 1024
Head 8 0 254 255
Sector 6 1 63 63

So when use the CHS address schema, a hard disk could be no lager than:

(1024 * 255 * 63) * (512) = 8,422,686,720 bytes (about 8.4 GB)


3 LBA

Logical block addressing (LBA) is a common scheme used for specifying the location of blocks of data stored on computer storage devices, generally secondary storage systems such as hard disks. The term LBA can mean either the address or the block to which it refers. Logical blocks in modern computer systems are typically 512 or 1024 bytes each. ISO 9660 CDs (and images of them) use 2048-byte blocks. LBA is a particularly simple addressing scheme; blocks are located by an index, with the first block being LBA=0, the second LBA=1, and so on.

CHS tuples can be converted to LBA addresses using the following formula:

LBA(C,H,S) = ((C * heads_num) + H) * sectors_per_track + S - 1


4 Partition Table

As described before, the partition table in MBR can hold at most four records. Each partion can't exceed 2 TiB. To alleviat this capacity limitation, an new partition schema called GUID Partition Table (GPT) is introduced in industry. See more at UEFI.

Follows is the layout of one 16-byte partition record:

Offset Length Description
0x00 1 status (0x80 = bootable, 0x00 = non-bootable, other = invalid)
0x01 3 CHS address of first sector in partition
0x04 1 partition type
0x05 3 CHS address of last sector in partition
0x08 4 LBA of first sector in the partition
0x0C 4 number of sectors in partition, in little-endian format

Most of the time, LBA is used to find a partition. But specification says: if a partition's start block or end block or both are under the 8.4 GB limitation, CHS address should also be correctly record. Otherwise, CHS fields have some kind of default values.

Partition type is used to label the file system used on this partition. For example, the code for linux ext2 is 0x83 and linux swap is 0x82. You can see a list of partition types by sfdisk -T. A hard disk can have at most four primary partitions for there are only four entries in the primary partition table. The following figure gives an example of a hard disk holding two primary partitions.


If you ls /dev/sda* or ls /dev/hda*, you may see the results as follows:


/dev/sda /dev/sda1 /dev/sda2 or

/dev/hda /dev/hda1 /dev/hda2

Please note:

  1. The address mode used in figure is LBA. In CHS dialect, it should be Sector 1 - Sector 63.
  2. The first partition normally starts at sector 63 (LBA), that is just after the first track. The first 63 sectors (first track) can be used for other purpose such as holding bootloader code.
  3. Partition can start and end at any places as soon as there are no overlappings. And may not cover all the space on a hard disk.

To get more partitions, we can subpartition a primary partition into several logical partitions. The primary partition used to house the logical partitions is called an extended partition and it has its own file system type (0x05 extended type). See more at Extended partition.