仮想化でラクをできている @snicker_jp です。
今回、VMのイメージバックアップでハマったので、その回避方法です。
前提条件
- ESXi 4.1
- NFS ストレージ
- バックアップ実行はESXiホスト
vmkfstoolsを使っているときに、
コマンド例:
vmkfstools -i [from_file] -d 2gbsparse [to_file]
Failed to clone disk : Reached the host's limit for open files (40). Destination disk format: sparse with 2GB maximum extent sizeと、エラーメッセージが出てクローンできませんでした。
vmkfstoolsの詳しいオプションなどはこちらのPDFから。
VMware Communities: 2gbsparse backup failures due to open...
http://communities.vmware.com/thread/327976
フォーラムの記事を見ると、
[ulimit -n 4096]付けたらいいよ!って。
ulimitコマンドのマニュアルはここを参照しました。
Linuxコマンド集 - 【 ulimit 】 コマンドに割り当てる資源を制限する:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230911/
そう、ESXiはデフォルトで
~ # ulimit -a
time(seconds) unlimited
file(blocks) unlimited
data(kb) unlimited
stack(kb) 512
coredump(blocks) 0
memory(kb) unlimited
locked memory(kb) unlimited
process 64
nofiles 256
vmemory(kb) unlimited
locks unlimited
ulimit -n
なので、
-n ファイル・ディスクリプタの数を最大N個に制限するという意味で、
nofiles 256の値が変われば、イケる!?
解説(間違っているかも)
私の解釈では、2GBのファイルが256個が限界(nofiles 256)2GB x 256 = 512GB
実際は、バックアップの時にスナップショットを作成するので、
512GB ÷ 2 = 256GB
vmdkファイルが、最大で256GBまでしか出来ないという解釈です。
vmdkのプロビジョニングで256GB以上のDiskを作っていたら、デフォルトのままだとバックアップが [2gbsparse] では取れないんです。
(thinとかにしたらいける。)
ESXi 4でも5でも、現時点ではvmdkの1ファイルが2TBを超えることが出来ないので、
ulimit -n 1024 とかでもいい気がします。
これで、回避できました。
参考リンク:
VMware Communities: 2gbsparse backup failures due to open...
http://communities.vmware.com/thread/327976
(thinとかにしたらいける。)
ESXi 4でも5でも、現時点ではvmdkの1ファイルが2TBを超えることが出来ないので、
ulimit -n 1024 とかでもいい気がします。
まとめ
最終的には、ulimitをつけてvmkfstoolsを実行すればいいとわかりました。ulimit -n 4096 && vmkfstools -i [from_file] -d 2gbsparse [to_file]
これで、回避できました。
参考リンク:
VMware Communities: 2gbsparse backup failures due to open...
http://communities.vmware.com/thread/327976