2013-03-09 77 views
1

我嘗試創建我的實例存儲服務器EC2無法創建AMI的實例存儲

的Ubuntu 12.10

ec2-bundle-vol \ 
--user $EC2_USER \ 
--privatekey $EC2_PRIVATE_KEY \ 
--cert $EC2_CERT \ 
--arch x86_64 \ 
--exclude /mnt,/tmp,/var/tmp \ 
--destination /mnt/bundles/$BUNDLE_NAME/ \ 
--prefix $BUNDLE_NAME 

Excluding: 
    /
    /proc 
    /sys 
    /sys/fs/fuse/connections 
    /sys/kernel/debug 
    /sys/kernel/security 
    /dev 
    /dev/pts 
    /dev 
    /media 
    /mnt 
    /proc 
    /sys 
    /etc/udev/rules.d/70-persistent-net.rules 
    /etc/udev/rules.d/z25_persistent-net.rules 
    /mnt 
    /tmp 
    /var/tmp 
    /mnt/bundles/130309 
    /mnt/img-mnt 
1+0 records in 
1+0 records out 
1048576 bytes (1.0 MB) copied, 0.0024517 s, 428 MB/s 
mke2fs 1.42.5 (29-Jul-2012) 
loop: can't delete device /dev/loop0: No such device or address 
Bundling image file... 
ERROR: can't convert Fixnum into String 

任何想法可能是錯誤的捆綁面臨的一個問題?

謝謝!

回答

0

dev目錄是devices目錄,因此您不應該能夠獲取副本,並且loop0是回送連接器,通常是對另一個已裝入文件系統的引用。

我注意到您排除行:

--exclude /mnt,/tmp,/var/tmp \ 

那你不直接排除/dev,但你排除/mnt所以我猜你不希望外部文件系統捲進你的形象。但/dev目錄在輸出中提到兩次,您是否嘗試過在您的命令行參數中明確排除/dev/dev/loop0/dev/loop*

+0

好吧,我只是降級我的系統到Ubuntu 12.04,一切開始工作。這個問題與loop0完全不相關,我認爲這與ubuntu 12上的ami packange有關。10 – potomok 2013-03-16 20:51:02

+0

僅供參考:我試圖明確排除'/ dev/loop0',但它沒有幫助。 – Gray 2014-03-07 17:55:20

0

從1.9下載到ruby 1.8或安裝ruby 1.8開始。似乎AMI工具不兼容1.9。

apt-get install ruby1.8 
+0

儘管我已經確認我已經運行1.8,但仍然出現此錯誤。 – Gray 2014-03-07 17:56:14

0

您可以應用此補丁並繼續使用ruby1.9。 看到原來的文章:ec2_upload_bundle and ruby 1.9: can't convert Fixnum into String(!非常感謝decodeideas

從原來的文章複製粘貼:

以下適用於以下scenari

  • Ubuntu的業力,EC2 AMI
  • ruby​​ 1.9.2安裝爲/ usr/bin/ruby​​
  • 最新的ec2工具

當您使用ec2_upload_bundle重新捆綁的AMI,你修改,你會得到錯誤

ERROR: can't convert Fixnum into String 

調試這是--debug傳遞到EC2命令的伎倆。解決方法是對的,你需要更改A.ord得到這一行/usr/lib/ec2-ami-tools/lib/ec2/amitools/util.rb 第19行:??

(0..19).inject("") {|ident, n| ident+(?A.ord + Kernel.rand(26)).chr} 

在做之前的變化可以用

ruby1.9 -r /usr/lib/ec2-ami-tools/lib/ec2/amitools/util -e 'puts gen_ident' 

重現該問題的申請,你應該得到的隨機 字母的短序列的補丁後。