文章
服务器与存储管理
作者:Suk Kim
2013 年 4 月发布
Oracle Solaris 11 是一个非常强大的云操作系统。使用 Oracle Solaris 11,您将能够提供各种服务。例如,可以创建一个 AjaXplorer 可利用的存储,AjaXplorer 提供基于 Web 的文件访问。
|
本文介绍一个基于 PHP 的开源解决方案:使用 AjaXplorer、Oracle Solaris 11.1 和 Apache Web 服务器(尽管可以使用其他 Web 服务器)构建一个类似于 Dropbox 的基于云的存储服务。
当然,您也可以在 Microsoft Windows、Mac OS X 和 Linux 等操作系统中采用与 AjaXplorer 相同的方式构建存储。不过,使用 Oracle Solaris 11.1 时,您将能够利用 ZFS 以更强大、更安全的方式配置存储。
实现本文所描述的解决方案之后,您将能够使用任何 Web 浏览器访问基于 Web 的存储。而且,还可以使用 Android 和 Apple iOS 智能手机和平板电脑上的应用程序访问该存储。
可以使用 Oracle VM VirtualBox 在系统上安装 Oracle Solaris 11.1。如果系统上已经安装了 Oracle Solaris 11.1,可以直接使用。
以下是 Oracle VM VirtualBox 的系统要求:
注:如果未安装 Oracle VM Virtual Box,而是使用已经安装了 Oracle Solaris 11.1 的系统,该系统至少应有 1 GB 的内存(建议 2 GB)。本文所述的方法使用 Oracle VM VirtualBox 安装 Oracle Solaris 11.1。
执行以下步骤。
注:如果未安装 Oracle VM VirtualBox,可以在这里下载,然后可以参考 Oracle VM VirtualBox 用户手册 了解安装信息。还可以下载适用于 Oracle VM VirtualBox 的 Oracle Solaris 11.1 VM 映像 — 预安装的虚拟机,它提供了一种在 Oracle VM VirtualBox 中评估 Oracle Solaris 11 的简便方式,您可以参考此文章。

图 1. Oracle VM VirtualBox

图 2. 添加磁盘

图 3. 添加更多磁盘之后
su 命令切换到 root 用户。(从 Oracle Solaris 11 开始,您不能直接作为 root 登录;必须先以常规用户身份登录。)清单 1 中的命令创建一个名为 data_pool 的 ZFS 池作为 RAIDZ 卷,该卷使用三个磁盘:c7t2d0、c7t3d0 和 c7t4d0。然后在 data_pool 下创建 docs ZFS 文件系统。
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
清单 1
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
wget 命令从 sourceforge.net 下载 AjaXplorer:root@solaris:~# wget http://sourceforge.net/projects/ajaxplorer/files/ajaxplorer/stable-channel/4.2.3/ajaxplorer-core-4.2.3.tar.gz
root@solaris:~# tar xvfz /ajaxplorer-core-4.2.3.tar.gz
AjaXplorer 安装在 Apache 服务器的默认位置,即 /var/apache2/2.2/htdocs。
htdocs 目录下构造 Web 存储,继续操作如下。首先,创建 webhard 子目录:root@solaris:~# mkdir /var/apache2/2.2/htdocs/webhard
/var/apache2/2.2/htdocs/webhard 更改为 data_pool/docs,这是基于 Web 的存储: root@solaris:~# zfs set mountpoint=/var/apache2/2.2/htdocs/webhard data_pool/docs
如果您不想更改挂载点,可以通过修改 Apache 服务器配置实现同样的结果。
在操作中可以启用或关闭重复数据消除和压缩。加密(此处未使用)只能在创建卷时启用。卷加密后不能更改加密设置。
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
清单 2
现在,如果复制同一个文件,因为重复数据消除可以节省空间,数据块不会发生变化。压缩还可以节省额外的空间。
root@solaris:~# chown -R webservd:webservd /var/apache2/2.2/htdocs root@solaris:~# chmod -R 777 /var/apache2/2.2/htdocs/webhard
ssl.conf 文件创建密钥和证书。复制和配置任务完成后,重新启动 Web 服务。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
root@solaris:~# php -r 'echo PHP_INT_MAX;' 2147483647
因此,在 /etc/php/5.3/php.ini 中调整以下值:
memory_limit 设置为 128M。post_max_size 设置为 2G。upload_max_filesize 设置为 2G。注:post_max_size 必须始终大于或等于 upload_max_filesize。
root@solaris:~# svcadm restart http:apache22
mod_secruity Apache 模块。如果需要,可以使用以下命令安装和配置此模块。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

图 4. 安全警告

图 5. 连接到 AjaXplorer

图 6. 查看和更改文件大小限制

图 7. 通过浏览器使用 Web 存储
![]() 图 8. 适用于 iOS 的 AjaXplorer | ![]() 图 9. 服务器设置 |
![]() 图 10. 创建的服务器 | ![]() 图 11. 服务器连接 |
![]() 图 12. 文件访问 |
如图 13 至图 15 所示,即使不使用该应用程序,也可以使用移动 Web 浏览器访问存储。
![]() 图 13. 移动 Web 浏览器上的已连接屏幕 | ![]() 图 14. 移动 Web 浏览器上的登录屏幕 |
![]() 图 15. 在移动 Web 浏览器上访问文件 |
文件上载和下载很成功。
使用 zpool list 验证重复数据消除和压缩功能是否正常:
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
如果文件重复,zpool list 命令输出中的 DEDUP 列下显示的值将大于 1.00x。在本例中,值为 2.97x,这表示文件已压缩。
同时,zfs list 显示有关文件系统的信息。
Suk Kim 是韩国负责 Oracle Solaris 的 Oracle Ace 总监。他还是韩国 Oracle Solaris 用户网络主席、Oracle Solaris TechNet 管理员、Solaris School 社区管理员、Ansan 大学客座教授,以及 NoBreak Co., LTD. 的高级系统和安全顾问。
| 修订版 1.0,2013 年 4 月 25 日 |