安装于:UBUNTU64D 使用ubuntu12.04.1,包含eclipse+pydev。仅做为个人SAIO尝试安装的记录。以免后面忘记
安装环境为虚拟机,预分配8G空间磁盘,安装过程完成后虚拟磁盘直接拷贝出来备份,以免今后操作破坏环境而再次安装。
安装的结果并没有完全达到预期,仅仅是完成了一个基本可用的SAIO安装的swift。
===============================================================
root@aaron218VM1:/# apt-get install python-software-properties
正在读取软件包列表... 完成正在分析软件包的依赖关系树
正在读取状态信息... 完成
python-software-properties 已经是最新的版本了。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 14 个软件包未被升级。
大概是使用apt-get update/upgrade更新整个系统的时候完成了全部的更新
You are about to add the following PPA to your system:
More info: https://launchpad.net/~swift-core/+archive/release
Press [ENTER] to continue or ctrl-c to cancel adding it
gpg: 钥匙环‘/tmp/tmpX9D_3A/secring.gpg’已建立
gpg: 钥匙环‘/tmp/tmpX9D_3A/pubring.gpg’已建立
gpg: 下载密钥‘562598B4’,从 hkp 服务器 keyserver.ubuntu.com
gpg: /tmp/tmpX9D_3A/trustdb.gpg:建立了信任度数据库
gpg: 密钥 562598B4:公钥“Launchpad Swift Packages”已导入
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
OK
增加源
root@aaron218VM1:/# apt-get update
内容省略,中间会获取一些软件包,更新一些数据。有时候会有一些无法下载的问题,可以尝试重复执行命令。
root@aaron218VM1:/# apt-get install curl gcc git-core memcached python-coverage python-dev python-nose python-setuptools python-simplejson python-xattr sqlite3 xfsprogs python-eventlet python-greenlet python-pastedeploy python-netifaces python-pip
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
gcc 已经是最新的版本了。
python-simplejson 已经是最新的版本了。
将会安装下列额外的软件包:
git git-man liberror-perl libexpat1-dev libreadline5 libssl-dev libssl-doc
python-formencode python-openid python-paste python-pastescript python-scgi
python2.7-dev zlib1g-dev
建议安装的软件包:
git-daemon-run git-daemon-sysvinit git-doc git-el git-arch git-cvs git-svn
git-email git-gui gitk gitweb libcache-memcached-perl libmemcached
libjs-jquery-tablesorter python-dns python-greenlet-doc python-greenlet-dev
python-greenlet-dbg python-nose-doc python-pastewebkit libapache2-mod-wsgi
libapache2-mod-python libapache2-mod-scgi python-pgsql libjs-sphinxdoc
libjs-mochikit python-flup python-cherrypy python-cheetah sqlite3-doc
xfsdump attr quota
下列【新】软件包将被安装:
curl git git-core git-man liberror-perl libexpat1-dev libreadline5
libssl-dev libssl-doc memcached python-coverage python-dev python-eventlet
python-formencode python-greenlet python-netifaces python-nose python-openid
python-paste python-pastedeploy python-pastescript python-pip python-scgi
python-setuptools python-xattr python2.7-dev sqlite3 xfsprogs zlib1g-dev
升级了 0 个软件包,新安装了 29 个软件包,要卸载 0 个软件包,有 14 个软件包未被升级。
需要下载 42.6 MB 的软件包。
解压缩后会消耗掉 75.7 MB 的额外空间。
更新 安装所依赖的软件包,同样,如果出现错误,可以尝试重复执行命令。
root@aaron218VM1:/# pip install mock
Downloading/unpacking mock
Downloading mock-1.0.1.tar.gz (818Kb): 818Kb downloaded
Running setup.py egg_info for package mock
warning: no files found matching '*.png' under directory 'docs'
warning: no files found matching '*.css' under directory 'docs'
warning: no files found matching '*.html' under directory 'docs'
warning: no files found matching '*.js' under directory 'docs'
Installing collected packages: mock
Running setup.py install for mock
warning: no files found matching '*.png' under directory 'docs'
warning: no files found matching '*.css' under directory 'docs'
warning: no files found matching '*.html' under directory 'docs'
warning: no files found matching '*.js' under directory 'docs'
Successfully installed mock
Cleaning up...
安装mock,其后根据需要安装ssh等
root@aaron218VM1:~# mkdir /srv
root@aaron218VM1:/srv# dd if=/dev/zero of=/srv/swift-disk bs=1024 count=0 seek=1000000
root@aaron218VM1:/srv# mkfs.xfs -i size=1024 /srv/swift-disk
meta-data=/srv/swift-disk isize=1024 agcount=4, agsize=62500 blks
= sectsz=512 attr=2, projid32bit=0
data = bsize=4096 blocks=250000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0
log =internal log bsize=4096 blocks=1216, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =无 extsz=4096 blocks=0, rtextents=0
创建一个xfs的分区。
编辑文件 /etc/fstab 并写入
/srv/swift-disk /mnt/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0
root@aaron218VM1:/srv# mkdir /mnt/sdb1
root@aaron218VM1:/srv# mount /mnt/sdb1
root@aaron218VM1:/srv# mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
root@aaron218VM1:/srv# chown root:root /mnt/sdb1/*
root@aaron218VM1:/srv# for x in {1..4}; do ln -s /mnt/sdb1/$x /srv/$x; done
root@aaron218VM1:/srv# mkdir -p /etc/swift/object-server /etc/swift/container-server /etc/swift/account-server /srv/1/node/sdb1 /srv/2/node/sdb2 /srv/3/node/sdb3 /srv/4/node/sdb4 /var/run/swift
root@aaron218VM1:/srv# chown -R root:root /etc/swift /srv/[1-4]/ /var/run/swift
创建按照loopback方式创建的分区,并且分配目录和权限。
编辑文件 /etc/rc.local。并且在内容的exit 0 之前加入以下内容:
mkdir -p /var/cache/swift /var/cache/swift2 /var/cache/swift3 /var/cache/swift4 chown <your-user-name>:<your-group-name> /var/cache/swift* mkdir -p /var/run/swift chown <your-user-name>:<your-group-name> /var/run/swift
配置RSYNC
创建文件 /etc/rsyncd.conf 并加入一下内容:
uid = root gid = root log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 127.0.0.1 [account6012] max connections = 25 path = /srv/1/node/ read only = false lock file = /var/lock/account6012.lock [account6022] max connections = 25 path = /srv/2/node/ read only = false lock file = /var/lock/account6022.lock [account6032] max connections = 25 path = /srv/3/node/ read only = false lock file = /var/lock/account6032.lock [account6042] max connections = 25 path = /srv/4/node/ read only = false lock file = /var/lock/account6042.lock [container6011] max connections = 25 path = /srv/1/node/ read only = false lock file = /var/lock/container6011.lock [container6021] max connections = 25 path = /srv/2/node/ read only = false lock file = /var/lock/container6021.lock [container6031] max connections = 25 path = /srv/3/node/ read only = false lock file = /var/lock/container6031.lock [container6041] max connections = 25 path = /srv/4/node/ read only = false lock file = /var/lock/container6041.lock [object6010] max connections = 25 path = /srv/1/node/ read only = false lock file = /var/lock/object6010.lock [object6020] max connections = 25 path = /srv/2/node/ read only = false lock file = /var/lock/object6020.lock [object6030] max connections = 25 path = /srv/3/node/ read only = false lock file = /var/lock/object6030.lock [object6040] max connections = 25 path = /srv/4/node/ read only = false lock file = /var/lock/object6040.lock然后,在Ubuntu系统下,修改/etc/default/rsync文件,将RSYNCENABLE改成true
创建文件/etc/rsyslog.d/10-swift.conf,写入以下内容:
# Uncomment the following to have a log containing all logs together #local1,local2,local3,local4,local5.* /var/log/swift/all.log # Uncomment the following to have hourly proxy logs for stats processing #$template HourlyProxyLog,"/var/log/swift/hourly/%$YEAR%%$MONTH%%$DAY%%$HOUR%" #local1.*;local1.!notice ?HourlyProxyLog local1.*;local1.!notice /var/log/swift/proxy.log local1.notice /var/log/swift/proxy.error local1.* ~ local2.*;local2.!notice /var/log/swift/storage1.log local2.notice /var/log/swift/storage1.error local2.* ~ local3.*;local3.!notice /var/log/swift/storage2.log local3.notice /var/log/swift/storage2.error local3.* ~ local4.*;local4.!notice /var/log/swift/storage3.log local4.notice /var/log/swift/storage3.error local4.* ~ local5.*;local5.!notice /var/log/swift/storage4.log local5.notice /var/log/swift/storage4.error local5.* ~编辑文件/etc/rsyslog.conf,并修改以下内容
$PrivDropToGroup adm
root@aaron218VM1:/srv# mkdir -p /var/log/swift/hourly
root@aaron218VM1:/srv# chown -R syslog.adm /var/log/swift
root@aaron218VM1:/srv# chmod -R g+w /var/log/swift
root@aaron218VM1:/srv# service rsyslog restart
rsyslog stop/waiting
rsyslog start/running, process 3249
配置log服务并重启
获取代码并配置测试环境,下面的操作可以在来宾账户下面运行(或者其他需要开发测试的账户,本机上是aaron218)
aaron218@aaron218VM1:~$ mkdir ~/bin
aaron218@aaron218VM1:~$ git clone https://github.com/openstack/swift.git
Cloning into 'swift'...
remote: Counting objects: 16685, done.
remote: Compressing objects: 100% (4046/4046), done.
remote: Total 16685 (delta 12860), reused 16000 (delta 12373)
Receiving objects: 100% (16685/16685), 10.18 MiB | 688 KiB/s, done.
Resolving deltas: 100% (12860/12860), done.
aaron218@aaron218VM1:~$ cd ~/swift; sud