A cluster is a group of computers (usually referred to as nodes) connected in a way that lets them work as a single, highly available system. In clusters, resources are made highly available through redundancy: redundant servers, networking, disks and controllers. In a clustered environment, there will be shared disks across the cluster. Each node has direct access to the shared disk through a different interface. The number of nodes that can connect to a disk directly depends on the number of interfaces for that disk (typically 2-4). In our design of persistent snapshot device driver for a cluster, we assume the following components are available in the cluster environment: