рдЗрд╖реНрдЯрддрдо рднрдВрдбрд╛рд░рдг рдвреВрдВрдврдирд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЗрд╕рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рдкрд╛рд╕ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рдиреЗрддрд╛ CEPH рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓реА рдирд┐рд░рд░реНрдердХ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдореЗрдВ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╕реНрдЯрд░-рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЬрд┐рд╕ рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рдкрд░ рд╕рдмрд╕реЗ рдлреИрд╢рдиреЗрдмрд▓ рдЙрддреНрдкрд╛рдж рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдпреЛрдЬрдирд╛ рдХрд╛ рдХреЛрдИ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ рдерд╛, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рддреИрдирд╛рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛редрд▓рдХреНрд╖реНрдп
рдирдП рднрдВрдбрд╛рд░ рд╕реЗ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдереА:- рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХреА рдПрдХ рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
- рдЖрд╕рд╛рди рд╕реНрдерд╛рдкрдирд╛, рд╕реЗрдЯрдЕрдк, рд╕рдорд░реНрдерди
- рд╕рд┐рд╕реНрдЯрдо рд╡рдпрд╕реНрдХ, рд╕рдордп-рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдмрд┐рдирд╛ рднрдВрдбрд╛рд░рдг рд╕реНрдерд╛рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рднрдВрдбрд╛рд░рдг рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдиреЛрдбреНрд╕ рдХреЗ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
рдпрд╣ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╢реНрди рд╣реИрдВредрддреИрдирд╛рддреА
рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП, рджреЛ рдЖрднрд╛рд╕реА рдорд╢реАрдиреЗрдВ рд╕реЗрдВрдЯреЛ 8 рдкрд░ рдмрдирд╛рдИ рдЧрдИ рдереАрдВред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбрд┐рд╕реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИредрдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреИрдпрд╛рд░реА
GlusterFS рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ XFS рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗредрд╡рд┐рднрд╛рдЬрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ:$ fdisk /dev/sdb
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-16777215, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-16777215, default 16777215):
Created a new partition 1 of type тАШLinuxтАЩ and of size 8 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table. Syncing disks.
XFS рдФрд░ рдорд╛рдЙрдВрдЯ рдореЗрдВ рдкреНрд░рд╛рд░реВрдк:$ mkfs.xfs /dev/sdb1
$ mkdir /gluster
$ mount /dev/sdb1 /gluster
рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП / etc / fstab рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЫреЛрдбрд╝реЗрдВ:/dev/sdb1 /gluster xfs defaults 0 0
рд╕реНрдерд╛рдкрдирд╛
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХрдИ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рд╣рдо рд╕рд┐рд░реНрдл рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИредрджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░, рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг glusterfs рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рд░рди рдХрд░реЗрдВ:$ wget -P /etc/yum.repos.d https://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-rhel8.repo
$ yum -y install yum-utils
$ yum-config-manager --enable PowerTools
$ yum install -y glusterfs-server
$ systemctl start glusterd
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рдкрдбрд╝реЛрд╕реА рдХрд╣рд╛рдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдиреЛрдб рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдбреЛрдореЗрди рдиреЗрдЯрд╡рд░реНрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред$ gluster peer probe gluster-02.example.com
рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рдерд╛, рддреЛ рд╣рдо рджреЛрдиреЛрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:$ gluster peer status
Number of Peers: 1
Hostname: gluster-02.example.com
Uuid: a6de3b23-ee31-4394-8bff-0bd97bd54f46
State: Peer in Cluster (Connected)
Other names:
10.10.6.72
рдЕрдм рдЖрдк рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗредgluster volume create main replica 2 gluster-01.example.com:/gluster/main gluster-02.example.com:/gluster/main force
рдХрд╣рд╛рдБ рдкреЗ:- рдореБрдЦреНрдп - рдирд╛рдо рдорд╛рддреНрд░рд╛
- рдкреНрд░рддрд┐рдХреГрддрд┐ - рдкреНрд░рдХрд╛рд░ рдЦрдВрдб (рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ )
- 2 - рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
рд╡реЙрд▓реНрдпреВрдо рдЪрд▓рд╛рдПрдБ рдФрд░ рдЙрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рджреЗрдЦреЗрдВ:gluster volume start main
gluster volume status main
рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:$ gluster volume set main network.ping-timeout 5
$ gluster volume set main cluster.quorum-type fixed
$ gluster volume set main cluster.quorum-count 1
$ gluster volume set main performance.quick-read on
рдЗрди рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдПрдХ GlusterFS рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдпрд╛ рд╣реИред рдпрд╣ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдЙрдмрдВрдЯреВ рдХреНрд▓рд╛рдЗрдВрдЯ рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдмрдврд╝рддреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:$ add-apt-repository ppa:gluster/glusterfs-7
$ apt install glusterfs-client
$ mkdir /gluster
$ mount.glusterfs gluster-01.example.com:/main /gluster
рдЧреНрд▓рд╕реНрдЯрд░, рдЬрдм рдХрд┐рд╕реА рдПрдХ рдиреЛрдб рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЗ рдкрддреЗ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд╡рд┐рдлрд▓рддрд╛ рд░реБрдХ рдирд╣реАрдВ рдЬрд╛рдПрдЧреАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд╣рд▓рд╛ рдиреЛрдб рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рд╕рддреНрд░ рд╡рд┐рд░рд╛рдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдврд╝рддреЗ рд╕рдордп, рдЖрдк рдмреИрдХрдЕрдк рдиреЛрдб рдХреЛ рджреВрд╕рд░реЗ рдиреЛрдб рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредmount.glusterfs gluster-01.example.com:/main /gluster -o backupvolfile-server=gluster-02.example.com
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдЪрдордХ рдХреЗрд╡рд▓ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддреА рд╣реИ, рдпрджрд┐ рдЙрдирдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдорд╛рдЙрдВрдЯреЗрдб рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдерд╛ред рдпрджрд┐ рдЖрдк рд╕реАрдзреЗ рдиреЛрдбреНрд╕ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧреАредрдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдкреНрд░рд╢реНрди рд╢реБрд░реВ рд╣реБрдП: "рдЗрд╕реЗ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ?"ред рдФрд░ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВредHeketi
рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдПрдХ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ: рд╣реЗрдХреЗрдЯреАред рд╣реЗрдХреЗрдЯреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдФрд░ рдЪрдордХ рдХреЗ рдмреАрдЪ рдПрдХ рдкрд░рдд рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдмрдВрдзрди рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣реЗрдХреЗрдЯреА рдЕрд╕рдлрд▓рддрд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдмрд┐рдВрджреБ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рджреВрд╕рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓рд╛рдирд╛ рднреА рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рдбрд┐рд╕реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдиреБрдЪрд┐рдд рдирд┐рдХрд▓рд╛редKubernetes рдкрд░ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕рднреА GlusteFS рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╕реЗрд╡рд╛ рд▓рдЯрдХрд╛ рджреА рдЧрдИ рд╣реИ рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реЗрд╡рд╛ рдкрд░ рдЖрд░реЛрд╣рд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдб рдкрд░ рдЧреНрд▓рд╕реНрдЯрд░-рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреА рддреИрдирд╛рддреА рдХрд░реЗрдВ:apiVersion: v1
kind: Endpoints
metadata:
name: glusterfs-cluster
subsets:
- addresses:
- ip: 10.10.6.71
ports:
- port: 1
- addresses:
- ip: 10.10.6.72
ports:
- port: 1
---
apiVersion: v1
kind: Service
metadata:
name: glusterfs-cluster
spec:
ports:
- port: 1
рдЕрдм рд╣рдо рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдмрдврд╝рддреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:apiVersion: apps/v1
kind: Deployment
metadata:
name: gluster-test
spec:
replicas: 1
selector:
matchLabels:
app: gluster-test
template:
metadata:
labels:
app: gluster-test
spec:
volumes:
- name: gluster
glusterfs:
endpoints: glusterfs-cluster
path: main
containers:
- name: gluster-test
image: nginx
volumeMounts:
- name: gluster
mountPath: /gluster
рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╣рдореЗрдВ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдиреЛрдбреНрд╕ рдкрд░ рдХрдВрдЯреЗрдирд░-рд▓рд╛рдЗрдирдХреНрд╕ рд╣реИред рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрдврд╝рддреЗ рд╣реБрдП рдЧреНрд▓рд╕реНрдЯрд░-рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редGlusterFS + NFS + рдХреЛ рд░рдЦрд╛ рдЧрдпрд╛
рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рддрдХ, GlusterFS рдиреЗ рдЕрдкрдиреЗ NFS рд╕рд░реНрд╡рд░ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдереА, рд▓реЗрдХрд┐рди рдЕрдм NFS рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ nfs-ganesha рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПредрд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ /etc/yum.repos.d/nfs-ganesha.repo рдореЗрдВ рд╣рдо рдЬреЛрдбрд╝реЗрдВ:[nfs-ganesha]
name=nfs-ganesha
baseurl=https://download.nfs-ganesha.org/2.8/2.8.0/RHEL/el-8/$basearch/
enabled=1
gpgcheck=1
[nfs-ganesha-noarch]
name=nfs-ganesha-noarch
baseurl=https://download.nfs-ganesha.org/2.8/2.8.0/RHEL/el-8/noarch/
enabled=1
gpgcheck=1
рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:yum -y install nfs-ganesha-gluster --nogpgcheck
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд╝рд╛рдЗрд▓ /etc/ganesha/ganesha.conf рдореЗрдВ рдореВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред# create new
NFS_CORE_PARAM {
# possible to mount with NFSv3 to NFSv4 Pseudo path
mount_path_pseudo = true;
# NFS protocol
Protocols = 3,4;
}
EXPORT_DEFAULTS {
# default access mode
Access_Type = RW;
}
EXPORT {
# uniq ID
Export_Id = 101;
# mount path of Gluster Volume
Path = "/gluster/main";
FSAL {
# any name
name = GLUSTER;
# hostname or IP address of this Node
hostname="gluster-01.example.com";
# Gluster volume name
volume="main";
}
# config for root Squash
Squash="No_root_squash";
# NFSv4 Pseudo path
Pseudo="/main";
# allowed security options
SecType = "sys";
}
LOG {
# default log level
Default_Log_Level = WARN;
}
рд╣рдореЗрдВ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдПрдирдПрдлрд╝рдПрд╕ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рдЪрд╛рд▓реВ рд╣реИред$ systemctl start nfs-ganesha
$ systemctl enable nfs-ganesha
$ gluster volume set main nfs.disable off
$ gluster volume status main
рдирддреАрдЬрддрди, рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдПрдирдПрдлрдПрд╕ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдорд╛рдЙрдВрдЯ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредmkdir /gluster-nfs
mount.nfs gluster-01.example.com:/main /gluster-nfs
рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЧрд▓рдд рд╕рд╣рд┐рд╖реНрдгреБ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╡реАрдЖрдИрдкреА рдкрддрд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдпрд╛рддреНрд░рд╛ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрджрд┐ рдХреЛрдИ рдиреЛрдб рдЧрд┐рд░рддрд╛ рд╣реИ рддреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛редCentOs рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╕реНрдерд╛рдкрдирд╛ рддреБрд░рдВрдд рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред$ yum install -y keepalived
рд╣рдо рдлрд╝рд╛рдЗрд▓ /etc/keepalived/keepalived.conf рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:global_defs {
notification_email {
admin@example.com
}
notification_email_from alarm@example.com
smtp_server mail.example.com
smtp_connect_timeout 30
vrrp_garp_interval 10
vrrp_garp_master_refresh 30
}
#C , . , VIP .
vrrp_script chk_gluster {
script "pgrep glusterd"
interval 2
}
vrrp_instance gluster {
interface ens192
state MASTER # BACKUP
priority 200 # , 100
virtual_router_id 1
virtual_ipaddress {
10.10.6.70/24
}
unicast_peer {
10.10.6.72 #
}
track_script {
chk_gluster
}
}
рдЕрдм рд╣рдо рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдб рдкрд░ рд╡реАрдЖрдИрдкреА рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ:$ systemctl start keepalived
$ systemctl enable keepalived
$ ip addr
1: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:97:55:eb brd ff:ff:ff:ff:ff:ff
inet 10.10.6.72/24 brd 10.10.6.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 10.10.6.70/24 scope global secondary ens192
valid_lft forever preferred_lft forever
рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрд╕реЗрдиреНрдЯрд┐рд╡ рд╡реЙрд▓реНрдпреВрдо рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛ рд╣реИред---
apiVersion: v1
kind: PersistentVolume
metadata:
name: gluster-nfs
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: 10.10.6.70
path: /main
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gluster-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeName: "gluster-nfs"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gluster-test
labels:
app: gluster-test
spec:
replicas: 1
selector:
matchLabels:
app: gluster-test
template:
metadata:
labels:
app: gluster-test
spec:
volumes:
- name: gluster
persistentVolumeClaim:
claimName: gluster-nfs
containers:
- name: gluster-test
image: nginx
volumeMounts:
- name: gluster
mountPath: /gluster
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдореБрдЦреНрдп рдиреЛрдб рдХреЗ рдЧрд┐рд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░рд╣реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдФрд░ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдорд╛рдЙрдВрдЯ рдЧрд┐рд░ рдирд╣реАрдВ рдЬрд╛рддрд╛ред рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╢рд╛рдпрдж рд╣реА рдХрднреА рдорд┐рд▓реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛, рдФрд░ рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рд╕рд░рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗредрд╕рд╛рд░рд╛рдВрд╢
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЧреНрд▓рд╕реНрдЯрд░рдПрдлрдПрд╕ рдХреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 3 рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд╣рдорд╛рд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдпреЛрдЬрдХ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рддрдХ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдирдПрдлрдПрд╕ рдФрд░ рдЧреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмреАрдЪ рдПрдХ рд╣реА рдиреЛрдб рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред1 рдПрдордмреА рдкрд░ рдлрд╛рдЗрд▓реЗрдВ:sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
Gluster: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.63496 s, 407 MB/s
NFS: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.4527 s, 197 MB/s
1 рдХреЗрдмреА рдкрд░ рдлрд╛рдЗрд▓реЗрдВ:sync; dd if=/dev/zero of=tempfile bs=1K count=1048576; sync
Gluster: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 70.0508 s, 15.3 MB/s
NFS: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.95208 s, 154 MB/s
рдПрдирдПрдлрдПрд╕ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕реНрдкреАрдб рдЕрдВрддрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдЧреНрд▓рд╕реНрдЯрд░рдПрдлрдПрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдХрд┐ рдЫреЛрдЯреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдиреАрдЪрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдмрдбрд╝реЗ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде, рдПрдирдПрдлрдПрд╕ рдЧреНрд▓рд╕реНрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2-3 рдЧреБрдирд╛ рдХрдо рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред