發表文章

目前顯示的是 10月, 2012的文章

使用Fabric 批量執行服務器任務

我們的服務器和虛擬機的環境配置都由puppet管理,但有時候需要臨時執行某些任務和操作,比如同時更換500台服務器的密碼、同時更新或者重啟500台虛擬機、在特定幾台服務器上添加或者一個用戶、上傳一個特定文件/腳本到1000台服務器等等。這些任務用Puppet可以做,但是不是最簡潔的辦法。我們需要一種工具能完成大量服務器上的批量操作,並且要簡單可編程,Fabric就是這樣一個基於Python的服務器批量管理庫/工具,Fabric使用ssh(通過paramiko庫)在多個服務器上批量執行任務,我們只需要用Python編寫這些任務腳本並指定要執行這些任務的服務器就可以了。 Fabric 依賴paramiko,所以需要安裝這兩個: $ sudo pip install fabric $ sudo pip install paramiko 編寫一個簡單的Fabric 例子,在1台服務器上打印系統信息(uname -s): $ vi fabfile.py #!/usr/bin/python from fabric.api import run def host_os(): run('uname -s') 在vpsee.com 這台主機(host)上使用root 帳戶執行上面的任務host_os: $ fab -H root@vpsee.com host_os [root@vpsee.com] Executing task 'host_os' [root@vpsee.com] run: uname -s [root@vpsee.com] Login password for 'root': [root@vpsee.com] out: Linux Done. Disconnecting from root@vpsee.com... done. 來看一個更複雜點的例子,在多個服務器(grid00, grid02, …, grid05)上更換root 密碼(假設原密碼是root),注意加上@parallel,這樣任務是並行執行的,在大量服務器上會快很多: #!/usr/bin/python # -*- coding: utf-8 -*- from fabric.api import * import st

Linux對稀疏(Sparse)文件的支持

稀疏(Sparse)文件可以節省大量的磁盤空間,目前很多文件系統都支持。下面介紹了Linux對稀疏(Sparse)文件的支持。 稀疏(Sparse)文件的創建 在EXT2/EXT3文件系統上可以使用dd創建稀疏文件: $ dd if=/dev/zero of=fs.img bs=1M seek=1024 count=0 0+0 records in 0+0 records out $ ls -lh fs.img -rw-rw-r-- 1 zhigang zhigang 1.0G Feb 5 19:50 fs.img $ du -sh fs.img 0 fs.img 使用C語言來創建一個稀疏文件的方法如下: $ cat sparse.c #include #include #include #include int main(int argc, char *argv[]) { int fd = open("sparse.file", O_RDWR|O_CREAT); lseek(fd, 1024, SEEK_CUR); write(fd, "\0", 1); return 0; } $ gcc -o sparse sparse.c $ ./sparse $ ls -l sparse.file -rx--x--- 1 zhigang zhigang 1025 Feb 5 23:12 sparse.file $ du sparse.file 4 sparse.file 使用python來創建一個稀疏文件的方法如下: $ cat sparse.py #!/usr/bin/env python f = open('fs.img', 'w') f.seek(1023) f.write('\n') $ python sparse.py $ ls -l fs.img -rw-rw-r-- 1 zhigang zhigang 1024 Feb 5 20:15 fs.img $ du fs.img 4 fs.img 文件稀疏化(sparsify) 下面的方法都可以將一個文件稀疏化。 cp: $ cp --sparse=always fil