Π‘ΠΏΠΎΡΠ΅Π΄ : β ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ , ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ Amazon S3 API ΠΈ REST-API, ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° NFS ΡΡΡΠ²ΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ. ΠΠΌΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΡΠΎ Π½Π° ΠΌΠ°Π»ΠΊΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΈΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π½ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π΄Π°Π½Π½ΠΈ. Π¦Π΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΏΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° 99.9999999% Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ ΡΡΠ΅Π· ΠΈΠ·Π»ΠΈΡΠ½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΈ ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΎΡΠΊΠ°Π·. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Erlang.
LeoFS ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
- β ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅, ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ, ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π² ΠΎΠΏΠ°ΡΠΊΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
- β ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅ ΠΊΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° REST-API ΠΈΠ»ΠΈ S3-API, ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΠΉ-Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ°.
- β Π½Π°Π±Π»ΡΠ΄Π°Π²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ LeoFS Gateway ΠΈ LeoFS Storage, ΡΠ»Π΅Π΄ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π²ΡΠ·Π»ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠΌΠΈ. ΠΠ°ΡΠ°Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΈ Π²ΠΈΡΠΎΠΊΠ° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅.
Π ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ Leofs Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ansible-playbook ΠΈ ΡΠ΅ ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ S3, NFS.
ΠΠΊΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ LeoFS Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ, ΡΠ΅ ΡΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ: ,. Π ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΡΠ΅Π·ΠΈ Π³ΡΠ΅ΡΠΊΠΈ.
ΠΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ansible-playbook, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ netcat.
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·Π°ΡΠΈΡ
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΈΠ½Π²Π΅Π½ΡΠ°Ρ (Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ hosts.sample):
# Please check roles/common/vars/leofs_releases for available versions
[all:vars]
leofs_version=1.4.3
build_temp_path="/tmp/leofs_builder"
build_install_path="/tmp/"
build_branch="master"
source="package"
#[builder]
#172.26.9.177
# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_0]
172.26.9.176
# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_1]
172.26.9.178
[leo_storage]
172.26.9.179 leofs_module_nodename=S0@172.26.9.179
172.26.9.181 leofs_module_nodename=S0@172.26.9.181
172.26.9.182 leofs_module_nodename=S0@172.26.9.182
172.26.9.183 leofs_module_nodename=S0@172.26.9.183
[leo_gateway]
172.26.9.180 leofs_module_nodename=G0@172.26.9.180
172.26.9.184 leofs_module_nodename=G0@172.26.9.184
[leofs_nodes:children]
leo_manager_0
leo_manager_1
leo_gateway
leo_storageΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΡΡΡΠ²ΡΡΠ°
ΠΠ΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Selinux. ΠΠ°Π΄ΡΠ²Π°ΠΌ ΡΠ΅ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π° Selinux Π·Π° LeoFS.
- name: Install libselinux as prerequisite for SELinux Ansible module
yum:
name: "{{item}}"
state: latest
with_items:
- libselinux-python
- libsemanage-python
- name: Disable SELinux at next reboot
selinux:
state: disabled
- name: Set SELinux in permissive mode until the machine is rebooted
command: setenforce 0
ignore_errors: true
changed_when: false
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ netcat ΠΈ redhat-lsb-core. netcat Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° leofs-adm, redhat-lsb-core Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΠ‘ .
- name: Install Packages
yum: name={{ item }} state=present
with_items:
- nmap-ncat
- redhat-lsb-coreΠ‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ leofs ΠΈ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΌΡ ΠΊΡΠΌ Π³ΡΡΠΏΠ°ΡΠ° ΠΊΠΎΠ»Π΅Π»Π°
- name: Create user leofs
group:
name: leofs
state: present
- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: Add the user 'leofs' to group 'wheel'
user:
name: leofs
groups: wheel
append: yesΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Erlang
- name: Remote erlang-20.3.8.23-1.el7.x86_64.rpm install with yum
yum: name=https://github.com/rabbitmq/erlang-rpm/releases/download/v20.3.8.23/erlang-20.3.8.23-1.el7.x86_64.rpm
ΠΡΠ»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π°ΡΠ° ΠΊΠ½ΠΈΠ³Π° Π·Π° ΠΈΠ³ΡΠ° Π½Π° Ansible ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΡΠΊ:
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠΎ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π±Π΅Π· build_leofs.yml
## Install LeoFS
$ ansible-playbook -i hosts install_leofs.yml
## Config LeoFS
$ ansible-playbook -i hosts config_leofs.yml
## Start LeoFS
$ ansible-playbook -i hosts start_leofs.ymlΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π² Primary LeoManager
leofs-adm statusΠΡΡΠ²ΠΈΡΠ΅Π½ ΠΈ Π²ΡΠΎΡΠΈΡΠ΅Π½ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ansible-playbook


Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ
[System Confiuration]
-----------------------------------+----------
Item | Value
-----------------------------------+----------
Basic/Consistency level
-----------------------------------+----------
system version | 1.4.3
cluster Id | leofs_1
DC Id | dc_1
Total replicas | 2
number of successes of R | 1
number of successes of W | 1
number of successes of D | 1
number of rack-awareness replicas | 0
ring size | 2^128
-----------------------------------+----------
Multi DC replication settings
-----------------------------------+----------
[mdcr] max number of joinable DCs | 2
[mdcr] total replicas per a DC | 1
[mdcr] number of successes of R | 1
[mdcr] number of successes of W | 1
[mdcr] number of successes of D | 1
-----------------------------------+----------
Manager RING hash
-----------------------------------+----------
current ring-hash | a0314afb
previous ring-hash | a0314afb
-----------------------------------+----------
[State of Node(s)]
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
type | node | state | rack id | current ring | prev ring | updated at
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
S | S0@172.26.9.179 | running | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.181 | running | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.182 | running | | a0314afb | a0314afb | 2019-12-05 10:33:47 +0000
S | S0@172.26.9.183 | attached | | | | 2019-12-05 10:33:58 +0000
G | G0@172.26.9.180 | running | | a0314afb | a0314afb | 2019-12-05 10:33:49 +0000
G | G0@172.26.9.184 | running | | a0314afb | a0314afb | 2019-12-05 10:33:49 +0000
-------+----------------------+--------------+---------+----------------+----------------+----------------------------Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° leofs:
leofs-adm create-user leofs leofs
access-key-id: 9c2615f32e81e6a1caf5
secret-access-key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39ebΠ‘ΠΏΠΈΡΡΠΊ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅:
leofs-adm get-users
user_id | role_id | access_key_id | created_at
------------+---------+------------------------+---------------------------
_test_leofs | 9 | 05236 | 2019-12-02 06:56:49 +0000
leofs | 1 | 9c2615f32e81e6a1caf5 | 2019-12-02 10:43:29 +0000Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΡΠ°
ΠΠ°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΡΠ°
leofs-adm add-bucket leofs 9c2615f32e81e6a1caf5
OKΠ‘ΠΏΠΈΡΡΠΊ Ρ ΠΆΠ΅Π»Π°Π½ΠΈΡ:
leofs-adm get-buckets
cluster id | bucket | owner | permissions | created at
-------------+----------+--------+------------------+---------------------------
leofs_1 | leofs | leofs | Me(full_control) | 2019-12-02 10:44:02 +0000ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° s3cmd
Π ΠΎΠ±Π»Π°ΡΡΡΠ° HTTP Proxy server name ΠΏΠΎΡΠΎΡΠ΅ΡΠ΅ IP Π°Π΄ΡΠ΅ΡΠ° Π½Π° Gateway ΡΡΡΠ²ΡΡΠ°
s3cmd --configure
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key [9c2615f32e81e6a1caf5]:
Secret Key [8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb]:
Default Region [US]:
Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]:
Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: leofs
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:
When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [No]:
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name [172.26.9.180]:
HTTP Proxy server port [8080]:
New settings:
Access Key: 9c2615f32e81e6a1caf5
Secret Key: 8aaaa35c1ad78a2cbfa1a6cd49ba8aaeb3ba39eb
Default Region: US
S3 Endpoint: s3.amazonaws.com
DNS-style bucket+hostname:port template for accessing a bucket: leofs
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name: 172.26.9.180
HTTP Proxy server port: 8080
Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)
Now verifying that encryption works...
Not configured. Never mind.
Save settings? [y/N] y
Configuration saved to '/home/user/.s3cfg'ΠΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΡΠ° ERROR: S3 error: 403 (AccessDenied): Access Denied:
s3cmd put test.py s3://leofs/
upload: 'test.py' -> 's3://leofs/test.py' [1 of 1]
382 of 382 100% in 0s 3.40 kB/s done
ERROR: S3 error: 403 (AccessDenied): Access DeniedΠ‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ signature_v3 Π½Π° True Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° s2cmd. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π² ΡΠΎΠ²Π° .
ΠΠΊΠΎ signature_v2 Π΅ False, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΈΠΌΠ° Π³ΡΠ΅ΡΠΊΠ° ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ:
WARNING: Retrying failed request: /?delimiter=%2F (getaddrinfo() argument 2 must be integer or string)
WARNING: Waiting 3 sec...
WARNING: Retrying failed request: /?delimiter=%2F (getaddrinfo() argument 2 must be integer or string)
WARNING: Waiting 6 sec...
ERROR: Test failed: Request failed for: /?delimiter=%2FΠ’Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» ΠΎΡ 1 GB
fallocate -l 1GB 1gbΠΠ°ΡΠ΅ΡΠ΅ Π³ΠΎ Π² Leofs
time s3cmd put 1gb s3://leofs/
real 0m19.099s
user 0m7.855s
sys 0m1.620sΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
leofs-adm du Π·Π° 1 Π²ΡΠ·Π΅Π»:
leofs-adm du S0@172.26.9.179
active number of objects: 156
total number of objects: 156
active size of objects: 602954495
total size of objects: 602954495
ratio of active size: 100.0%
last compaction start: ____-__-__ __:__:__
last compaction end: ____-__-__ __:__:__ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎ.
ΠΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΡΠ΄Π΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ».
leofs-adm ΠΊΡΠ΄Π΅ΡΠΎ Π΅ leofs/1gb
leofs-adm whereis leofs/1gb
-------+----------------------+--------------------------------------+------------+--------------+----------------+----------------+----------------+----------------------------
del? | node | ring address | size | checksum | has children | total chunks | clock | when
-------+----------------------+--------------------------------------+------------+--------------+----------------+----------------+----------------+----------------------------
| S0@172.26.9.181 | 657a9f3a3db822a7f1f5050925b26270 | 976563K | a4634eea55 | true | 64 | 598f2aa976a4f | 2019-12-05 10:48:15 +0000
| S0@172.26.9.182 | 657a9f3a3db822a7f1f5050925b26270 | 976563K | a4634eea55 | true | 64 | 598f2aa976a4f | 2019-12-05 10:48:15 +0000ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ NFS
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌΠ΅ NFS Π½Π° ΡΡΡΠ²ΡΡΠ° Leo Gateway 172.26.9.184.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ nfs-utils Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
sudo yum install nfs-utilsΠ‘ΠΏΠΎΡΠ΅Π΄ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» /usr/local/leofs/current/leo_gateway/etc/leo_gateway.conf
protocol = nfsΠΠ° ΡΡΡΠ²ΡΡ 172.26.9.184 ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ rpcbind ΠΈ leofs-gateway
sudo service rpcbind start
sudo service leofs-gateway restartΠΠ° ΡΡΡΠ²ΡΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ leo_manager, ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠΎΡΠ° Π·Π° NFS ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠ»ΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ NFS
leofs-adm add-bucket test 05236
leofs-adm gen-nfs-mnt-key test 05236 ip-Π°Π΄ΡΠ΅Ρ-nfs-ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ NFS
sudo mkdir /mnt/leofs
## for Linux - "sudo mount -t nfs -o nolock <host>:/<bucket>/<token> <dir>"
sudo mount -t nfs -o nolock ip-Π°Π΄ΡΠ΅Ρ-nfs-ΡΠ΅ΡΠ²Π΅ΡΠ°-ΡΠ°ΠΌ-Π³Π΄Π΅-Ρ-Π²Π°Ρ-ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½-gateway:/bucket/access_key_id/ΠΊΠ»ΡΡ-ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ-ΠΎΡ-gen-nfs-mnt-key /mnt/leofs
sudo mount -t nfs -o nolock 172.26.9.184:/test/05236/bb5034f0c740148a346ed663ca0cf5157efb439f /mnt/leofsΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΡΠ΅Π· NFS ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ° 40GB Π΄ΠΈΡΠΊ (3 ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π²ΡΠ·Π΅Π»Π°, 1 ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ Π²ΡΠ·Π΅Π»):
df -hP
Filesystem Size Used Avail Use% Mounted on
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 60G 3.6G 57G 6% /mnt/leofsΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° LeoFS Ρ 6 Π²ΡΠ·Π»ΠΈ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅.
ΠΠ½Π²Π΅Π½ΡΠ°Ρ (Π±Π΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ):
# Please check roles/common/vars/leofs_releases for available versions
[all:vars]
leofs_version=1.4.3
build_temp_path="/tmp/leofs_builder"
build_install_path="/tmp/"
build_branch="master"
source="package"
# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_0]
172.26.9.177
# nodename of leo_manager_0 and leo_manager_1 are set at group_vars/all
[leo_manager_1]
172.26.9.176
[leo_storage]
172.26.9.178 leofs_module_nodename=S0@172.26.9.178
172.26.9.179 leofs_module_nodename=S0@172.26.9.179
172.26.9.181 leofs_module_nodename=S0@172.26.9.181
172.26.9.182 leofs_module_nodename=S0@172.26.9.182
172.26.9.183 leofs_module_nodename=S0@172.26.9.183
172.26.9.185 leofs_module_nodename=S0@172.26.9.185
[leo_gateway]
172.26.9.180 leofs_module_nodename=G0@172.26.9.180
172.26.9.184 leofs_module_nodename=G0@172.26.9.184
[leofs_nodes:children]
leo_manager_0
leo_manager_1
leo_gateway
leo_storageΠΠ·Ρ ΠΎΠ΄ leofs-adm ΡΡΡΡΠΎΡΠ½ΠΈΠ΅
ΠΠ·Ρ ΠΎΠ΄ leofs-adm ΡΡΡΡΠΎΡΠ½ΠΈΠ΅
[System Confiuration]
-----------------------------------+----------
Item | Value
-----------------------------------+----------
Basic/Consistency level
-----------------------------------+----------
system version | 1.4.3
cluster Id | leofs_1
DC Id | dc_1
Total replicas | 2
number of successes of R | 1
number of successes of W | 1
number of successes of D | 1
number of rack-awareness replicas | 0
ring size | 2^128
-----------------------------------+----------
Multi DC replication settings
-----------------------------------+----------
[mdcr] max number of joinable DCs | 2
[mdcr] total replicas per a DC | 1
[mdcr] number of successes of R | 1
[mdcr] number of successes of W | 1
[mdcr] number of successes of D | 1
-----------------------------------+----------
Manager RING hash
-----------------------------------+----------
current ring-hash | d8ff465e
previous ring-hash | d8ff465e
-----------------------------------+----------
[State of Node(s)]
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
type | node | state | rack id | current ring | prev ring | updated at
-------+----------------------+--------------+---------+----------------+----------------+----------------------------
S | S0@172.26.9.178 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:29 +0000
S | S0@172.26.9.179 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:29 +0000
S | S0@172.26.9.181 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:30 +0000
S | S0@172.26.9.182 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:29 +0000
S | S0@172.26.9.183 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:29 +0000
S | S0@172.26.9.185 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:29 +0000
G | G0@172.26.9.180 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:31 +0000
G | G0@172.26.9.184 | running | | d8ff465e | d8ff465e | 2019-12-06 05:18:31 +0000
-------+----------------------+--------------+---------+----------------+----------------+----------------------------ΠΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΊΠ°ΡΠΎ ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ° 40 GB Π΄ΠΈΡΠΊ (6 ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π²ΡΠ·Π΅Π»Π°):
df -hP
Filesystem Size Used Avail Use% Mounted on
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 120G 3.6G 117G 3% /mnt/leofsΠΠΊΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ 5 Π²ΡΠ·Π΅Π»Π° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅
[leo_storage]
172.26.9.178 leofs_module_nodename=S0@172.26.9.178
172.26.9.179 leofs_module_nodename=S1@172.26.9.179
172.26.9.181 leofs_module_nodename=S2@172.26.9.181
172.26.9.182 leofs_module_nodename=S3@172.26.9.182
172.26.9.183 leofs_module_nodename=S4@172.26.9.183df -hP
172.26.9.184:/test/05236/e7298032e78749149dd83a1e366afb328811c95b 100G 3.0G 97G 3% /mnt/leofsΠΠ½Π΅Π²Π½ΠΈΡΠΈ
ΠΠ½Π΅Π²Π½ΠΈΡΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /usr/local/leofs/current/*/log
Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ ΠΊΠ°Π½Π°Π»:
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com
