《Windows Azure Platform 系列文章目录》
本地冗余存储(Locally Redundant Storage / LRS):
我们知道,Windows Azure Storage是支持三重备份的,也就是说,保存在Azure Storage的内容,会在同一个数据中心保留有3个副本。这样的好处显而易见:当数据中心发生一般性故障的时候,比如磁盘损坏,机架服务器损坏等,用户保存在Azure Storage的数据不会丢失。每次对于Storage的写操作,都会对三个副本进行同步写操作,等到在副本操作完毕之后,才会返回执行成功给客户端。但是,如果某个数据中心发生重大灾难时候(比如地震、台风等),也还是会造成数据中心部分数据丢失(这个在微软的服务协议许可SLA里有相关的说明)。这时候,地理冗余存储(Geo Redundant Storage) 就非常重要了.
地理冗余存储(Geo Redundant Storage / GRS)
地理冗余存储,我更喜欢把它称为跨数据中心的存储,能够提供更高级别的数据持久化。它可以将数据(主节点)复制到几百英里以外的另一个数据中心里(备用节点),(比如将东亚数据中心的数据,复制到东南亚数据中心里。这样即使东亚的数据完全损坏了,我们在东南亚还有备份。此时东亚成为主节点,东南亚成为备节点)。
一般情况下,主节点和备用节点的对应关系如下:
Primary |
Secondary |
North Central US |
South Central US |
South Central US |
North Central US |
East US |
West US |
West US |
East US |
North Europe |
West Europe |
West Europe |
North Europe |
South East Asia |
East Asia |
East Asia |
South East Asia |
目前来说,所有Azure Storage里的Blob和Table都支持地理冗余存储,但是Queue目前还不支持。使用了地理冗余存储,我们在主节电的数据进行了三重备份,同时备节电里也进行了三重备份。
对于地理冗余存储的数据更新是这样的。在主节点里,数据更新操作会在三个副本里同步进行。三个副本操作完毕后,返回执行成功给客户端。然后,Windows Azure会异步的将更新操作在备用节点里进行执行。
费用:
默认情况下,Azure Storage是使用地理冗余存储(Geo Redundant Storage)方式进行存储的。它的价格比本地冗余存储(Locally Redundant Storage)要便宜 贵。费用如下:
STORAGE CAPACITY | GEOGRAPHICALLY REDUNDANT | LOCALLY REDUNDANT |
---|---|---|
First 1 TB 1 / Month | $0.095 per GB | $0.07 per GB |
Next 49 TB / Month | $0.08 per GB | $0.065 per GB |
Next 450 TB / Month | $0.07 per GB | $0.06 per GB |
Next 500 TB / Month | $0.065 per GB | $0.055 per GB |
Next 4,000 TB / Month | $0.06 per GB | $0.045 per GB |
Next 4,000 TB / Month | $0.055 per GB | $0.037 per GB |
Over 9,000 TB / Month | Contact us | Contact us |
请注意:价格会进行调整,具体请查看http://www.windowsazure.com/en-us/pricing/details/storage/
当然,有些用户从自身角度出发,认为本地冗余存储(Locally Redundant Storage)安全性足够了,而且价格更加便宜,会倾向于使用本地冗余存储。
但是请注意:一旦你关闭地理冗余存储(使用本地冗余存储),但是将来某一天又打开了此功能。会由于数据从主节点到备份节点进行传输,而产生额外的数据传输的费用。
举个形象的例子:我一开始只使用本地冗余存储,存储保存在位于东亚的数据中心,数据量在20GB左右。某一天我想使用地理冗余存储功能。数据首先会从东亚出站,出站的数据流等同于我保存在数据中心的数据量,大概会产生出站20GB的费用。
从成本分析角度:假设我一开始使用本地冗余存储,数据量20GB,总成本是0.07*20GB=1.4USD,将来开启地理冗余存促,就需要再加上出站的费用=出站单价*20GB,总成本是0.07 USD *20GB+出站单价*20GB
假设我一开始就使用地理冗余存储,总成本是0.095*20GB=1.9USD
等到数据传输完毕后,此后由于地理冗余存储而产生的数据从主节点到备用节点的数据传输,将不会产生任何的费用。当然,如果你一开始就使用地理冗余存储,也不会产生额外费用。
从成本分析的角度上说,我建议对于那些并不重要的数据,比如日志文件、临时文件等,我建议采用本地冗余存储。这样存储的费用更便宜。