zstan commented on code in PR #13741: URL: https://github.com/apache/ignite/pull/13741#discussion_r4385609237
########## docs/_docs/server-node-file-system-layout.adoc: ########## @@ -0,0 +1,230 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + += Server Node File System Layout + +Plan disk space separately for persistent data, WAL, retained WAL segments, snapshots, logs, and JVM diagnostics. +If these files share a file system, growth in one directory can exhaust the space needed by the others. +A failed write to Ignite data, WAL, or metadata can cause the node to stop. +A full file system can also prevent the node from restarting. + +These recommendations apply to production server nodes. +For nodes without native persistence, the recommendations for the work directory, logs, and JVM diagnostics still apply. + +Not every role can be isolated: CDC and the root of an incremental snapshot chain are hard-linked to WAL archive segments and therefore have to live on the archive file system. +Isolate the remaining roles. + +== Separate Capacity and I/O + +Use separate file systems or volumes with independently provisioned capacity to contain disk-space exhaustion. +Different directories on the same file system share free space and do not provide this isolation. +A separate file system is a capacity boundary only: it does not by itself reduce I/O contention, which requires a separate device or independently provisioned storage throughput. + +Separate the roles for a second reason: they compete for the same device queue. +Data files receive checkpoint batches, the active WAL receives the writes of the commit path, and the archive, CDC, and snapshots add their own sequential streams. +When these streams share a device, a spike in one of them delays the others, and the delay appears while the load is at its highest. + +Separate partitions on one physical device isolate capacity but not I/O: they still share the device queue, the controller, and the failure risk. +For I/O isolation, place data files and the active WAL on different physical devices or independently provisioned storage. +Separate the archive as well where possible, so that archiving and retained segments do not compete with the active WAL. Review Comment: DataStorageConfiguration#setExtraSnapshotPaths also need to be mention (I suppose) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
