The following section provides best practices and recommendations when deploying SQL Server on Linux.
Storage design and connectivity best practices
Follow the best practices described in Storage design and connectivity considerations.
iSCSI connectivity best practices
Follow the best practices described in iSCSI connectivity best practices.
Database files placement
- For performance-critical databases, separate the database files and transaction log to different storage volumes. Use at least eight storage volumes for the SQL Server user database files. Double this number when SRDF/S or SRDF/Metro are used to allow for better replication concurrency and parallelism.
- Because SQL Server does not stripe the transaction log updates (even when multiple transaction log files are created) on Linux, a striped LVM can be used to spread the I/Os across multiple storage volumes.
- When using local or remote storage replication, separate the system and user databases on different storage volumes. This separation allows replicating only user databases. A target SQL Server instance (with its system databases) can be configured ahead of time so the replicated database can be attached (added) to it without having to spend time during that process to create a new SQL Server instance.
Host considerations
- Use the Linux tuned-adm profile based on Microsoft SQL Server recommendations and best practices.
- Use Linux UDEV rules to set storage volume permissions and the IO scheduler. The recommended IO scheduler is deadline.
- When mounting the XFS file system, use the noatime mount option for improved performance.
- When using striped LVM with Red Hat Enterprise Linux 8.x and PowerPath, add the filter = [ "a|/dev/emcpower.*|", "r|.*|" ] filter to the /etc/lvm.lvm.conf file.