X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=ManagingLNET.xml;h=a9843b653dd0f3615257bad6378ac1d60bf5289a;hb=refs%2Fchanges%2F33%2F21733%2F4;hp=c23136129706541cd65b31e2ad776052b63c03dc;hpb=9cc983c6ab2d9983fe0501f9c62775129e567a06;p=doc%2Fmanual.git diff --git a/ManagingLNET.xml b/ManagingLNET.xml index c231361..a9843b6 100644 --- a/ManagingLNET.xml +++ b/ManagingLNET.xml @@ -1,7 +1,7 @@ - - + Managing Lustre Networking (LNET) - This chapter describes some tools for managing Lustre Networking (LNET) and includes the following sections: + This chapter describes some tools for managing Lustre networking (LNET) and includes the + following sections: @@ -15,6 +15,9 @@ + + +
<indexterm><primary>LNET</primary><secondary>management</secondary></indexterm> @@ -43,7 +46,9 @@ </section> <section xml:id="dbdoclet.50438203_48703"> <title><indexterm><primary>LNET</primary><secondary>starting/stopping</secondary></indexterm>Starting and Stopping LNET - Lustre automatically starts and stops LNET, but it can also be manually started in a standalone manner. This is particularly useful to verify that your networking setup is working correctly before you attempt to start Lustre. + The Lustre software automatically starts and stops LNET, but it can also be manually + started in a standalone manner. This is particularly useful to verify that your networking + setup is working correctly before you attempt to start the Lustre file system.
Starting LNET To start LNET, run: @@ -51,7 +56,8 @@ $ lctl network up To see the list of local NIDs, run: $ lctl list_nids - This command tells you the network(s) configured to work with Lustre + This command tells you the network(s) configured to work with the Lustre file + system. If the networks are not correctly setup, see the modules.conf "networks=" line and make sure the network layer modules are correctly installed and configured. To get the best remote NID, run: $ lctl which_nid NIDs @@ -67,10 +73,15 @@ $ lctl network up
Stopping LNET - Before the LNET modules can be removed, LNET references must be removed. In general, these references are removed automatically when Lustre is shut down, but for standalone routers, an explicit step is needed to stop LNET. Run: + Before the LNET modules can be removed, LNET references must be removed. In general, + these references are removed automatically when the Lustre file system is shut down, but for + standalone routers, an explicit step is needed to stop LNET. Run: lctl network unconfigure - Attempting to remove Lustre modules prior to stopping the network may result in a crash or an LNET hang. if this occurs, the node must be rebooted (in most cases). Make sure that the Lustre network and Lustre are stopped prior to unloading the modules. Be extremely careful using rmmod -f. + Attempting to remove Lustre modules prior to stopping the network may result in a + crash or an LNET hang. If this occurs, the node must be rebooted (in most cases). Make + sure that the Lustre network and Lustre file system are stopped prior to unloading the + modules. Be extremely careful using rmmod -f. To unconfigure the LNET network, run: modprobe -r lnd_and_lnet_modules @@ -91,11 +102,15 @@ To remove all Lustre modules, run: LNET can work with multiple rails, however, it does not load balance across them. The actual rail used for any communication is determined by the peer NID. - Multi-rail LNET configurations do not provide an additional level of network fault tolerance. The configurations described below are for bandwidth aggregation only. Network interface failover is planned as an upcoming Lustre feature. + Multi-rail LNET configurations do not provide an additional level of network fault + tolerance. The configurations described below are for bandwidth aggregation only. A Lustre node always uses the same local NID to communicate with a given peer NID. The criteria used to determine the local NID are: + + Lowest route priority number (lower number, higher priority). + Fewest hops (to minimize routing), and @@ -107,8 +122,13 @@ To remove all Lustre modules, run:
- <indexterm><primary>LNET</primary><secondary>Infiniband load balancing</secondary></indexterm>Load Balancing with InfiniBand - A Lustre file system contains OSSs with two InfiniBand HCAs. Lustre clients have only one InfiniBand HCA using OFED Infiniband ''o2ib'' drivers. Load balancing between the HCAs on the OSS is accomplished through LNET. + <indexterm> + <primary>LNET</primary> + <secondary>InfiniBand load balancing</secondary> + </indexterm>Load Balancing with an InfiniBand<superscript>*</superscript> Network + A Lustre file system contains OSSs with two InfiniBand HCAs. Lustre clients have only one + InfiniBand HCA using OFED-based Infiniband ''o2ib'' drivers. Load + balancing between the HCAs on the OSS is accomplished through LNET.
<indexterm><primary>LNET</primary><secondary>lustre.conf</secondary></indexterm>Setting Up <literal>lustre.conf</literal> for Load Balancing To configure LNET for load balancing on clients and servers: @@ -121,20 +141,19 @@ To remove all Lustre modules, run: Dual HCA OSS server - options lnet networks="o2ib0(ib0),o2ib1(ib1) 192.168.10.1.[101-102] + options lnet networks="o2ib0(ib0),o2ib1(ib1)" Client with the odd IP address - options lnet networks=o2ib0(ib0) 192.168.10.[103-253/2] + options lnet ip2nets="o2ib0(ib0) 192.168.10.[103-253/2]" Client with the even IP address - options lnet networks=o2ib1(ib0) 192.168.10.[102-254/2] - + options lnet ip2nets="o2ib1(ib0) 192.168.10.[102-254/2]" Run the modprobe lnet command and create a combined MGS/MDT file system. @@ -162,7 +181,8 @@ oss# mount -t lustre mgs@o2ib0:/lustre /mnt/ost0 192.168.10.101@o2ib0,192.168.10.102@o2ib1:/mds/client /mnt/lustre - As an example, consider a two-rail IB cluster running the OFA stack (OFED) with these IPoIB address assignments. + As an example, consider a two-rail IB cluster running the OFED stack with these IPoIB + address assignments. ib0 ib1 Servers 192.168.0.* 192.168.1.* Clients 192.168.[2-127].* 192.168.[128-253].* @@ -204,7 +224,52 @@ ents" #even clients;\ o2ib1(ib0),o2ib2(ib1) 192.168.[2-253].[1-253/2) \ #odd clients" - This configuration includes two additional proxy o2ib networks to work around Lustre's simplistic NID selection algorithm. It connects "even" clients to "even" servers with o2ib0 on rail0, and "odd" servers with o2ib3 on rail1. Similarly, it connects "odd" clients to "odd" servers with o2ib1 on rail0, and "even" servers with o2ib2 on rail1. + This configuration includes two additional proxy o2ib networks to work around the + simplistic NID selection algorithm in the Lustre software. It connects "even" + clients to "even" servers with o2ib0 on + rail0, and "odd" servers with o2ib3 on + rail1. Similarly, it connects "odd" clients to + "odd" servers with o2ib1 on rail0, and + "even" servers with o2ib2 on rail1. +
+
+
+ <indexterm><primary>LNET</primary></indexterm>Dynamically Configuring LNET Routes + Two scripts are provided: lustre/scripts/lustre_routes_config and lustre/scripts/lustre_routes_conversion. + lustre_routes_config sets or cleans up LNET routes from the specified config file. /etc/sysconfig/lustre_routes.conf file can be used to automatically configure routes on LNET startup. + lustre_routes_conversion converts a legacy routes configuration file to the new syntax, which is parsed by lustre_routes_config. +
+ <indexterm><primary>LNET</primary></indexterm><literal>lustre_routes_config</literal> + lustre_routes_config usage is as follows + lustre_routes_config [--setup|--cleanup|--dry-run|--verbose] config_file + --setup: configure routes listed in config_file + --cleanup: unconfigure routes listed in config_file + --dry-run: echo commands to be run, but do not execute them + --verbose: echo commands before they are executed + The format of the file which is passed into the script is as follows: + network: { gateway: gateway@exit_network [hop: hop] [priority: priority] } + An LNET router is identified when its local NID appears within the list of routes. However, this can not be achieved by the use of this script, since the script only adds extra routes after the router is identified. To ensure that a router is identified correctly, make sure to add its local NID in the routes parameter in the modprobe lustre configuration file. See . +
+
+ <indexterm><primary>LNET</primary></indexterm><literal>lustre_routes_conversion</literal> + lustre_routes_conversion usage is as follows: + lustre_routes_conversion legacy_file new_file + lustre_routes_conversion takes as a first parameter a file with routes configured as follows: + network [hop] gateway@exit network[:priority]; + The script then converts each routes entry in the provided file to: + network: { gateway: gateway@exit network [hop: hop] [priority: priority] } + and appends each converted entry to the output file passed in as the second parameter to the script. +
+
+ <indexterm><primary>LNET</primary></indexterm><literal>Route Configuration Examples</literal> + Below is an example of a legacy LNET route configuration. A legacy configuration file can have multiple entries. + tcp1 10.1.1.2@tcp0:1; +tcp2 10.1.1.3@tcp0:2; +tcp3 10.1.1.4@tcp0; + Below is an example of the converted LNET route configuration. The following would be the result of the lustre_routes_conversion script, when run on the above legacy entries. + tcp1: { gateway: 10.1.1.2@tcp0 priority: 1 } +tcp2: { gateway: 10.1.1.2@tcp0 priority: 2 } +tcp1: { gateway: 10.1.1.4@tcp0 }