使用 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/imag…
$ tar -zxvf sequoiadb-3.2-linux_x86_64.tar.gz
$ cd sequoiadb-3.2/
$ sudo ./setup.sh
之后一直回车确认各个默认参数即可。
2)使用数据库实例用户创建默认实例
# 默认密码使用“sdbadmin”$ 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”$ 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/MediaBrows…
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 的分布式文件系统能力,流媒体服务器能够使后台的存储空间得到近无限的弹性扩展能力。