1. Tổng quan.
OpenStack Swift có thể hoạt động như một dịch vụ lưu trữ đối tượng tương tự như Amazon S3. Swift và S3 đều là dịch vụ lưu trữ đối tượng, nghĩa là chúng được thiết kế để lưu trữ và truy xuất dữ liệu không cấu trúc như hình ảnh, video và các file khác.
Swift cung cấp API RESTful cho việc lưu trữ và truy xuất dữ liệu, tương tự như S3. Điều này có nghĩa là bạn có thể tương tác với Swift thông qua HTTP bằng cách sử dụng các phương thức như GET, PUT và DELETE.
Ngoài ra, Swift cũng hỗ trợ S3 API, điều này có nghĩa là bạn có thể sử dụng các công cụ và thư viện được thiết kế cho S3 để tương tác với Swift. Tuy nhiên, hỗ trợ này có thể không bao gồm tất cả các tính năng của S3, vì vậy bạn nên kiểm tra tài liệu của Swift để biết chi tiết.
2. Cài đặt Swift Client.
Bạn cần cài đặt swift command-line client trước khi bạn có thể sử dụng các lệnh liên quan đến OpenStack Swift Client. Bạn có thể cài đặt nó bằng cách chạy lệnh sau:
apt install python3-pip -y
pip install python-swiftclient python-keystoneclient
Sau khi cài xong bạn có thể xác minh cài đặt thành công bằng lệnh kiểm tra phiên bản của OpenStack Swift Client.
shell> swift --version
python-swiftclient 4.5.0
3. Xác thực với OpenStack Swift.
Đầu tiên, bạn cần thiết lập môi trường OpenStack bằng cách xuất các biến môi trường cần thiết. Bạn có thể làm điều này bằng cách chạy script openrc
mà bạn nhận được từ quản trị viên OpenStack của bạn.
File openrc.sh
thường chứa các biến môi trường cần thiết để tương tác với OpenStack thông qua CLI (Command Line Interface). Nó thường chứa các thông tin như tên người dùng, mật khẩu, dự án và URL của dịch vụ xác thực (Keystone).
Dưới đây là một ví dụ về nội dung trong file openrc.sh
:
cat > ./openrc.sh << 'OEF'
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
OEF
source ./openrc.sh
Trong đó:
OS_PROJECT_DOMAIN_NAME
vàOS_USER_DOMAIN_NAME
là tên của domain mà dự án và người dùng thuộc về.OS_PROJECT_NAME
là tên của dự án bạn muốn tương tác.OS_USERNAME
vàOS_PASSWORD
là tên người dùng và mật khẩu để xác thực với Keystone.OS_AUTH_URL
là URL của dịch vụ Keystone.OS_IDENTITY_API_VERSION
vàOS_IMAGE_API_VERSION
là phiên bản của API mà bạn muốn sử dụng.
Bạn cũng nên kiểm tra kết nối API Openstack đã đáp ứng chưa nhé.
shell> curl http://controller:5000/v3
{"version": {"id": "v3.14", "status": "stable", "updated": "2020-04-07T00:00:00Z", "links": [{"rel": "self", "href": "http://controller:5000/v3/"}], "media-types": [{"base": "application/json", "type": "application/vnd.openstack.identity-v3+json"}]}}
3. Các lệnh cơ bản.
Dưới đây là một số lệnh cơ bản thường được sử dụng với swift
command-line client.
Tạo một container mới.
Để tạo một bucket (được gọi là container trong OpenStack Swift) bạn có thể sử dụng Swift API hoặc swift command-line client.
swift post mycontainer
Trong đó mycontainer
là tên của container bạn muốn tạo.
Liệt kê tất cả các container.
shell> swift list
container1
container2
mycontainer
Xóa một container.
shell> swift delete mycontainer
mycontainer
Trong đó, mycontainer
là tên của container bạn muốn xóa.
Tải lên file vào một container.
Bạn có thể sử dụng lệnh swift upload
với tên của container và sau đó là danh sách các file hoặc thư mục bạn muốn tải lên.
Tạo để có danh sách file sau.
shell> cd /home
shell> touch myfile1.txt myfile2.txt myfile3.txt
shell> tree -f
.
├── ./myfile1.txt
├── ./myfile2.txt
├── ./myfile3.txt
└── ./openrc.sh
0 directories, 4 files
Ví dụ, để tải lên hai file
, myfile1.txt
myfile2.txt
và myfile3.txt
vào container mycontainer
, bạn có thể chạy lệnh sau:
shell> swift upload mycontainer myfile1.txt myfile2.txt myfile3.txt
myfile3.txt
myfile1.txt
myfile2.txt
Để tải lên một thư mục, bạn chỉ cần cung cấp tên của thư mục sau tên của container.
Tạo để có danh sách file sau.
shell> mkdir /home/myfolder
shell> cd /home/myfolder/
shell> touch myfile_in_folder1.txt myfile_in_folder2.txt myfile_in_folder3.txt
shell> tree /home/myfolder/
/home/myfolder/
├── myfile_in_folder1.txt
├── myfile_in_folder2.txt
└── myfile_in_folder3.txt
0 directories, 3 files
Ví dụ, để tải lên thư mục myfolder
vào container mycontainer
bạn có thể chạy lệnh sau:
shell> swift upload mycontainer /home/myfolder/
home/myfolder/myfile_in_folder3.txt
home/myfolder/myfile_in_folder2.txt
home/myfolder/myfile_in_folder1.txt
Lệnh trên sẽ tải lên tất cả các file trong thư mục myfolder
và các thư mục con của nó.
Nếu bạn muốn tải lên tất cả các file trong thư mục hiện tại, bạn có thể sử dụng .
thay vì tên của thư mục:
swift upload mycontainer .
Liệt kê tất cả các file trong một container.
shell> swift list mycontainer
home/myfolder/myfile_in_folder1.txt
home/myfolder/myfile_in_folder2.txt
home/myfolder/myfile_in_folder3.txt
myfile1.txt
myfile2.txt
myfile3.txt
Trong đó, mycontainer
là tên của container bạn muốn liệt kê các file.
Tải xuống một file từ một container.
Để tải xuống tất cả các file từ một container, bạn có thể sử dụng lệnh swift download
với tên của container.
Chuẩn bị thư mục lưu các file và thư mục của mycontainer
.
mkdir -p /home/download_mycontainer
cd /home/download_mycontainer/
Ví dụ, để tải xuống tất cả các file từ container mycontainer
, bạn có thể chạy lệnh sau:
shell> swift download mycontainer
myfile1.txt [auth 0.336s, headers 0.346s, total 0.346s, 0.000 MB/s]
home/myfolder/myfile_in_folder3.txt [auth 0.338s, headers 0.350s, total 0.351s, 0.000 MB/s]
myfile3.txt [auth 0.342s, headers 0.349s, total 0.350s, 0.000 MB/s]
home/myfolder/myfile_in_folder1.txt [auth 0.405s, headers 0.412s, total 0.412s, 0.000 MB/s]
myfile2.txt [auth 0.430s, headers 0.436s, total 0.436s, 0.000 MB/s]
home/myfolder/myfile_in_folder2.txt [auth 0.669s, headers 0.677s, total 0.678s, 0.000 MB/s]
Lệnh trên sẽ tải xuống tất cả các file trong container mycontainer
vào thư mục hiện tại.
shell> tree /home/download_mycontainer/
/home/download_mycontainer/
├── home
│ └── myfolder
│ ├── myfile_in_folder1.txt
│ ├── myfile_in_folder2.txt
│ └── myfile_in_folder3.txt
├── myfile1.txt
├── myfile2.txt
└── myfile3.txt
2 directories, 6 files
Nếu bạn muốn tải xuống một file cụ thể từ container, bạn có thể cung cấp tên của file sau tên của container. Ví dụ, để tải xuống file myfile.txt
từ container mycontainer
, bạn có thể chạy lệnh sau:
shell> swift download mycontainer myfile1.txt
myfile1.txt [auth 0.338s, headers 0.346s, total 0.346s, 0.000 MB/s]
Xóa một file từ một container.
shell> swift delete mycontainer myfile3.txt
myfile3.txt
Trong đó, mycontainer
là tên của container bạn muốn xóa file từ, và myfile3.txt
là file bạn muốn xóa.
xem thông tin của tài khoản OpenStack Swift.
Để xem thông tin của tài khoản OpenStack Swift, bạn có thể sử dụng lệnh swift stat
.
shell> swift stat
Account: AUTH_ef46fa05202a47fbb80e6fd67dfbd887
Containers: 3
Objects: 8
Bytes: 12716568
Containers in policy "policy-0": 3
Objects in policy "policy-0": 8
Bytes in policy "policy-0": 12716568
Content-Type: text/plain; charset=utf-8
X-Timestamp: 1710440509.64465
Accept-Ranges: bytes
Vary: Accept
X-Trans-Id: tx1d54fc29a0584967a2c79-0065f3bd17
X-Openstack-Request-Id: tx1d54fc29a0584967a2c79-0065f3bd17
Lệnh này sẽ trả về thông tin về tài khoản, bao gồm số lượng container, tổng số object và tổng dung lượng sử dụng.
Xem thông tin các lệnh của OpenStack Swift Client.
Sử dụng lệnhswift --help
để lệnh hiển thị hướng dẫn sử dụng cho công cụ dòng lệnh Swift, một giao diện dòng lệnh cho OpenStack Swift API.
Dưới đây là một số lệnh và tùy chọn quan trọng:
--version
: Hiển thị phiên bản của chương trình.--help
: Hiển thị hướng dẫn sử dụng.--os-help
: Hiển thị các tùy chọn xác thực OpenStack.--auth <auth_url>
: URL để lấy token xác thực.--user <username>
: Tên người dùng để lấy token xác thực.--key <api_key>
: Khóa để lấy token xác thực.--os-username <auth-user-name>
: Tên người dùng xác thực OpenStack.--os-password <auth-password>
: Mật khẩu xác thực OpenStack.
Các lệnh con bao gồm:
delete
: Xóa một container hoặc các đối tượng trong một container.download
: Tải các đối tượng từ các container.list
: Liệt kê các container cho tài khoản hoặc các đối tượng cho một container.post
: Cập nhật thông tin meta cho tài khoản, container, hoặc đối tượng; tạo các container nếu chúng không tồn tại.copy
: Sao chép đối tượng, tùy chọn thêm meta.stat
: Hiển thị thông tin cho tài khoản, container, hoặc đối tượng.upload
: Tải lên các tệp hoặc thư mục đến container đã cho.capabilities
: Liệt kê các khả năng của cụm.tempurl
: Tạo một URL tạm thời.auth
: Hiển thị các biến môi trường liên quan đến xác thực.bash_completion
: Xuất dữ liệu cli tùy chọn và cờ sẵn sàng cho bash_completion.
Các ví dụ và tùy chọn khác cũng được liệt kê trong hướng dẫn sử dụng.