前情提要
時間拉回到 2013 年,KKBOX 在當年的 COSCUP 曾介紹過如何使用 MogileFS 這套 DFS(Distributed file systems),儲存其音樂服務的各種檔案。
Slide: 全台灣最宅的科科科技如何利用 MogileFS 儲存數千萬個音樂檔案
錄影:
現在的狀況
時隔三年,雖然各間雲端服務商都有提供可靠的儲存技術可以使用,但 KKBOX 還是繼續使用原本的 MogileFS 來儲存大量的音樂檔案,隨著串接的唱片及版權公司逐年增加,音檔數量一直不斷成長。2013 年突破 1,000 萬首,2016/8/1 最新公布的數字(賀!KKBOX曲庫國際級水準 擴增至超過3000萬首歌!)是 3,000 萬首,這是取得授權上架的數字,實際上 KKBOX 後端的曲庫數量是超過這個數字。
MogileFS 規模
- 儲存伺服器超過 75 台。
- 總硬碟超過 2,300 顆。
- 總儲存空間超過 10 PB。
- 使用 8 個機櫃。
Metadata Database
儲存檔案 Metadata 的 Database 技術沒有變化,依然使用 MySQL 搭配 Heartbeat 及 DRBD 達到 High Availability。
Tracker
Tracker 原本利用部分 storage server 分擔 replicate 工作,但遇到效能問題,所以改使用 4 台 dedicated 的伺服器負責 Tracker 角色。
每台 Tracker 都是兩張 1Gbps NIC 設定 802.3ad 模式的 Linux Bonding。
Storage Server 硬體規格
- 系統碟用 2 顆 500GB SATA 硬碟設定成 RAID 1。
- 36 顆 6TB WD 紅標硬碟儲存 MogileFS 檔案。
- 兩張 1Gbps NIC 利用 Linux Bonding Driver 設定標準 802.3ad 模式 LACP。
- 一台 storage server 有 200TB 的空間。
- 一機櫃 10 台 storage server 能提供 2PB 空間。
網路架構
- tracker 和 storage server 都是兩條 1Gbps LACP 接到 Top-of-Rack 的 L2 Switch。
- 每台 Top-of-Rack 都是兩條 10Gbps 光纖 LACP 到資料中心的 Core Router。
三年來的使用心得
優點
- 成本相較企業級儲存解決方案(NetApp, EMC, …)低。
- 容易擴充,KKBOX 從最一開始的 3 台 data node 逐漸成長到現在的超過 75 台。
- 直接使用 Nginx 的 WebDAV module 包裝磁碟讀寫行為,能提供很高的效能,實際使用上能輕易的吃滿 storage server 的 2Gbps 頻寬。
缺點
- 沒有自動 rebalance 的功能,在擴充容量後需要自行下指令 rebalance,讓各台間的磁碟使用量一致。
- MogileFS 策略上會優先往磁碟使用量低的 device 寫入新資料,在平常的寫入量就不低的情況下,新增的 data node 數量太少,就容易有磁碟 I/O 及網路傳輸瓶頸。
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
How does it compare with Hadoop HDFS?
Pingback: 使用 MogileFS 的一些經驗 | Hung-Yi Chen's blog
Pingback: KKBOX 的音樂檔案儲存技術 | kkb0x.c0des – ericdeng