0
我知道Cassandra在線時可以拍攝快照。它的作用是在每個列族目錄中創建一個快照子目錄,並在其中放置一個列族的副本。但我不知道這是否可能,因爲根本沒有文件鎖定,或者如果快照指令只是在複製文件之前等待文件解鎖。在讀/寫期間,Cassandra是否將數據目錄中的文件鎖定?
有誰知道卡桑德拉如何與數據目錄中的文件進行交互?另外,行爲操作系統是否依賴?
我知道Cassandra在線時可以拍攝快照。它的作用是在每個列族目錄中創建一個快照子目錄,並在其中放置一個列族的副本。但我不知道這是否可能,因爲根本沒有文件鎖定,或者如果快照指令只是在複製文件之前等待文件解鎖。在讀/寫期間,Cassandra是否將數據目錄中的文件鎖定?
有誰知道卡桑德拉如何與數據目錄中的文件進行交互?另外,行爲操作系統是否依賴?
首先,要認識到,在Cassandra的數據目錄中的所有文件都寫一次是很重要的。沒有文件被修改過,它被創建,然後最終與其他人合併,然後被刪除。 (這是卡桑德拉如何得到如此良好的寫入性能,因爲所有的磁盤訪問寫入是連續的。)
的另一件事是,在拍攝快照不會複製該文件,它會創建一個硬鏈接。這是可行的,因爲這些文件是隻讀的,所以不需要複製。
因爲這些,沒有文件鎖定是必要的。
感謝。順便說一下,根據DataStax的[文檔](http://www.datastax.com/docs/1.2/operations/backup_restore):'如果啓用JNA,則快照由硬鏈接執行。如果未啓用,I/O活動隨着文件從一個位置複製到另一個,這顯著減少efficiency.' – klactose 2013-03-25 07:43:15
好點,但很不幸的是文檔不正確。我剛剛從源代碼中確認 - 文件不會被複制,有或沒有JNA。不同的是,如果沒有JNA,Cassandra需要運行包含叉的「ln」。這需要(暫時)足夠的內存來複制Cassandra的內存,因此即使在沒有JNA的健康環境中也可能會失敗。所以你應該安裝JNA,但不能避免複製。 – Richard 2013-03-25 08:10:12