Swift实验
控制节点新添加一块20GB磁盘
新添磁盘分成两个区,并格式化
分区一:挂载到obs1目录
分区二:挂载到obs2目录
bash
[root@controller ~ 11:45:09]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xb5fb75bc.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +10G
Created a new partition 1 of type 'Linux' and of size 10 GiB.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-41943039, default 20973568):
Last sector, +sectors or +size{K,M,G,T,P} (20973568-41943039, default 41943039):
Created a new partition 2 of type 'Linux' and of size 10 GiB.
Command (m for help): p
Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb5fb75bc
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 20973567 20971520 10G 83 Linux
/dev/sdb2 20973568 41943039 20969472 10G 83 Linux
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
将两个分区格式化为xfs格式
bash
[root@controller ~ 11:46:01]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=655360 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=2621440, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@controller ~ 11:46:17]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=655296 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=2621184, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
下面为默认挂给swift的虚拟设备分区,将其卸载
bash
[root@controller ~ 11:46:21]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 0 loop /srv/node/swiftloopback
loop1 7:1 0 20.6G 0 loop
├─cinder--volumes-cinder--volumes--pool_tmeta
│ 253:3 0 20M 0 lvm
│ └─cinder--volumes-cinder--volumes--pool
│ 253:5 0 19.6G 0 lvm
└─cinder--volumes-cinder--volumes--pool_tdata
253:4 0 19.6G 0 lvm
└─cinder--volumes-cinder--volumes--pool
253:5 0 19.6G 0 lvm
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 199G 0 part
├─cs-root 253:0 0 70G 0 lvm /
├─cs-swap 253:1 0 3.9G 0 lvm [SWAP]
└─cs-home 253:2 0 125.1G 0 lvm /home
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 10G 0 part
└─sdb2 8:18 0 10G 0 part
sr0 11:0 1 12.8G 0 rom
bash
[root@controller ~ 11:46:25]# umount /srv/node/swiftloopback #卸载原来的swift虚拟设备分区
[root@controller ~ 11:48:57]# cd /srv/node #切换到swift目录
[root@controller node 11:49:04]# ls
swiftloopback
[root@controller node 11:49:05]# rm -rf swiftloopback/ #删除原来的swift挂载目录
[root@controller node 11:49:11]# mkdir ob1 ob2 #创建新的挂载目录,分别挂载sdb1,sbd2
配置挂载文件,将obs1--sdb1,obs2--sdb2分别挂载关联
bash
[root@controller node]# vim /etc/fstab #下面三行话,一句注释,两句添加
#/srv/loopback-device/swiftloopback /srv/node/swiftloopback ext4
noatime,nodiratime,nofail,loop,user_xattr 0 0
/dev/sdb1 /srv/node/obs1 xfs defaults 0 0
/dev/sdb2 /srv/node/obs2 xfs defaults 0 0
[root@controller node]# mount -a #挂载
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
[root@controller node]# df #查看现象
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 3904608 0 3904608 0% /dev
tmpfs 3924792 4 3924788 1% /dev/shm
tmpfs 3924792 17652 3907140 1% /run
tmpfs 3924792 0 3924792 0% /sys/fs/cgroup
/dev/mapper/cs-root 73364480 6867104 66497376 10% /
/dev/mapper/cs-home 131081692 946964 130134728 1% /home
/dev/sda1 1038336 234124 804212 23% /boot
tmpfs 784956 0 784956 0% /run/user/0
/dev/sdb1 10475520 106088 10369432 2% /srv/node/obs1
/dev/sdb2 10474496 106088 10368408 2% /srv/node/obs2
修改obs1目录和obs2目录权限
bash
[root@controller node]# chown swift:swift obs1
[root@controller node]# chown swift:swift obs2
[root@controller node]# ll
total 0
drwxr-xr-x 2 swift swift 6 Sep 29 14:04 obs1
drwxr-xr-x 2 swift swift 6 Sep 29 14:04 obs2
创建swfit ring:
bash
[root@controller node]# cd /etc/swift/
[root@controller swift]# ls
account.builder account-server.conf container-reconciler.conf containerserver.conf
object-expirer.conf object-server.conf swift.conf
account.ring.gz backups container.ring.gz internalclient.conf
object.ring.gz proxy-server
account-server container.builder container-server object.builder
object-server proxy-server.conf
[root@controller swift]# swift-ring-builder container.builder create --help
swift-ring-builder <builder_file> create <part_power> <replicas>
<min_part_hours>
Creates <builder_file> with 2^<part_power> partitions and <replicas>.
<min_part_hours> is number of hours to restrict moving a partition more
than once.
[root@controller swift]# swift-ring-builder container.builder create 12 2 1
[root@controller swift]# swift-ring-builder account.builder create 12 2 1
[root@controller swift]# swift-ring-builder object.builder create 12 2 1
#12表示ring分区数量为2^12
#2表示2个副本
#1表示最少1个小时后才能更改ring配置
创建ring映射关系:
bash
#查看配置文件,分别查看account,container,obeject的bind_port记录下来
[root@controller swift]# cat account-server.conf | grep bind_port
bind_port = 6002
[root@controller swift]# cat container-server.conf | grep bind_port
bind_port = 6001
[root@controller swift]# cat object-server.conf | grep bind_port
bind_port = 6000
[root@controller swift]# swift-ring-builder account.builder add z1-
192.168.108.10:6002/obs1 100
WARNING: No region specified for z1-192.168.108.10:6002/obs1. Defaulting to
region 1.
[root@controller swift]# swift-ring-builder account.builder add z2-
192.168.108.10:6002/obs2 100
[root@controller swift]# swift-ring-builder container.builder add z1-
192.168.108.10:6001/obs1 100
[root@controller swift]# swift-ring-builder container.builder add z2-
192.168.108.10:6001/obs2 100
[root@controller swift]# swift-ring-builder object.builder add z1-
192.168.108.10:6000/obs1 100
[root@controller swift]# swift-ring-builder object.builder add z2-
192.168.108.10:6000/obs2 100
再平衡:
bash
[root@controller swift]# swift-ring-builder account.builder rebalance
Reassigned 8192 (200.00%) partitions. Balance is now 0.00. Dispersion is now
0.00
[root@controller swift]# swift-ring-builder object.builder rebalance
Reassigned 8192 (200.00%) partitions. Balance is now 0.00. Dispersion is now
0.00
[root@controller swift]# swift-ring-builder container.builder rebalance
Reassigned 8192 (200.00%) partitions. Balance is now 0.00. Dispersion is now
0.00