|
|
|
|
|
 |
project |
|
![]() |
![]() |
|
![]() |
![]() |
![]() |
| downloads |
![]() |
![]() |
|
![]() |
![]() |
![]() |
| documentation |
![]() |
![]() |
|
![]() |
![]() |
![]() |
| work items |
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
 |
![]() |
 | |
|
hide sidebar
Feature List
- Membership
- courtesy of the CI project
- includes libcluster and the cluster command (part of
Cluster Tools)
- Internode Communication
- Filesystem
- CFS is transparently stacked over any ext3 mount, making
it instantly and coherently shared across the cluster
- CFS can be used for the root and other filesystems
- there is mount enforcement across nodes in the cluster
so an NFS mount on any node is automatically done
on all nodes;
- reopen of files, devices, ipc objects when processes
move is supported
- CFS supports file record locking and shared writable
mapped files (along with all other standard
POSIX capabilities
- HA-CFS is configurable for the root or other
filesystems
- Lustre is supported;
- openGFS was supported but is not currently
- GFS will be supported in OpenSSI 2.x but is
not currently supported
- Process Management
- very complete, including:
- clusterwide PIDs
- process migration and distributed rexec(),
rfork() and migrate()
with reopen of files, sockets,
pipes, devices, etc.
- vprocs
- clusterwide signalling, get/setpriority
- capabilities
- distributed process groups, session, controlling
terminal
- surrogate origin functionality
- no single points of failure (cleanup code to deal
with nodedowns)
- Load leveling at exec() time and during process
execution
- clusterwide ptrace() and strace
- clusterwide /proc/<pid>, ps, top, etc.
- threaded processes migrate as a group
- process groups can migrate as a group
- Devices
- there is a clusterwide device model via the
devfs code
- each node mounts its devfs on
/cluster/node#/dev and bind mounts it to /dev
so all devices are visible and accessible from all
nodes, but by default you see only local devices
- a process on any node can open a device on any node
- devices are reopened when processes move
- processes retain a context, even if they move; the
context determines which node's devices to
access by default
- single, clusterwide /dev/pts
- IPC
- all IPC objects/mechanisms are clusterwide:
- pipes
- fifos
- signalling
- message queues
- semaphore
- shared memory
- Unix-domain sockets
- Internet-domain sockets
- reopen of IPC objects is there for
process movement
- nodedown handling is there for all IPC objects
- Clusterwide TCP/IP
- HA-LVS is integrated, with extensions
- extension is that port redirection to servers
in the cluster is automatic and doesn't have to
be managed.
- Paging/Swapping
- not clusterwide
- each node is independent
- Kernel Data Replication Service
- it is in there (cluster/ssi/clreg)
- no subsystems are using it
- CLVM/EVMS
- Shared Storage
- we have tested shared FCAL and use it for HA-CFS
- HA interconnect
- DLM
- is integrated with CLMS and is HA
- Sysadmin
- services architecture has been made clusterwide
- ps, top, ipcs are clusterwide by default
- localview command can limit view to local node
- Init, Booting and Run Levels
- system runs with a single init which will
failover/restart on another node if the node it is
on dies
- Application Availability
- application monitoring/restart provided by
spawndaemon/keepalive
- services started by RC on the initnode will automatically
restart on a failure of the initnode
- Timesync
- Load Leveling
- for connection load balancing, using HA-LVS
- process load leveling is on by default
- process load leveling can occur at exec() time
or during execution
- applications must be registered to load level
- Packaging/Install
- Have source patch, binary RPMs and CVS source options;
- Can also build Debian packages from CVS source;
- First node is incremental to a standard Linux install
- Other nodes install via netboot, PXEboot, DHCP and
simple addnode command;
- Object Interfaces
- standard interfaces for objects work as expected
- no new interfaces for object location or movement except
for processes (rexec(), migrate(), and /proc/pid/goto
to move a process)
|