使用SequoiaDB的分布式文件系统搭建流媒体服务器
介绍
如今使用移动互联网的年轻人开始越来越多使用短视频展示自我,而流媒体则是支撑在线视频播放的核心技术。当我们开始构建流媒体站点时,往往面临最大的难题在于大量媒体音视频文件所占用的海量磁盘空间。譬如说,一个标准高清短视频可能需要30-50MB的存储空间,那么存储百万短视频的系统就需要几十TB的存储。而如果我们更进一步需要播放高清电影等视频内容,每个电影需要大概2GB左右的空间,十万部各种电影剧集则需要200TB的存储容量。
为了满足如此海量的音视频文件存储需求,大部分流媒体服务器使用外接NAS甚至分布式文件系统进行PB级海量数据存储。
通过阅读本文,用户可以了解到如何使用SequoiaDB巨杉数据库的分布式文件系统功能,为开源流媒体服务器Emby构建后端可弹性扩展的分布式存储。
Emby是一款被广泛使用的流媒体服务器,允许用户简单一键式部署自己的视频播放系统,将家庭内部或企业存储的图片、音视频文件进行统一管理,并能够在几乎全部设备上在线播放观看。
用户可以在Emby的服务端设置服务器路径指定其所访问的文件系统。一般来说,使用PC机或NAS设备内置的磁盘存储容量有限,因此如果希望将Emby后端的存储使用分布式文件系统替换传统内置盘,可以使用SequoiaDB所提供的分布式文件系统SequoiaFS,提供用户近乎无限可弹性扩展存储容量。
安装SequoiaDB
本文使用Linux Ubuntu Server 18.10作为服务器,SequoiaDB巨杉数据库版本为3.2。
本教程默认使用sudo用户名密码为“sequoiadb:sequoiadb”,默认home路径为/home/sequoiadb。
对于使用CentOS等其他Linux版本的用户,本文所描述的流程可能略有不同,需要根据实际情况自行调整。
下载SequoiaDB标准虚拟机模板的用户可以直接跳过该安装部署步骤。
更多安装细节可以查看SequoiaDB信息中心
1) 下载并安装SequoiaDB巨杉数据库
$ wget http://cdn.sequoiadb.com/images/sequoiadb/x86_64/sequoiadb-3.2-linux_x86_64.tar.gz $ tar -zxvf sequoiadb-3.2-linux_x86_64.tar.gz $ cd sequoiadb-3.2/ $ sudo ./setup.sh |
之后一直回车确认各个默认参数即可。
2) 使用数据库实例用户创建默认实例
# 默认密码使用“sdbadmin” $ sudo su sdbadmin $ /opt/sequoiadb/tools/deploy/quickDeploy.sh |
3) 使用root用户创建SequoiaFS文件系统
# 确认fuse内核组件被安装,且版本大于2.9.4。 $ which fusermount /bin/fusermount $ fusermount -V fusermount version: 2.9.8 # 创建名为Nas.Storage的集合容器 $ /opt/sequoiadb/bin/sdb "db=new Sdb(); db.createCS('Nas'); db.Nas.createCL('Storage');" # 创建mountpoint挂载点目录 $ mkdir -p /opt/sequoiadb/mountpoint # 退出sdbadmin用户,回到默认sequoiadb用户 $ exit # 密码默认为“sequoiadb” $ sudo ln -s /opt/sequoiadb/bin/sequoiafs /usr/local/bin/sequoiafs # 为fuse内核开启多用户访问权限 $ sudo sed -i "s/\#user_allow_other/user_allow_other/g" /etc/fuse.conf # 创建sequoiafs所需的目录与空配置文件 $ sudo mkdir -p /opt/sequoiafs/conf/NasStorage/ $ sudo mkdir -p /opt/sequoiafs/log/NasStorage/ $ sudo touch /opt/sequoiafs/conf/NasStorage/sequoiafs.conf $ sudo chown -R sdbadmin:sdbadmin_group /opt/sequoiafs # 切换回数据库实例用户,密码默认为“sdbadmin” $ sudo su sdbadmin # 创建sequoiafs文件系统 $ sequoiafs /opt/sequoiadb/mountpoint -i localhost:11810 -l Nas.Storage --autocreate -c /opt/sequoiafs/conf/NasStorage/ --diagpath /opt/sequoiafs/log/NasStorage/ -o big_writes -o auto_unmount -o max_write=131072 -o max_read=131072 -o allow_other # 检查文件系统加载正确 $ mount sequoiafs on /opt/sequoiadb/mountpoint type fuse.sequoiafs (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001,allow_other,max_read=131072) |
安装Emby
本教程使用Emby版本为4.1.1。
1)登录Emby官网https://emby.media下载安装包
或登录sequoiadb用户,使用wget下载安装包
$ wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.1.1.0/emby-server-deb_4.1.1.0_amd64.deb |
2)安装Emby Server
# 密码默认使用“sequoiadb” $ sudo dpkg -i emby-server-deb_4.1.1.0_amd64.deb |
3)打开浏览器,登录Linux服务器8096端口
4)按照向导进行配置,用户名密码建议均使用sdbadmin
5)在添加媒体页面添加SequoiaFS挂载点作为外接分布式文件系统
6)在添加媒体库页面,内容类型选择Movies,输入显示名后点击目录旁边的“+”号
7)使用/opt/sequoiadb/mountpoint作为分布式文件系统挂载点路径,并点击OK
8)点击OK进入下一步配置
9)按照向导完成后续配置
上传并使用流媒体服务器
1)将电影视频拷贝入/opt/sequoiadb/mountpoint目录
sftp> put YourName.mp4 Uploading YourName.mp4 to /opt/sequoiadb/mountpoint/YourName.mp4 sftp> put 教父BD双语双字.mkv Uploading 教父BD双语双字.mkv to /opt/sequoiadb/mountpoint/教父BD双语双字.mkv # 文件系统中通过ls可以看到文件大小 $ pwd /opt/sequoiadb/mountpoint $ ls -la total 3978136 drwxr-xr-x 2 sdbadmin sdbadmin_group 4096 Jan 1 1970 . drwxr-xr-x 23 sdbadmin sdbadmin_group 4096 May 15 10:13 .. -rw-r--r-- 1 sdbadmin sdbadmin_group 761962089 May 15 11:03 YourName.mp4 -rw-r--r-- 1 sdbadmin sdbadmin_group 3311639424 May 15 11:12 教父BD双语双字.mkv |
2)在Emby首页的媒体库点击“刷新元数据”进行后台元数据同步
进入电影库可以看到上传的电影
3)点击电影可以在线播放
结论
SequoiaDB巨杉数据库作为一款分布式数据库,提供包括结构化SQL、与非结构化文件系统和对象存储的机制。
使用SequoiaDB的非结构化存储能力,用户可以轻松基于分布式文件系统接口构建多媒体应用程序,并保持与传统Posix文件系统的完整兼容。
本文向读者展示了如何通过SequoiaDB的文件系统接口能力构建与Posix文件系统兼容的分布式文件系统,同时搭建Emby流媒体服务器。通过使用基于SequoiaDB的分布式文件系统能力,流媒体服务器能够使后台的存储空间得到近无限的弹性扩展能力。