Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - limitless/sdfs: Deduplication Based Filesystem · GitHub
Skip to content

Latest commit

History

1,576 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

sdfs

What is this?

A deduplicated file system that can store data in object storage or block storage.

License

GPLv2

Requirements

System Requirements

1. x64 Linux Distribution. The application was tested and developed on ubuntu 18.04
2. At least 8 GB of RAM
3. Minimum of 2 cores
4. Minimum of 16GB or Storage

Optional Packages

* Docker

Installation

Ubuntu/Debian (Ubuntu 14.04+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.deb
Step 2: Install sdfs and dependencies
sudo apt-get install fuse libfuse2 ssh openssh-server jsvc libxml2-utils
sudo dpkg -i sdfs-latest.deb
Step 3: Change the maximum number of open files allowed
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions

CentOS/RedHat (Centos 7.0+)

Step 1: Download the latest sdfs version
wget http://opendedup.org/downloads/sdfs-latest.rpm
Step 2: Install sdfs and dependencies
yum install jsvc libxml2 java-1.8.0-openjdk
rpm -iv --force sdfs-latest.rpm
Step 3: Change the maximum number of open files allowed
echo "* hardnofile 65535" >> /etc/security/limits.conf
echo "* soft nofile 65535" >> /etc/security/limits.conf
exit
Step 5: Log Out and Proceed to Initialization Instructions
Step 6: Disable the IPTables firewall
service iptables save
service iptables stop
chkconfig iptables off
Step 7: Log Out and Proceed to Initialization Instructions

Docker Usage

Setup

Step 1:
docker pull gcr.io/hybrics/hybrics:master
Step 2:
docker run --name=sdfs1 -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master
Step 3:
wget https://storage.cloud.google.com/hybricsbinaries/hybrics-fs/mount.sdfs-master
sudo mv mount.sdfs-master /usr/sbin/mount.sdfs
sudo chmod 777 /usr/sbin/mount.sdfs
sudo mkdir /media/sdfs
Step 4:
sudo ./mount.sdfs -d sdfs://localhost:6442 /mnt

Docker Parameters:

Envronmental VariableDescriptionDefault
CAPACITYThe Maximum Phyiscal Capacity of the volume. This is Specified in GB or TB100GB
TYPEThe type of backend storage. This can be specified as AZURE, GOOGLE, AWS, BACKBLAZE. If none is specified local storage is used.local storage
URLThe url of for the oject storage usedNone
BACKUP_VOLUMEIf set to true, the sdfs volume will be setup for deduping archive data better and faster. If not set it will default to better read/write access for random IOfalse
GCS_CREDS_FILEThe location of a GCS creds file for authicating to Google cloud storage and GCP Pubsub. Will be required for Google Cloud Storage and GCP Pubsub access.None
ACCESS_KEYS3 or Azure Access KeyNone
SECRET_KEYThe S3 or Azure Secret Key used to Access object storageNone
AWS_AIMIf set to true AWS AIM will be used for accessfalse
PUBSUB_PROJECTThe project where the pubsub notification should be setup for file changes and replicationNone
PUBSUB_CREDS_FILEThe credentials file used for pubsub creation and access with GCP. If not set GCS_CREDS_FILE will be used.None
DISABLE_TLSDisable TLS for api access is set to truefalse
REQUIRE_AUTHWhether to require authication for access to the sdfs APIsfalse
PASSWORDThe password to use when creating the volumeadmin
EXTENDED_CMDAny addition command parameters to run during creationNone

Docker run examples

Optimize usage running using local storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env CAPACITY=1TB --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Optimize usage running using Google Cloud Storage:

sudo mkdir /opt/sdfs1
sudo docker run --name=sdfs1 --env BUCKET_NAME=ABUCKETNAME --env TYPE=GOOGLE --env=GCS_CREDS_FILE=/keys/service_account_key.json --env=PUBSUB_PROJECT=A_GCP_PROJECT --env CAPACITY=1TB --volume=/home/A_USER/keys:/keys --volume /home/A_USER/sdfs1:/opt/sdfs -p 0.0.0.0:6442:6442 -d gcr.io/hybrics/hybrics:master

Build Instructions

Linux Version Must be build from a Linux System and Windows must be build from a Windows System
Linux build Requirements:
1. Docker
2. git Docker Build Steps ```bash
git clone https://github.com/opendedup/sdfs.git
cd sdfs
git fetch
git checkout -b master origin/master
#Build image with packages
docker build -t sdfs-package:latest --target build -f Dockerbuild.localbuild .
mkdir pkgs
#Extract Package
docker run --rm sdfs-package:latest | tar --extract --verbose -C pkgs/
#Build docker sdfs container
docker build -t sdfs:latest -f Dockerbuild.localbuild .
```

Initialization Instructions for Standalone Volumes

Step 1: Log into the linux system as root or use sudo
Step 2: Create the SDFS Volume. This will create a volume with 256 GB of capacity using a Variable block size.
**Local Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=256GB
**AWS Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --aws-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Azure Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --azure-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
**Google Storage**
sudo mkfs.sdfs --volume-name=pool0 --volume-capacity=1TB --google-enabled true --cloud-access-key <access-key> --cloud-secret-key <secret-key> --cloud-bucket-name <unique bucket name>
Step 3: Create a mount point on the filesystem for the volume
sudo mkdir /media/pool0
Step 4: Mount the Volume
sudo mount -t sdfs pool0 /media/pool0/
Set 5: Add the filesystem to fstab
pool0 /media/pool0 sdfs defaults 0 0

Troubleshooting and other Notes

Running on a Multi-Node clusting on KVM guest.
By default KVM networking does not seem to allow guest to communicate over multicast. It also doesn't seem to work when bridging from a nic. From my reseach it looks like you have to setup a routed network from a KVM host and have all the guests on that shared network. In addition, you will want to enable multicast on the virtual nic that is shared by those guest. Here is is the udev code to make this happen. A reference to this issue is found here.
# cat /etc/udev/rules.d/61-virbr-querier.rules ACTION=="add", SUBSYSTEM=="net", RUN+="/etc/sysconfig/network-scripts/vnet_querier_enable"
# cat /etc/sysconfig/network-scripts/vnet_querier_enable #!/bin/sh
if [[ $INTERFACE == virbr* ]]; then
/bin/echo 1 > /sys/devices/virtual/net/$INTERFACE/bridge/multicast_querier
fi
Testing multicast support on nodes in the cluster
The jgroups protocol includes a nice tool to verify multicast is working on all nodes. Its an echo tool and sends messages from a sender to a reciever
On the receiver run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastReceiverTest -mcast_addr 231.12.21.132 -port 45566
On the sender run
java -cp /usr/share/sdfs/lib/jgroups-3.4.1.Final.jar org.jgroups.tests.McastSenderTest -mcast_addr 231.12.21.132 -port 45566
Once you have both sides running type a message on the sender and you should see it on the receiver after you press enter. You may also want to switch rolls to make sure multicast works both directions.
take a look at http://docs.jboss.org/jbossas/docs/Clustering_Guide/4/html/ch07s07s11.html for more detail.
Further reading:
Take a look at the administration guide for more detail. http://www.opendedup.org/sdfs-20-administration-guide
Ask for Help
If you still need help check out the message board here https://groups.google.com/forum/#!forum/dedupfilesystem-sdfs-user-discuss

About

Deduplication Based Filesystem

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages