Swift 大文件問題

大文件問題

官方在線文檔:http://docs.openstack.org/developer/swift/overview_large_objects.html

 

傳輸超過5G的大文件時,需要使用-S參數,指定將大文件分塊存儲,-S 指明瞭分塊的大小。例如:swift –V 2.0 –A http://localhost:5000/v2.0-U admin:admin -K adminpasswd upload test-container –S 1073741824 big_file

 

這個命令將文件big_file分塊傳輸,塊的大小爲1073741824字節,也就是1G。假如big_file大小爲10G,那麼客戶端(這裏指python-swiftclient)會將文件切分爲10塊,而且可以並行上傳這些分塊。

 

問題一:從上面的命令中可以看出,提供認證的keystone服務和swift部署在了同樣一臺服務器上,在upload階段,swift的account server會與keystone交互,大文件分塊並行上傳時,本地服務器帶寬幾乎被佔滿,很容易造成account server與keystone服務器交互發生超時,使得大文件上傳失敗。(proxy日誌中可看出)

解決思路:部署時將keystone和swift分開,keystone和swift的proxyserver之上都加一層負載均衡。

 

 

問題二:swift的data目錄下,有一個tmp目錄,用來臨時保存上傳的文件。問題一中的認證超時會造成若干文件塊上傳失敗,失敗後swift並不會將tmp目錄清空,與這次未成功的上傳相關的臨時文件沒有被刪除,這可能導致服務器存儲空間的大量浪費。

解決思路:改進swift object server

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章