HA With BeeGFS 1
HA With BeeGFS 1
with BeeGFS
www.beegfs.com
HPC Admintech | 09.02.2017 | Ely de Oliveira
Agenda
Introduction High Availability
About Us Shared Storage
Key Aspects Buddy Mirroring
Archictecture
Conclusion
System Administration
Typical Administration Tasks
Advanced Configurations
Tools
BeeGFS is…
…a hardware-independent parallel file system Simply grow capacity
(aka Software-defined Storage)
File #1 and performance to the
…designed for performance-critical environments File #2 level that you need
File #3
1 4 7 2 5 8 3 6
1 4 2 3
3 2 5 1 4 7
2000 Clients
9 Servers
Basic Research
Seismic Data
Analytics
Maximum
High Robust &
Performance &
Flexibility Easy to use
Scalability
13000
25000
12000
20000
11000
MB/s
MB/s
15000 10000
9000
10000
8000
5000
7000
0 6000
0 5 10 15 20 25 24 48 96 192 384 768
Note: Absolute numbers in these cases depend on per-server hardware performance, of course.
500000
1200000
400000 1000000
CREATE/SEC
STAT/SEC
800000
300000
600000
200000
400000
100000
200000
0 0
1 2 4 6 8 10 12 14 16 18 20 1 2 4 6 8 10 12 14 16 18 20
# MDS # MDS
Create Stat
Note: Absolute numbers in these cases depend on per-server hardware performance, of course.
Storage Service
Stores user file contents (data chunk files)
One or multiple storage services per BeeGFS instance
Manages one or more storage targets
• In general, any directory on an existing local file system
• Typically a RAID volume, either internal or externally attached
Client Service
Native Linux module to mount the file system
server01
RAID
RAID
GENERAL USAGE:
$ beegfs-ctl --<modename> --help
$ beegfs-ctl --<modename> [mode_arguments] [client_arguments] Part of package
beegfs-utils
MODES:
--listnodes => List registered clients and servers.
--listtargets => List metadata and storage targets.
--removenode (*) => Remove (unregister) a node.
--removetarget (*) => Remove (unregister) a storage target.
--getentryinfo => Show file system entry details.
--find => Find files located on certain servers.
--migrate => Migrate files to other storage servers.
--serverstats => Show server IO statistics.
--clientstats => Show client IO statistics.
--userstats => Show user IO statistics.
--storagebench (*) => Run a storage targets benchmark.
--getquota => Show quota information for users or groups.
--setquota (*) => Sets the quota limits for users or groups.
--listmirrorgroups => List mirror buddy groups.
--addmirrorgroup (*) => Add a mirror buddy group.
...
High Availability with BeeGFS | 09.02.2017 | Ely de Oliveira
Listing registered nodes
client01:~ # beegfs-ctl --listnodes --nodetype=storage
server03 [ID: 3]
server04 [ID: 4]
server03 [ID: 3]
Ports: UDP: 8003; TCP: 8003
Interfaces:
+ ib0[ip addr: 10.12.20.3; type: RDMA] client01
+ ib0[ip addr: 10.12.20.3; type: TCP]
+ eth0[ip addr: 10.10.20.3; type: TCP]
server04 [ID: 4]
Ports: UDP: 8003; TCP: 8003
Interfaces:
+ ib0[ip addr: 10.12.20.4; type: RDMA]
+ ib0[ip addr: 10.12.20.4; type: TCP]
+ eth1[ip addr: 10.10.20.4; type: TCP]
Management
================
server01 [ID: 1]: reachable at 10.12.20.3:8008 (protocol: TCP)
Metadata
================
server02 [ID: 2]: reachable at 10.12.20.4:8005 (protocol: RDMA)
Storage client01
===============
server03 [ID: 3]: reachable at 10.12.20.3:8003 (protocol: RDMA)
server04 [ID: 4]: reachable at 10.12.20.4:8003 (protocol: RDMA)
METADATA SERVERS:
TargetID Pool Total Free InodesTotal InodesFree
======== ==== ===== ==== =========== ==========
2 [normal] 240.0GB 230.0GB 158.8M 148.7M
STORAGE TARGETS:
TargetID Pool Total Free InodesTotal InodesFree
======== =========== ===== ==== =========== ==========
301 [emergency] 9168.7GB 4.5GB 582.2M 87.2M
302 [low] 9168.7GB 102.5GB 582.2M 42.0M
401 [emergency] 9168.7GB 2.5GB 582.2M 75.2M
402 [normal] 9168.7GB 2112.5GB 582.2M 92.2M
tuneStorageSpaceLowLimit = 200G
Pools tuneStorageSpaceEmergencyLimit = 5G
Normal
Low
Emergency
server01 server02 server03 server04
--------------------------------------------------------------------
Started BeeGFS fsck in forward check mode [Mon Sep 29 21:47:57 2015]
Log will be written to /var/log/beegfs-fsck.log
Database will be saved as /var/lib/beegfs/beegfs-fsck.db
--------------------------------------------------------------------
Step 1: Check reachability of nodes: Finished
Step 2: Gather data from nodes:
Fetched data > Directory entries: 504598 | Inodes: 504598 | Chunks: 904831
Step 3: Check for errors...
* Target is used, but does not exist... Finished
* File has a missing target in stripe pattern... Finished
* Dentry-by-ID file is present, but no corresponding dentry... Finished
* Dentry-by-ID file is broken or missing... Finished
* Chunk is saved in wrong path... Finished
* Wrong owner node saved in inode... Finished
* Dentry points to inode on wrong node... Finished
...
Network
Network
Edit /etc/beegfs/beegfs-mounts.conf
Map each mountpoint to a different client config file client01
/fast /etc/beegfs/beegfs-client-fast.conf
mgmtd01 mgmtd02
/big /etc/beegfs/beegfs-client-big.conf
/fast
SSD SSD SSD SSD SSD
Create a separate directory in /etc/beegfs for each instance with config files
/etc/beegfs/fast.d
/etc/beegfs/big.d
More convenient
in future versions
14E8-53E4DE10-demo-io1
Ports: UDP: 18004; TCP: 0
Interfaces:
+ eth0[ip addr: 10.10.201.203; type: TCP]
FC13-53EB9471-demo-io2
Ports: UDP: 18004; TCP: 0
Interfaces: storage01
meta01
+ ib0[ip addr: 10.12.201.204; type: RDMA]
+ ib0[ip addr: 10.12.201.204; type: TCP]
+ eth1[ip addr: 10.10.201.204; type: TCP]
Number of nodes: 2
meta02 storage02
2000
MiB
1000
0
1 2 4 8 16 32 64 128
second mgmt01 meta01 storage01 storage02
====== 5 s ======
Sum 22967 [sum] 4720 [close] 65 [sAttr] 5706 [open] 2456 [stat] ...
client01 2847 [sum] 700 [close] 700 [open] 1447 [stat] ...
client02 2847 [sum] 700 [close] 700 [open] 1447 [stat] ...
meta01 1060 [sum] 1060 [close] ...
...
====== 10 s ======
Sum: 28138 [sum] 6511 [close] 1800 [open] 1804 [stat] 4 [sAttr] ...
client01 5803 [sum] 1403 [close] 1400 [open] ...
client02 5803 [sum] 1403 [close] 1400 [open] ...
meta01 2454 [sum] 2454 [close] ...
...
25000
client01 client02
open
20000 close
stat
15000
operations
sAttr
10000 fsstat
5000
0
client01 client02 meta02 mgmt01 meta01 storage01 storage02
====== 5 s ======
Sum: 60 [sum] 10 [close] 10 [open] 1 [sAttr] 6 [unlnk] ...
lucy 36 [sum] 3 [close] 3 [open] 4 [stat] 1 [unlnk] ...
root 12 [sum] 6 [stat] 4 [unlnk] ...
denis 8 [sum] 1 [sAttr] 3 [stat] ...
====== 10 s ======
Sum: 2314 [sum] 24 [close] 1 [create] ...
lucy 2029 [sum] 23 [close] 23 [open] ...
denis 16 [sum] 1 [close] 1 [create] ...
root 8 [sum] 4 [stat] ...
25000
client01 client02
open
20000 close
stat
15000
operations
sAttr
10000 fsstat
5000
0
lucy denis root mgmt01 meta01 storage01 storage02
3000
write
2000
MiB/s
read
1000
0
1 2 4 8 16 32 64 128
Threads mgmt01 meta01 storage01 storage02
client01 client02
4000
3000
write
2000
MiB/s
read
1000
0
1 2 4 8 16 32 64 128
Threads mgmt01 meta01 storage01 storage02
client
Management
Metadata Metadata Metadata
Metadata
Storage Storage Storage
Storage
# beegfs-ctl –listmirrorgroups
GroupID PrimaryTarget SecondaryTarget HDD HDD HDD
======= ============= ===============
1 101 202 HDD HDD HDD
2 201 302
3 301 102 storage01 storage02 storage03
mirrored unmirrored
File #1 File #3
File #2
HDD Target 101 HDD Target 201 HDD Target 202 HDD Target 302
1 3 5 7 9 2 4 6 8 1 3 5 7 9 2 4 6 8
1 2 3 4 1 2 3 4
4 8 1 5 4 8 3 7
Bad
Secondary
A resync failed Success? offline?
Alternative solution
DRDB volume for the management target
• The management service is not performance critical server02 client01
DRDB
HDD HDD
HDD HDD
Maximum
High Robust &
Performance &
Flexibility Easy to use
Scalability
“We‘ve seen BeeGFS performing very well and also saw its
easy and robustness – which we did not see in many other
“After many unplanned downtimes with our parallel file systems.“
previous parallel FS, we moved to BeeGFS - ClusterVision
more than 2 years ago. Since then we had no
unplanned downtimes anymore.“
- University of Halle, Germany
Newsletter