Oracle Solaris 11 is a cloud operating system that is very powerful. Using Oracle Solaris 11, you will be able to provide various services. For example, it is possible to create storage that can be utilized by AjaXplorer, which provides Web-based access to files.
This article describes a PHP-based open source solution that uses AjaXplorer, Oracle Solaris 11.1, and Apache Web server (although other Web servers can be used) to build a cloud-based storage service that is similar to Dropbox.
Of course, you can also build the storage in the same way using AjaXplorer with other operating systems, such as Microsoft Windows, Mac OS X, and Linux. However, when using Oracle Solaris 11.1, you will be able to configure the storage in a more powerful and secure way by taking advantage of ZFS.
After you implement the solution described in this article, you will be able to use any Web browser to access the Web-based storage. In addition, you can use apps on Android and Apple iOS smartphones and tablets to access the storage.
You can use Oracle VM VirtualBox to install Oracle Solaris 11.1 on a system. Or, if you already have Oracle Solaris 11.1 installed on a system, you can use that.
The following are the system requirements for Oracle VM VirtualBox:
- At least 2 GB of memory (1 GB of memory is recommended to be assigned in Oracle VM VirtualBox)
- At least 20 GB free disk space for Oracle VM VirtualBox and its image
Note: If instead of installing Oracle VM Virtual Box, you use a system that already has Oracle Solaris 11.1 installed, that system should have at least 1 GB of memory (2 GB is recommended). The approach described in this article uses Oracle VM VirtualBox to install Oracle Solaris 11.1.
Install Oracle Solaris and Configure ZFS StoragePerform the following steps.
- Using Oracle VM VirtualBox (shown in Figure 1), install Oracle Solaris 11.1 on your system.
Note: If you do not have Oracle VM VirtualBox installed, you can download it here and then refer to the Oracle VM VirtualBox User Manual for installation information. You can also download the Oracle Solaris 11.1 VM for Oracle VM VirtualBox image—a preinstalled virtual machine that provides a convenient way to evaluate Oracle Solaris 11 from inside Oracle VM VirtualBox—by referring to this article.
- Add a disk to be used in the configuration ZFS, as shown in Figure 2.
- Add three more disks. When you are done, Oracle VM VirtualBox Manager will look similar to Figure 3.
- Start Oracle Solaris using the Start icon in Oracle VM VirtualBox.
- After logging in, change to the
rootuser by using the
sucommand. (From Oracle Solaris 11, you cannot log in directly as
root; you must log in as a regular user first.)
- Use the commands shown in Listing 1 to configure the ZFS storage and configure a RAIDZ volume.
data_poolas a RAIDZ volume using three disks:
c7t4d0. Then the
docsZFS file system is created under
root@solaris:~# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c7t0d0 <ATA-VBOX HARDDISK-1.0-16.00GB> /pci@0,0/pci8086,2829@d/disk@0,0 1. c7t2d0 <ATA-VBOX HARDDISK-1.0-2.00GB> /pci@0,0/pci8086,2829@d/disk@2,0 2. c7t3d0 <ATA-VBOX HARDDISK-1.0-2.00GB> /pci@0,0/pci8086,2829@d/disk@3,0 3. c7t4d0 <ATA-VBOX HARDDISK-1.0-2.00GB> /pci@0,0/pci8086,2829@d/disk@4,0 Specify disk (enter its number): ^D root@solaris:~# zpool create data_pool raidz c7t2d0 c7t3d0 c7t4d0 root@solaris:~# zfs create data_pool/docs
Install the Apache and PHP Packages
- To install the PHP Server and Apache Web Server packages (which come with Oracle Solaris 11), run the following commands:
root@solaris:~# pkg install pkg:/web/server/apache-22 root@solaris:~# pkg install pkg:/web/php-53 root@solaris:~# pkg install pkg:/web/server/apache-22/module/apache-php53
- Download AjaXplorer from sourceforge.net using the
root@solaris:~# wget http://sourceforge.net/projects/ajaxplorer/files/ajaxplorer/stable-channel/4.2.3/ajaxplorer-core-4.2.3.tar.gz
- Unpack the downloaded file using the following command.
root@solaris:~# tar xvfz /ajaxplorer-core-4.2.3.tar.gzAjaXplorer is installed in the default location of the Apache server, which is
- In order to construct Web storage under the
htdocsdirectory, we proceed as follows. First, create a
root@solaris:~# mkdir /var/apache2/2.2/htdocs/webhard
Next, change the mount point from
data_pool/docs, which is Web-based storage:
root@solaris:~# zfs set mountpoint=/var/apache2/2.2/htdocs/webhard data_pool/docs
Or, if you don't want to change the mount point, you can achieve the same result by modifying the configuration of the Apache server.
As shown in Listing 2, you can enable deduplication for the ZFS file system, which is supported by the Oracle Solaris 11, and you can enable the compression feature, which allows efficient use of storage.
Deduplication and compression can be turned on or off during operation. Encryption, which was not used here, can be enabled only when you create a volume. Once a volume has been encrypted, the encryption setting cannot be changed.
root@solaris:~# zfs get all data_pool/docs | grep compress data_pool/docs compression off local data_pool/docs compressratio 1.00x root@solaris:~# zfs get all data_pool/docs | grep dedup data_pool/docs dedup off local root@solaris:~# zfs set compression=on data_pool/docs root@solaris:~# zfs set dedup=on data_pool/docs root@solaris:~# zfs get all data_pool/docs | grep dedup data_pool/docs dedup on local root@solaris:~# zfs get all data_pool/docs | grep compress data_pool/docs compression on local data_pool/docs compressratio 1.00x
Now, if the same file is copied, there is no change to the block due to deduplication saving space. Additional space is saved due to compression.
- Run the following commands to set permissions to allow access to the directory:
root@solaris:~# chown -R webservd:webservd /var/apache2/2.2/htdocs root@solaris:~# chmod -R 777 /var/apache2/2.2/htdocs/webhard
To set up HTTPS (SSL) communications, copy the
ssl.conffile to create a key and certificate. After the copying and configuration tasks are complete, restart the Web service.
root@solaris:~# cp /etc/apache2/2.2/sample-config.d/ssl.conf /etc/apache2/2.2/conf.d root@solaris:~# openssl genrsa -out server.key 2048 root@solaris:~# openssl req -new -key server.key -out server.csr root@solaris:~# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt root@solaris:~# cp server.* /etc/apache2/2.2 root@solaris:~# svcadm restart http:apache22
Note that due to limitations of the 32-bit PHP module, the file upload size is limited to 2 gigabytes. The upload limit is larger for a 64-bit module; unfortunately, only a 32-bit PHP module is available for Oracle Solaris for x86 platforms.
root@solaris:~# php -r 'echo PHP_INT_MAX;' 2147483647
- 32 bit: 2147483647 (= 2G)
- 64 bit: 9223372036854775807 (= 8388608T)
post_max_sizemust always be greater than or equal to
- When you are finished making changes, restart the service.
root@solaris:~# svcadm restart http:apache22
I installed and configured the
mod_secruityApache module for security. If desired, you can install and configure it using the following commands.
root@solaris:~# pkg install web/server/apache-22/module/apache-security root@solaris:~# cp /etc/apache2/2.2/sample-config.d/security2.conf /etc/apache2/2.2/conf.d
Connect to the Client
For a normal PC using a Web browser, the client connection and diagnostic messages are displayed first. Then, as shown in Figure 4, a security warning is displayed stating that the initial user ID and password are both admin. The password can be changed after the initial login.
In order to check and set the file size limit, select Settings and then select Global Configurations, Core Configs, Common 'uploader' plugins options, and Limitations. You can then see and change the file size, as shown in Figure 6.
- As shown in Figure 7, using a Web browser, you can use the Web storage.
As shown in the Figure 8 through Figure 12, you can use the storage in the same way using an Android-based smartphone or an iPhone.
A native application, which costs US$0.99, is available for accessing AjaXplorer through an iPhone or iPad.
As shown in Figure 13 through Figure 15, even without using that app, you can use a mobile Web browser to access the storage.
Check ZFS Compression and DeduplicationFile uploads and downloads are done brilliantly.
zpool listto verify that the deduplication and compression functions are working:
root@solaris:~# zpool list NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT data_pool 5.94G 28.2M 5.91G 0% 2.97x ONLINE - rpool 15.6G 4.01G 11.6G 25% 1.00x ONLINE - root@solaris:~# zfs list NAME USED AVAIL REFER MOUNTPOINT data_pool 20.0M 3.87G 36.0K /data_pool data_pool/docs 19.6M 3.87G 19.6M /var/apache2/2.2/htdocs/webhard
If a file is duplicated, the value shown under the
DEDUPcolumn in the output of the
zpool listcommand will be greater than 1.00x. In this example, the value is 2.97x, which means the file is compressed.
zfs listshows information about the file systems.