Implementing Linux on IBM System z: Best Practices - August 2006
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
August 2006 Implementing Linux on IBM System z: Best Practices Jason C. Hortman Richard G. Young IBM Client Technology Center IBM Systems and Technology Group jhortman@us.ibm.com ryoung1@us.ibm.com
Implementing Linux on IBM System z: Best Practices TOC Table of Contents Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 2 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 2 1. A Brief Overview of Linux on System z (The why, what, and how of Linux on System z) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 3 1.1. Why Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 3 1.2. How Linux runs on the System z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 5 1.3. Software Packages Available for Linux on System z . . . . . . . . . . . . . . . . . . . . . . Page 5 2. Installation of Linux on System z – A Brief Overview . . . . . . . . . . . . . . . . . . . . . . Page 7 2.1. Know your objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 7 2.2. Choose a distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 7 2.3. Choose a hosting configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 8 2.4. System z Host Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 9 2.5. Post Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 10 3. Linux Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 11 3.1. Basic System Administration Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 11 3.2. Advanced System Administration Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 13 4. Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 16 4.1. Network Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 16 4.2. Linux System Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 17 5. WebSphere Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 18 5.1. Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 18 5.2. Installing WebSphere Family Products on Linux on System z . . . . . . . . . . . . . . Page 18 5.3. Best Practices for WebSphere on Linux for System z . . . . . . . . . . . . . . . . . . . Page 19 6. Creating a Highly Available Environment with Linux for System z . . . . . . . . . . . . Page 21 6.1. The Definition of High Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 21 6.2. Hardware Failure Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 22 6.3. Software Failure Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 23 7. Virtualization Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 27 7.1 Basic z/VM Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 27 8. Monitoring and Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 28 8.1. Recommended Monitoring tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 28 8.2. Performance Tuning Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 31 9. Customer Case Study . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 34 Customer XYZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 34 Appendix A – External Materials and Web sites Referenced in this White paper . . . . Page 36 Section 1: A Brief Overview of Linux on System z . . . . . . . . . . . . . . . . . . . . . . . . . Page 36 Section 2: Installation of Linux on System z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 36 Section 3: Linux Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 36 Section 4: Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 36 Section 5: WebSphere Application Server on Linux for System z . . . . . . . . . . . . . . . . Page 37 Section 6: Creating a Highly Available Environment with Linux for zSeries . . . . . . . . . Page 37 Section 7: Virtualization Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 37 Section 8: Monitoring and Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 37 Additional Helpful Reference Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Page 38
Implementing Linux on IBM System z: Best Practices Page 2 Abstract This purpose of this paper is twofold. First, we have attempted to draw from customer experiences and the latest IBM System z™ solutions to present best practices information for a Linux® on System z installation, and more specifically a Linux installation on System z that will support a WebSphere® environment. Second, we recognize that a great deal of documentation and assistance already exists and is available on the Internet for Linux on System z installations, but can be difficult to locate whenever you need it. In recognition of that fact, the second purpose of this paper is to serve as a “reference hub” to help a customer locate the documentation (Redbook™, Redpaper, IBM Manual, etc.) for a particular issue or product he or she is looking for. This paper represents general “best practices” information for all implementations of Linux on System z, but when conflicts have arisen regarding recommendations that might be better for one Linux configuration versus another, preferential consideration has been given to those recommendations which would be most beneficial and appropriate in a typical Linux on System z installation that supports a WebSphere environment. As the term “best practices” implies, the recommendations outlined in this paper are intended to be starting points: guidelines for building and/or tuning a System z Linux environment. As such, the effectiveness of some of these recommendations will vary from one environment to another. We have attempted to note how each guideline can vary based on environment, but practical experience in your own environment is the best teacher. The most effective application of this paper and the documents referenced herein will come when you combine the guidelines given with your own experience, gleaned from your environment. Also, it would be virtually impossible to mention every aspect of Linux on System z, or to mention every option available for a given scenario, in this one paper. The guidelines and discussion presented in this paper are intended to be a starting point. Please contact the authors for additional assistance or questions regarding any topics presented here. Finally, some notes of clarification: When a sentence contains a specific “best practice” recommendation, that sentence is italicized. Also, links to specific IBM documentation are listed in this paper as hyperlinks. With that said, let’s start the fun! Acknowledgements Our sincere thanks to those who have graciously given of their time to contribute to this paper: Phil Anselm Steve Wehr Carlos Ordonez Eva Yan Jon vonWolfersdorf Stanley Jones Kevin Curley Romney White
Implementing Linux on IBM System z: Best Practices Page 3 1. A Brief Overview of Linux on System z (The why, what, and how of Linux on System z) Linux is one of the fastest growing operating systems in the world. Over the past few years, that growth has expanded to include adoption by enterprise customers in their vital application hosting environments. This first section is a brief overview of why IBM believes customers are choosing to implement Linux on System z in their organizations. The assumption is made that the reader of this paper has a basic to moderate understanding of Linux and the System z platform. For a thorough introduction to the basics of Linux and the System z platform, please see the Redbook Linux for zSeries and S/390®, document number SG24-4987. 1.1. Why Linux? Before getting into the technical details of Linux on System z, it is important to understand why IBM believes businesses choose Linux as their enterprise platform of choice. If the main “selling point” of Linux on System z was technological curiosity, or the novel concept of having open source software running on what used to be a purely proprietary hardware platform, then Linux would probably not have gotten to its current place and degree of acceptance. There must be some driving reason, some vital business need, for which a Linux solution makes the most business sense. In fact, there are a plethora of reasons that customers may choose a Linux on System z solution. Not all of the reasons listed below hold true in every situation, but at least one of these reasons usually applies. • Helping to Make e-business Infrastructure Simpler and More Efficient In the on demand business world that your organization operates in today, simpler is typically better when referring to infrastructure. Get the job done as well as possible, while keeping it as simple as possible. After all, the infrastructure is not supposed to be the star of your show – it’s the business application that runs your business! (Pardon the pun.) As long as your applications are up and available to customers and business partners, the infrastructure that runs those applications is less important. In recognition of this fact, many customers are looking at how their on demand business infrastructure can better integrate into their critical business data flow. If a customer’s critical business data already lies on the System z platform (in a z/OS® environment), hosting their primary e-business applications on Linux for System z can be a natural, cost-effective step towards simplifying their e-business environment. When an application running on a distributed server is moved to the System z environment, less end-to-end network “hops” are required (helping to reduce overall response time), and the business application can access the critical business data at memory-bus access speeds (Gigabytes per second). These potential savings are usually non-trivial, and can make strategic, long-term sense for a business looking to simplify overall infrastructure. • In addition, Linux on System z can provide easy integration into a corporate-wide Linux adoption policy. For those workloads which might make more sense to run on a distributed platform, for example, Linux on an Intel® processor-based machine is available, and is operationally virtually identical to a Linux on System z machine. (That is, any application
Implementing Linux on IBM System z: Best Practices Page 4 that will run on a Linux on System z machine is expected to run unchanged on a Linux/Intel machine – in the vast majority of cases it will simply have to be recompiled.) This cross-platform compatibility also makes Linux a clearly strategic choice for organizations looking to simplify their overall IT infrastructure and make more efficient use of the server management team’s efforts. • Helping to Ease Integration Into a High Availability Environment Most organizations are looking to make their production environments highly available in the on demand world, and hosting your line-of-business applications on Linux for System z can help make the path to high availability straighter and shorter for your environment. An in-depth discussion of high availability is included in section 6 below, but the main value proposition that Linux on System z brings to the HA discussion is the ability to integrate with current HA and disaster recovery plans that already exist for the traditional z/OS environment. This includes participation in a Geographically Dispersed Parallel Sysplex™ (GDPS®) and backup and recovery using tools in an existing z/OS system. Or, if your organization has had a pre-existing z/VM® system prior to Linux on System z being installed, then the HA integration may be even easier. There are many considerations when implementing a HA environment, of course, and those considerations are discussed in more detail in section 6. • Server Consolidation and Total Cost of Ownership Wait! Before you tune out this section and move on thinking, “Here we go again with the old ‘TCO argument’,” let me explain the server consolidation concept and value-add it brings as clearly as we can. Many distributed servers (Linux, UNIX®, or otherwise) can be consolidated onto one System z machine, which can lead to substantial cost savings. In fact, many Linux on System z customers have done just this, and realized substantial TCO cost savings. If your server farm of 100-200 distributed servers can be consolidated onto 1 or 2 System z machines hosting 50-60 virtual Linux servers in a highly available environment that is highly scalable as your business grows, then that consolidation effort may mean a savings in systems management overhead, computer resource overhead, and turnaround time overhead for scaling and implementing new environments. • The simple fact that server consolidation can be done, however, does not mean that it should be done in every case. If your current distributed production environment uses 100% of an 8-way modern UNIX server, for example, it would be unwise to expect to consolidate that application with 5 or 10 others onto a 3-way System z machine (an 8 or 10 way System z machine might be more appropriate for that situation). If, however, your production application peaks at 30-40% of that 8-way server, and the other 5-10 applications use marginal amounts (5-10%) of each of their own distributed servers, then you might have a better case for consolidation onto a System z machine with 3 or more IFLs. (This would be particularly true if those applications were WebSphere applications, and some or most of them could be consolidated onto one WebSphere instance in the Linux on System z environment.) There are many permutations to the sever consolidation argument that can be discussed. Each organization’s environment is unique, however, and the bottom line is that a server consolidation study should be undertaken with both eyes open, with the assistance of the IBM server consolidation experts. These experts, including the SIZE390 team (who do sizing estimates for workloads of all kinds) and teams that specialize in server consolidation and enterprise infrastructure assessment studies (called “scorpion” teams) can be engaged by your local IBM client team and IBM Techline. In addition, a more thorough discussion of server consolidation on Linux on System z can be found in Redpaper REDP0222, entitled Linux on IBM zSeries and S/390: Server Consolidation with Linux for zSeries.
Implementing Linux on IBM System z: Best Practices Page 5 1.2. How Linux runs on the System z The most important facet of Linux on System z to understand is that Linux on System z is a native implementation of the OS. That is, Linux can run on the “bare hardware” of the System z machine without any special software or support required. The hosting options for Linux on System z that are mentioned below (namely, LPAR and z/VM hosting) are recommended as best practices options for the sake of feasibility and cost-effectiveness, but it is important to realize that Linux doesn’t require any other supporting software to run on the System z. The major positive implication of native implementation is that Linux on System z does not have a degraded performance potential as compared to any other System z OS or even Linux on any other platform. As you will see stated several times in this paper (and in other documents), “Linux is Linux is Linux.” This means that, aside from the benefits that the hardware platforms themselves provide, the Linux system that runs on your Intel desktop has the same performance potential as the Linux system that runs on your System z machine. Another very important implication of the “Linux is Linux is Linux” proposition is that the actual internals of the Linux OS are identical from platform to platform. The only changes that are made in the System z implementation of Linux relate to the actual instructions that the operating system passes to the hardware. (And indeed, this layer of communication with the hardware must be included for any platform that Linux runs on.) This means, among other things, that even on the System z platform, Linux is an ASCII operating system. This concept of “Linux is Linux is Linux” also greatly simplifies porting efforts from one Linux platform to another. Because the Linux code is virtually identical on every platform, the vast majority of applications simply have to be recompiled when they are moved to Linux on System z. (The exceptions to this rule would primarily be any software that communicates directly with the hardware layer, such as some database packages.) For those who have tried porting to a z/OS UNIX environment in the past, there is no concern about ASCII-EBCDIC translation when moving an application to Linux on System z, because Linux is a native pure ASCII environment. The benefits of using a native ASCII environment on the mainframe are clear when considered from a product life cycle perspective. Business applications can developed, tested, QA’ed, and moved into production all within the same general operating environment, even if one or more of those environments are actually hosted on different hardware platforms. Clearly, Linux is a very strategic environment for the System z platform. 1.3. Software Packages Available for Linux on System z No one runs just a bare operating system in a business environment, so it is important as well to know what software packages are available to assist with implementing e-business and on-demand solutions with Linux on System z. There are too many individual applications to list in this paper, but links to pages that have comprehensive lists are included below. The specific packages named below are the ones that are most commonly used.
Implementing Linux on IBM System z: Best Practices Page 6 1.3.1. IBM Products IBM software products that are available for Linux on System z include: • WebSphere® (Application Server, Portal, and Commerce Suite, among others) • DB2®/ DB2 Connect™ • Tivoli® (Backup and Enterprise Monitoring products) • Lotus® Domino™ • Rational® ClearCase® More information on the IBM products currently available for Linux on System z is available at IBM Software for Linux on System z. 1.3.2. ISV Products In addition to the IBM products available for Linux on System z, many Independent Software Vendors (ISV’s) have extended support for their software packages to Linux on System z. To find out if the ISV product you are using is available for Linux on System z, you can either contact the ISV directly or refer to Software Developer Products for Linux on IBM eServer zSeries and S/390. This page has the most recent list of ISV supported software that has been ported to Linux on System z. If you do not see a product that your organization uses on this list, it is an excellent idea to contact the ISV directly to ask about support options for Linux on System z. This is because an ISV may wait to support that option until a “critical mass” of customers have requested Linux on System z support. By registering your interest with your ISV, you may help increase the chances that the software you want to use will be supported on Linux on System z.
Implementing Linux on IBM System z: Best Practices Page 7 2. Installation of Linux on System z – A Brief Overview We now move on to the first logical topic – a brief discussion of the installation considerations and procedures for Linux on System z. 2.1. Know your objectives Before installation, learn as much as you can about the systems you are installing. How many Linux images will you need initially, and in the near future? What will they be used for? What resources do they need to perform their processing? Mid-tier applications such as SAP may be very communication-intensive, while Web servers, such as Apache, may be very I/O intensive in addition to using network resources intensively. Try to get estimates of the type of user load that is expected during prime shift. If possible, try to determine the I/O, network, memory, and processing requirements for these units of work. Even extremely rough estimates can be used in this phase. The numbers will be used to size the Linux images and to choose the best configuration options for communications, memory, processor share, and the DASD subsystem. These are just a few of the considerations that come into play when architecting a Linux on System z environment. A very helpful Redbook™ to use both when architecting and implementing an enterprise Linux on System z solution is Linux on IBM eserver zSeries and S/390: Large Scale Deployment, Redbook Number SG24-6824. As part of knowing your objectives and planning your implementation you may want to ask your local IBM account team about a Solution Assurance Review for your z/VM and Linux installation, especially if it is a new or complex implementation. In this review IBM will involve a subject matter expert to help you evaluate your readiness to implement and support your new Linux environment. 2.2. Choose a distribution There are many Linux distributions available to choose from when installing Linux, and many things may influence the choice of which distribution to use. The Redbook Linux for IBM eserver zSeries and S/390: Distributions, Document Number SG24-6264, discusses the installation and features of many of these distributions, including SUSE, TurboLinux, Red Hat, the original Marist distribution, and Debian/Caiman. (The existence of Caiman cannot be confirmed at this time, but the Debian project, on which Caiman is based, has officially released a version of Debian for the System z, which is available at their Web site.) This Redbook has valuable information regarding the configuration of LPARs and VM to prepare for installation. It also covers the actual install of the various distributions. Of course, new releases of all these distributions are published on an ongoing basis, so be sure to reference the Web site of your distribution vendor for the most current installation documentation.
Implementing Linux on IBM System z: Best Practices Page 8 The Redbook also discusses a Linux installation procedure for hosting under the IBM Virtual Image Facility™ (VIF) in addition to the VM and LPAR modes. VIF is now obsolete, and is no longer supported by IBM. As a result, VIF should no longer be considered a viable hosting option for any Linux installation. The pros and cons of one distribution versus another have been debated widely in publications and message boards on the Internet, and will not be addressed here. All distributions provide a kernel, various software packages, and a bootstrap to be IPL’ed for configuring the new system. Some of them use GUI interfaces for configuration; others use script files. For most distributions, the installations have common steps: • Configure the host environment (whether VM or LPAR mode). The Linux partition will need network connectivity through TCP/IP for telnet access to Linux. Disk space estimates are generally provided. • Obtain the distribution(s) that you have chosen (FTP from a Web site, or obtain CDs directly from the distributor). The distributions usually come in CD image format. • Make the CD image files accessible to the new Linux partition via NFS or FTP. • IPL from the initial ramdisk image • Provide the information needed to configure the partition (through scripts or interactively through ssh/telnet) 2.3. Choose a hosting configuration • LPAR Mode Running in LPAR mode can eliminate the overhead associated with hosting under z/VM. Be aware, however, that there is a limit to the number of LPAR’s than can be created, and this will limit horizontal scalability in a large Linux environment. This option may be appropriate, however, if you know for a fact that you will be running a relatively few number of Linux images, and those images will each be using a large amount of processing power, or will require a very large amount of dedicated memory. • VM Guests This option allows for thousands1 of Linux guests per IFL, and will probably be the “best fit” for many installations. When Linux images are processing unpredictable workloads, or when migrating from a large number of distributed servers, this is expected to be the most versatile option. Hosting under z/VM does, however, introduce some special considerations when defining your Linux guests, most notably with regards to defining memory and swap space. This is because Linux will use all the memory it is assigned for its own cache and buffers if that space isn’t taken up by the running application(s). If these memory pages aren’t frequently referenced by Linux (as is usually the case with Linux cache), z/VM will page them out. If Linux then needs that memory for other processes, it will usually move that data to its swap devices. This causes VM to page the memory page in, just so Linux can swap it out. If this process happens a lot, this can cause a significant performance penalty. To help avoid this situation, it is important to not allocate too much memory for the Linux guest (as opposed to a typical distributed Linux server, which gets a lot of memory). Give the Linux guest the minimum amount of memory that it needs, which can 1 “How Many Linux Systems Can Dance on a Single S/390?” David Boyes, SHARE July 2001, and “Test Plan Charlie Unplugged: An Interview with David Boyes,” Linux Planet, March 21, 2001
Implementing Linux on IBM System z: Best Practices Page 9 prevent unnecessary z/VM paging. Also, when assigning swap volumes for Linux guests, assign a small swap device as a z/VM VDISK and make it the highest priority Linux swap device; this will help to reduce I/O time required if the Linux guests themselves have to swap a small amount. It’s also recommended to keep overall swap volume size small, since Linux swapping is not recommended at all on the mainframe for the reasons stated above. A good rule of thumb is for total swap size to be half of overall allocated memory size. With regards to I/O, you also need to choose the access methods (“disciplines”) that Linux will use for its I/O. ECKD (Extended Count-Key-Data), FBA (Fixed Block Architecture), and Diagnose are the options available. Using Diagnose tells Linux to let the CP perform the I/O through VM high-level routines, while FBA is the Linux architecture for VDISK and SCSI disk access and ECKD is the disk architecture for traditional mainframe I/O. Changing these parameters to DIAGNOSE may gain significant performance improvements, and is recommended. The Redbook Linux on IBM eServer zSeries and S/390: Performance Measurement and Tuning, Number SG24-6926, discusses many of these performance options at length. This Redbook should be referenced to plan the file systems, memory, and relative processor shares beforehand. This planning step is vital, since it is much easier to select the correct options at initial installation, rather than reinstalling the Linux image later. 2.4. System z Host Preparation 2.4.1. Configure environments If the decision has been made to install Linux in LPAR mode, the LPARs must be configured with HCD, as would be necessary for any LPAR. If the plan is to install the Linux subsystems as VM Guests, the VM options for each guest must be set in that guest’s User Directory entry. • Memory – For z/VM installations, ensure that the minimum amount of memory required is defined to the Linux guest. See the performance and tuning section of this paper for additional guidance on overcommitting memory in z/VM. • Processor share – When defining LPAR’s, remember that zAAPs, zIIPs, ICFs, and IFLs are shared out of the same processor pool, and must be calculated together for processor weighting purposes • Disk requirements – The disk requirements for a Linux image can vary significantly, depending on the installation options you select. A full installation of Linux requires about 6 Gigabytes of space. Note that this does not include planning for any additional products you plan to install (WebSphere, DB2, etc.). Planning for these products should be done separately. • Network connectivity – Your Linux machine might or might not require network connectivity to install, but network connectivity is virtually mandatory for the server to be useful. When installing in an LPAR, dedicated OSA cards are required for the Linux image. When installing under z/VM, however, the OSA cards can be shared between guests via a z/VM Guest LAN or VSWITCH. In the absence of any other mitigating factors, a VSWITCH should always be used instead of a Guest LAN, due to the lower overhead required to implement it.
Implementing Linux on IBM System z: Best Practices Page 10 2.4.2. Obtain and install the distribution When installing in LPAR mode, CDs may be ordered or created, and used in the HCD console to IPL the initial image. On some systems, depending on your local network configuration, you may be able to IPL via FTP to a machine with the CD images. The CD images may also be loaded to tape or disk, if the disk has been prepared with ICKDSF. When installing under z/VM, the installation files may be accessed by z/VM’s NFS or FTP programs, where they are loaded onto the VM guest’s minidisks, A “CP IPL” can then be performed from the minidisk. 2.5. Post Installation Review the Redbooks listed above for installation and performance options. When installing under z/VM, it is important to be aware of the implications of some installation options. QDIO is the default for network I/O. It works well, and allows the VM address spaces to share OSA cards. There may be situations, however, where it is desirable to have a Linux guest connect directly to an OSA card. In this situation, the default could be overridden to use Linux native networking, thereby eliminating one layer of software interface. After your base system is up and running, you can then implement your preferred method of collecting performance data under Linux (SAR, RMFPMS, etc). This step is discussed in further detail in the performance section of this paper.
Implementing Linux on IBM System z: Best Practices Page 11 3. Linux Administration 3.1. Basic System Administration Topics There are many activities that can fall under the “system administration” moniker. In this paper, we have included the topics that we find customers most often ask about or need assistance with. The basic administration of a Linux on System z system is not at all dissimilar from a Linux system on any other hardware platform. “Linux is Linux is Linux,” and the basic administration setup tasks outlined below should be virtually identical to any other Linux machine your company has installed. If you currently have a standard Linux build and/or security policy at your company (along with administrators who set up the Linux machines), then the following setup tasks should be able to proceed virtually unaltered on Linux on System z: 3.1.1. Setup of Users and Groups The setup of users and groups on Linux on System z is virtually identical to the process that is used on every Linux platform. Of course, the preferred tool changes from distribution to distribution (YAST on SUSE, for example), but the creation of user IDs and group IDs is the same. You have the standard /etc/passwd and /etc/shadow files, and the location of home directories for users is the same. Most companies that already have Linux installed already have a policy for creating users and groups, and assigning one to the other. If your company already has a user/group policy, integration into the existing policy is generally recommended. If you are installing Linux for the first time in your company, however, or if you are just creating a user policy, the following is recommended: First, it is usually better to create groups based on functional role in the company, and not necessarily based solely on departmental or corporate classification. Security needs are often one of the primary concerns that dictate the group creation policy. For example, in a WebSphere support environment, instead of creating separate groups for the Houston, Atlanta, and Charlotte offices, it might be more efficient to create separate groups for developers, WAS administrators, and end users (if end users will be accessing a Linux user ID at all), since those groups will need different security permissions. Conversely, depending on what role the technical personnel play in the development and deployment environment, it might make more sense to create groups based on current projects in development and production. For example, if all the developers on each project also act as WAS administrators for that project, but you want security access to each project discretely separated, you might want to create one group for each project (HR Web, Online Accounts Payable, etc.). Of course, each user can be assigned to multiple groups, so if you had a very complex environment and wanted to create and assign groups based on both functional role and project, or based on whatever criteria you wish, you could do exactly that. The bottom line in group creation and delegation is that you should have a specific and stated design for your system that outlines your needs, along with a group scheme that addresses those needs.
Implementing Linux on IBM System z: Best Practices Page 12 Second, no uid’s for users should be assigned below the 500 level, to avoid the risk of duplicating a uid that is used by a system service or application. There is no upper limit on uid’s that can be used, so we typically like to start numbering uid’s at 10000, just to make sure they are out of the range of any uid’s that would have been assigned by pre-installed software packages. Finally, it is important to note that, as your Linux infrastructure grows, maintenance of the user registry can be a large and burdensome task. Many customers, to simplify and centralize their user registry infrastructure, choose to set up a central LDAP user registry, which all Linux images can point to when authenticating users and retrieving group information (i.e. which group(s) the user belongs to). LDAP databases are also useful because they are platform-independent, and can be used as a centralized user registry by any platform that will support external user authentication. Instructions on creating an LDAP database is beyond the scope of this paper, but configuring Linux to use the LDAP database for user authentication is fairly easy. Only a few modifications are required to the default Linux PAM configuration. The location of the PAM configuration files can vary based on distribution, but in SLES9, the files are located in the /etc/pam.d/ directory. Information on the PAM LDAP module can be found at PADL Software Pty Ltd. In addition, Redpaper REDP-0221-0 is a good reference on integrating z/OS LDAP and RACF with Linux authentication. 3.1.2. Basic Linux Security The basic form of security on Linux on System z, like Linux on all other platforms, is the system of permission bits that are assigned to every directory and file on the system. We will not go into great depth discussing the permission bit system in this paper, as information is available on this subject. The book LPI Linux Certification In a Nutshell from O’Reilly, for example, is an excellent reference book on general Linux information, including security and permission bits. (Or if you just go to any search engine, Google, for example, and search for “Linux Permission Bits,” you’ll get several hits that will explain how the permission bit system works.) It is important, however, to note that you should attempt to avoid assigning the “setuid” bit or “setgid” bit to any directories or files unless absolutely needed. (Some software products require that these bits be activated for the product’s binary directories, but the assigning of these bits should be severely limited whenever possible. Ideally, they would not exist.) In addition to basic “permission bit” security, the 2.6 Linux kernel introduced two new functions that can be used with supporting filesystems, extended attributes and Access Control Lists (ACL’s). Extended Attributes, while not solely having security applications, allow you to tag files with additional information, such as their encoding. Extended Attributes can be queried or set with the “getfattr” and “setfattr” commands. Access Control Lists, which actually are a type of extended attribute, allow you more flexibility in assigning access to files than the traditional owner, group, world scheme. ACL’s can be queried or set with the “getfacl” and “setfacl” commands.
Implementing Linux on IBM System z: Best Practices Page 13 3.1.3. Shell Environment The shell environment that is available on Linux on System z is identical to the shell environments that are available on all other platforms. Bash, sh, ksh, csh, and tcsh are all included with every distribution that is available, and any additional shell environment that can be used on other Linux platforms can be downloaded and installed in Linux on System z. 3.1.4. Password Administration This might seem like too simple a topic to cover in a best practices paper, but proper password administration is vital in helping to address security on any Linux machine, including one on Linux on System z. If the wrong potential intruder gains access to a user’s account, then your entire Linux machine can be compromised. It is recommended that you encrypt your passwords using the /etc/shadow file (this is the default is most Linux distributions). In addition, a policy on password changing and security should be implemented at your organization, if one is not already in place. Linux users should be forced to change their password on a regular interval, and the passwords they create should be subjected to basic “dictionary checks” to make sure that the passwords are resistant to potential hacking attempts. Tools to do this are packaged into Linux, and they can be accessed using a user administration tool (YaST, Webmin, etc.). Some of the tools that can be used manually are passwd (for changing passwords), chage (for changing user and password expiration information), and pwconv/grpconv (for implementing shadowed/encrypted passwords for users and groups), among others. 3.2. Advanced System Administration Topics 3.2.1. Scheduling • Job Scheduling - There are several options available for scheduling work on Linux. A simple, but stable and functional scheduler daemon that is packaged with Linux is Cron. Cron allows an administrator (or any user, theoretically) to run scripts and other commands on a preset schedule. Cron is open source, and has a very simple functionality. For more robust Linux scheduling, there are several scheduling products that have been ported to Linux on System z by Independent Software Vendors (ISV’s). A comprehensive list of these products by category is available at ISV Solutions for Linux on System z. • I/O Scheduling - Beginning with the 2.6 kernel, there are four different I/O schedulers available in Linux: noop, deadline, anticipatory (as), and completely fair queue (cfq). An in-depth discussion of each of these options is beyond the scope of this paper. In summary, however, the noop scheduler only performs request merging, while the deadline scheduler is designed to avoid request starvation, and the cfq scheduler is designed to give all users of a particular drive/volume equal access to that drive/volume. Finally, the as scheduler is designed for use with physical disks and not disk subsystems, so it should not be used with Linux on System z. The default scheduler for SLES 9 and RHEL 4 is the cfq scheduler. To verify this, you should be able to find a message indicating which scheduler was activated at boot time in the dmesg (RHEL) or boot.msg (SLES) file. You can also specify which scheduler to use in the zipl.conf file via the “elevator=” parameter. While there is no one scheduler that will provide the best performance in every conceivable situation, the deadline scheduler has been shown, through various IBM benchmark tests, to typically provide results that are equivalent to or better than other schedulers. Note that the deadline scheduler is not the default scheduler
Implementing Linux on IBM System z: Best Practices Page 14 for SLES and Red Hat installations. It is important to note that the results favoring “deadline” are merely based on benchmark workloads, and that the best scheduler for your environment will be highly dependent upon the workload being run. As a result, it is recommended that you engage in an iterative process, testing your Linux workload with multiple I/O schedulers, and ultimately choosing the one that best meets your needs based on your testing. In the absence of any data suggesting otherwise, however, the deadline scheduler is a good place to start. 3.2.2. Backup and Recovery Backup and recovery is one of the most vital areas of preparation that every Linux installation should have completed before any environment is put into production. Most organizations who already have a production z/OS or z/VM environment are accustomed to preparing and executing a backup and recovery strategy, and have very little trouble with adapting that strategy for use on Linux on System z. If your organization is new to the System z platform, however, then you might find creating a backup and recovery strategy a little challenging. Hardware choice is not normally a vital concern for developing a backup strategy (other than the fact that some type of hardware is needed!), because Linux and z/VM generally support any existing tape management system that your company currently uses. As it relates to software, however, there are basically three options for backing up and restoring data on a Linux on System z system. There is no one “most recommended” backup method, but it is highly recommended that a backup strategy be implemented. The strategy your organization chooses should be based on your business needs, available resources, existing skills, and strategic direction. • The first option is to use backup tools that reside on z/VM to backup and restore Linux data. This is generally the most common strategy that customers already familiar with z/VM use for Linux and z/VM backups. In general, it is important to note that z/VM backup tools usually only provide volume-level backups, not file-level backups. That is, you can back up and restore entire minidisks, but not individual files. To restore individual files in this scenario, customers typically restore the minidisk that the file in question was on, and then mount that volume to the Linux guest and retrieve the lost file. Tools that fall into the z/VM-resident category include the z/VM built-in DASD Dump/Restore (DDR) Facility, and a number of tools listed at the ISV Information for z/VM web page. • The next basic option for Linux backups is to modify an existing z/OS backup strategy to include Linux volumes. The benefit of using existing z/OS backup facilities (most notably DFSMSdss) is that Linux DASD volumes can generally be treated like any other volume that is dumped and restored using dss. Although z/OS can’t access the data in the volume itself, the volume can be dumped and restored just like any other DASD volume. Obtaining a "clean" backup with this method takes some coordination, since the Linux system should be down or the file system/volume in question should be unmounted during backup. • The backup strategy that is quickly gaining momentum is to use tools that run on Linux itself to backup Linux volumes and files. Obviously, the most attractive argument for this option is that these backup tools provide easy access to both file-level and volume-level
Implementing Linux on IBM System z: Best Practices Page 15 backups. IBM’s Tivoli Storage Manager™ product fits into this category. TSM can send the backup data to a TSM server on any platform or perform a "LAN FREE" backup and send data directly to a SAN. A good number of ISV’s have already ported their own Linux backup tools to the Linux on System z platform, as well. The number of additional products being ported is increasing regularly, also, so you can visit ISV Solutions for Linux on System z to see the latest list of software packages that have been ported to Linux on System z. If you currently have distributed Linux machines installed in your environment and have a backup strategy and product already implemented, this option would probably be the easiest method for you to use when doing a server consolidation. 3.2.3. Operational Considerations • Startup and Shutdown - Proper operational procedures should be implemented for a safe and orderly startup and shutdown process. Linux has a built-in mechanism for handling this process, utilizing scripts in either the /etc/init.d or /etc/rc.d directories (depending on your distribution). This process is designed to ensure that the products you use start (or stop) in the proper sequence. After adding a startup/shutdown script to the correct directory, you can add that script to the startup and shutdown sequences by using the chkconfig command. Controlled startups and shutdowns are important, because software may be required to start in a certain sequence (e.g. DB2 must start before WebSphere Portal). Orderly shutdown can help ensure that things such as databases or journaled filesystems don't have to go through a lengthy recovery at startup time. When shutting down a Linux guest under z/VM, the z/VM SIGNAL SHUTDOWN command is a utility that can send a signal to the guest operating system to indicate that it should begin its shutdown sequence. From a z/VM administrator’s perspective, using this command can be more convenient than actually having to log onto a Linux guest just to then shut it down. • NPTL - Native POSIX Thread Libraries have been integrated into Linux beginning with the 2.6 kernel, and are the strategic direction for Linux threading. The NPTL libraries replace the native “Linux Threads” model that has been used in previous versions of the Linux kernel, and have generally helped increase Linux scalability and throughput. In rare situations, programs that are being migrated to the 2.6 kernel will suffer unexpected effects due to the new thread model. If this happens, you can choose to revert to the old “Linux Threads” model by setting the following environment variable for the running program: LD_ASSUME_KERNEL=2.4.21. It is not recommended, however, to use this workaround unless it is absolutely required. • System Call Emulation and s390 Tools - All 2.6-based Linux kernels running on the System z platform are supported only when running in a 64-bit mode. Many products, however (including most WebSphere products), still run in a 31-bit mode. The 64-bit “s390x” kernel for Linux on System z provides a System Call Emulation layer that allows 31/32-bit programs to run, unaltered, on the 64-bit kernel. In addition, there is a set of s390(31-bit)-related tools that are available for Linux on System z. These tools are not always installed by default, but are included on all distribution CD’s as the “s390-32...” package. This package is recommended because it includes tools that allow the user to instantiate a 31-bit shell environment that is useful for, among other things, installing WebSphere Portal in the 64-bit Linux environment. • New sysfs filesystem - Along with the new 2.6 Linux kernel came a new device filesystem known as sysfs. An in-depth discussion of sysfs is beyond the scope of this paper, but for additional information on sysfs and how it relates to devices on the System z platform, please see the Redbook Linux on System z9 and zSeries - Device Drivers, Features, and Commands.
Implementing Linux on IBM System z: Best Practices Page 16 4. Security The security concerns facing a complex organization in the on-demand age cannot be adequately covered in the scope of this paper, nor will we try to address every topic involved in securing the Linux on System z environment. Entire Redbooks can be (and have been, and are being) written about the different aspects of securing Linux on System z. Instead of attempting to write a treatise on security, we will discuss the issues that we have had to assist with most often when working with Linux on System z customers. 4.1. Network Security Network Security is almost universally (and surprisingly) a topic on which “new ground” has to be broken when moving applications to Linux on System z for the first time. This is due to the fact that at most customer locations, a security team that is accustomed to architecting network security for a distributed environment is charged with securing a Linux on System z solution. Of course, there’s nothing wrong with this situation – it’s just that some information about your new Linux on System z environment needs to be shared with the security team. (Communication! Communication is the key to keeping security, sysadmins, and developers happy and working together.) First, it is important to understand that when one VM guest communicates with another guest, it is possible for that communication to be kept inside the System z machine, That is, the communication itself is designed so that it cannot be tapped into by any external process or “sniffer” program. (Extremely technical z/VM discussion deleted here to save space – and to keep the reader from dozing off.) Due to customer requests for an auditable internal z/VM network, an internal network sniffer is available beginning with z/VM Version 5.2. This sniffer is able to capture internal network traffic running over a VM Guest LAN or VSWITCH. Sometimes, depending on the level of security desired, the security team will want to put a firewall between different layers of an application. If this is simply to protect the network layer, then this firewall might not be needed with zLinux. At other times, however, it may be necessary to protect one layer of the application from another in case of hacking or other corruption (for example, between an HTTP server in a DMZ and a WebSphere back-end server or back-end DB2 database). Another example of a time when separation might be required is if Linux guests are on different VLAN’s, representing different security levels, but still need to communicate with each other. At these times, an additional firewall might be warranted, and would even be a prudent course of action. When securing parts of your organization’s network with firewalls, it is important to note that there are firewall products currently available that can be installed in a z/VM Linux guest. Moving at least one of the firewall layers to the Linux on System z environment can help bring many benefits, which can include reduced response time due to the need for fewer network hops outside the z/VM environment (especially if one or more of your servers in the DMZ are hosted on Linux on System z). At the time of this writing, one firewall package is available for the Linux on System z environment: Stonegate Firewall (developed by Stonesoft Software). It is our understanding that other ISV’s are in the process of porting their products to Linux on
Implementing Linux on IBM System z: Best Practices Page 17 System z, however, and if your organization strictly uses a different firewall product, it is recommended that you check the ISV Solutions for Linux on System z - Security Applications regularly to see if your firewall product has been ported to Linux on System z. It is also suggested that you contact your firewall vendor to request that their product be ported to Linux on System z if you are interested in this functionality, since an ISV may wait until a “critical mass” of customers have requested their products on a new platform to release a version for that platform. 4.2. Linux System Security After a discussion of network security logically comes the discussion on securing the Linux image itself. While many books have been written on securing a Linux system, we will point out the following issues that will be most important in a Linux on System z environment. We have already mentioned some security considerations in the system administration discussion earlier. Another option that organizations with traditional z/OS environments are using to enhance Linux security is the ability to use their z/OS security product (RACF®, ACF2, or Top Secret) as an LDAP authentication server for their Linux machines. This is a recommended way to help further secure your Linux environment. The major potential benefit of this approach is that user and group administration is centralized in a security-rich LDAP server, and individual password/shadow files do not need to be maintained on each Linux machine. This can help to significantly reduce administration overhead, especially if you have a large number of Linux guests. The major drawback of this option, however, is that a learning curve exists when trying to setup and configure the LDAP server in your z/OS security product. (And most z/OS shops are squeamish about altering any part of their security product to begin with.) A very good document on this topic is Linux on IBM zSeries and S/390: Securing Linux for zSeries with a Central z/OS LDAP Server (RACF), document number REDP0221. This option may not make sense for every organization, but is definitely an option to consider if your organization is planning a large-scale Linux deployment. To help further secure your Linux guest, any ports that are not specifically needed by a software service running on the Linux image should be closed. Closing off unused ports helps reduce the exposure of your Linux image to hackers, and in general makes your systems much more efficient from a security standpoint. In addition, the default telnet and FTP programs packaged with most distributions should not be used (they are usually disabled by default). Instead, it is highly recommended that more secure access methods be used, such as SSH and SCP/SFTP, respectively. This is especially important for any Linux image that receives traffic directly from the Internet or is in the DMZ. Many online tools (PuTTy, FileZilla, etc.) are available to communicate via SSH and/or SCP/SFTP to your Linux server from your Windows desktop.
Implementing Linux on IBM System z: Best Practices Page 18 5. WebSphere Application Server WebSphere Application Server (WAS) is one of the most common middleware products that is being run on Linux on System z today. WebSphere is a widely-used Java™ application server, and many organizations use Java applications hosted on WebSphere to connect to data housed on the mainframe. Because the data that the Java app accesses is housed on the mainframe, it makes logical sense to move the application from a distributed WAS server to a WAS server on Linux on System z. The case for “moving the application closer to the data” has been made many times in the past, and is a very compelling reason to move the application to the mainframe. No matter what reasons drive your organization’s decision to move applications to Linux on System z, you have to go through the process of installing, configuring, and tuning WebSphere for your Linux on System z environment. This section is designed to give you best practices information to use during initial WebSphere installation on Linux on System z. 5.1. Prerequisites Before you go about installing WebSphere Application Server, your initial Linux environment needs to be set up, and some initial planning must be done. Obviously, you must have a Linux guest to install WAS on. In addition, you will need to decide ahead of time whether or not your installation will need to be a “base” installation or a “Network Deployment” installation. That is, will your WebSphere servers be clustered together across multiple systems, or will you want to install multiple nodes over one or more systems? If the answer to either of those questions is yes, you will need the Network Deployment version of WebSphere. If you answered “no” to those questions, then a “base” WebSphere installation might work best for your organization. In addition, it is highly recommended that you check the latest WebSphere Application Server System requirements before attempting to go forward with a WebSphere implementation. Make sure that all software that will be used in your environment will work with your desired version of WebSphere. 5.2. Installing WebSphere Family Products on Linux on System z 5.2.1 WebSphere Application Server An excellent walk through is available online in the WebSphere Online Library for installing WAS for Linux on System z. The primary recommendation that is important to point out, and which is not mentioned in the installation documentation, is that you should not, if at all possible, use built-in GUI tool to install WebSphere for zLinux. The x-Server based GUI install tends to be very CPU intensive. Instead of using the GUI, it is recommended that you customize the sample install response script that is included with the product for your environment and run the install process based on that script using the “silent” option. (Don’t worry about the fact that it’s called a “silent” option… errors during the process will still get logged so you can troubleshoot the installation process if needed.) This tends to be the most efficient installation method for WebSphere on Linux on System z, and it is the only method that IBM recommends.
You can also read