操作系統(tǒng):Ubuntu 14.04.3 LTS
- 安裝依賴
sudo apt-get update
sudo apt-get install curl gcc memcached rsync sqlite3 xfsprogs \
git-core libffi-dev python-setuptools \
liberasurecode-dev
sudo apt-get install python-coverage python-dev python-nose \
python-xattr python-eventlet \
python-greenlet python-pastedeploy \
python-netifaces python-pip python-dnspython \
python-mock
- 為存儲創(chuàng)建分區(qū)
使用loopback
設(shè)備作為存儲
sudo mkdir /srv
sudo truncate -s 1GB /srv/swift-disk
sudo mkfs.xfs /srv/swift-disk
編輯分區(qū)表/etc/fstab
,添加如下一行
/srv/swift-disk /mnt/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0
- 創(chuàng)建掛在點和獨立的連接
sudo mkdir /mnt/sdb1
sudo mount /mnt/sdb1
sudo mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
sudo chown ${USER}:${USER} /mnt/sdb1/*
for x in {1..4}; do sudo ln -s /mnt/sdb1/$x /srv/$x; done
sudo mkdir -p /srv/1/node/sdb1 /srv/1/node/sdb5 \
/srv/2/node/sdb2 /srv/2/node/sdb6 \
/srv/3/node/sdb3 /srv/3/node/sdb7 \
/srv/4/node/sdb4 /srv/4/node/sdb8 \
/var/run/swift
sudo chown -R ${USER}:${USER} /var/run/swift
# **Make sure to include the trailing slash after /srv/$x/**
for x in {1..4}; do sudo chown -R ${USER}:${USER} /srv/$x/; done
- 添加一下幾行到
/etc/rc.local
中去
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
-
獲取代碼
- 下載
python-swiftclient
代碼
cd $HOME; git clone https://github.com/openstack/python-swiftclient.git
- 編譯并安裝
python-swiftclient
cd $HOME/python-swiftclient; sudo python setup.py develop; cd -
- 下載
swift
的代碼
git clone https://github.com/openstack/swift.git
- 編譯并安裝
swift
cd $HOME/swift; sudo pip install -r requirements.txt; sudo python setup.py develop; cd -
- 安裝
swift
測試相關(guān)的依賴
cd $HOME/swift; sudo pip install -r test-requirements.txt
- 下載
-
安裝
rsync
- 創(chuàng)建
/etc/rsyncd.conf
sudo cp $HOME/swift/doc/saio/rsyncd.conf /etc/ sudo sed -i "s/<your-user-name>/${USER}/" /etc/rsyncd.conf
- 修改
/etc/default/rsync
中的下面一行
RSYNC_ENABLE=true
- 在系統(tǒng)的
SELinux
是Enforcing
模式下執(zhí)行下面兩個命令中的一個
sudo setenforce Permissive
僅僅允許
rsync
的full
權(quán)限sudo setsebool -P rsync_full_access 1
- 啟動
rsync
sudo service rsync restart
- 驗證
rsync
是不是接受了所有的連接
rsync rsync://pub@localhost/
執(zhí)行上述命令模燥,應(yīng)該會看到
account6012 account6022 account6032 account6042 container6011 container6021 container6031 container6041 object6010 object6020 object6030 object6040
- 創(chuàng)建
啟動
memcached
sudo service memcached start
sudo chkconfig memcached on
8.(可選)為獨立的日志,啟動rsyslog
a. 安裝swift rsyslogd
的配置
shell sudo cp $HOME/swift/doc/saio/rsyslog.d/10-swift.conf /etc/rsyslog.d/
b. 編輯/etc/rsyslog.conf
中的下述配置
```shell
$PrivDropToGroup adm
```
c. 如果使用的是hourly logs
,則執(zhí)行下面的
```shell
sudo mkdir -p /var/log/swift/hourly
```
否則執(zhí)行
```shell
sudo mkdir -p /var/log/swift
```
d. 創(chuàng)建日志目錄,啟動syslog
shell sudo chown -R syslog.adm /var/log/swift sudo chmod -R g+w /var/log/swift sudo service rsyslog restart
-
配置每一個節(jié)點
a. (可選)刪除已經(jīng)存在的swift目錄
sudo rm -rf /etc/swift
b. 往
/etc/swift
中加配置文件cd $HOME/swift/doc; sudo cp -r saio/swift /etc/swift; cd - sudo chown -R ${USER}:${USER} /etc/swift
c. 在
Swift config
中更新<your-user-name>
引用find /etc/swift/ -name \*.conf | xargs sudo sed -i "s/<your-user-name>/${USER}/"
-
創(chuàng)建運(yùn)行Swift的腳本
a. 復(fù)制SAIO
腳本,重新設(shè)置環(huán)境mkdir -p $HOME/bin cd $HOME/swift/doc; cp saio/bin/* $HOME/bin; cd - chmod +x $HOME/bin/*
b. 編輯
$HOME/bin/resetswift
腳本echo "export SAIO_BLOCK_DEVICE=/srv/swift-disk" >> $HOME/.bashrc c. 安裝測試用的簡單配置文件 ```shell cp $HOME/swift/test/sample.conf /etc/swift/test.conf
d 添加運(yùn)行測試用的環(huán)境變量
echo "export SWIFT_TEST_CONFIG_FILE=/etc/swift/test.conf" >> $HOME/.bashrc
e 確保把
bin
目錄設(shè)置到環(huán)境變了中去echo "export PATH=${PATH}:$HOME/bin" >> $HOME/.bashrc
f. source 一下剛剛設(shè)置環(huán)境變量,使其生效
. $HOME/.bashrc
g. 創(chuàng)建初始化
rings
remakerings
h. xx
i. 運(yùn)行單元測試$HOME/swift/.unittests
j. 啟動
Swift
的主線程,分別包括(proxy, account, container, and object
)這幾個進(jìn)程startmain
k. 獲取
X-Storage-Url
和X-Auth-Token
curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:8080/auth/v1.0
l. 檢查能否獲得
account
curl -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-x-storage-url-above>
m. 檢查
python-swiftclient
提供的swift
命令是否可以用swift -A http://127.0.0.1:8080/auth/v1.0 -U test:tester -K testing stat
n. 驗證
unctional tests
的運(yùn)行$HOME/swift/.functests
o. 驗證
probe tests
的運(yùn)行$HOME/swift/.probetests