Core concepts
File Storage is a storage service that allows multiple servers to access the same file system over a network. This document explains the core concepts, states, performance characteristics, operational recommendations, and IAM roles for using File Storage.
File system
A File Storage file system is the primary resource that manages files and directories in a hierarchical structure. You can read, write, and delete data by file, and access it over the network using standard protocols such as NFS or SMB.
File system types
File Storage provides the following two types depending on the use case.
| File system type | Description |
|---|---|
| Infinite file system | Scalable file system - Provides SMB and NFS file services - Provides multiple shared volumes in one file system - Can be used without a fixed storage size limit |
| Basic file system | Provides NFS file service and operates based on preconfigured capacity. - Can be created from 1 TiB to 16 TiB in 0.5 TiB increments |
File system lifecycle and state
A file system starts in the Creating state and is configured in the specified network environment. When configuration is complete, it transitions to Active, and clients can mount and use it.
Deleting indicates that file system deletion is in progress. After resources are released, the file system is removed from the list and billing stops.
- Infinite file system
- Basic file system
| State | Description |
|---|---|
Creating | Creating the file system |
Active | File system is running normally and available |
Updating | File system configuration operation is in progress |
Deleting | Deleting the file system |
Error | An error occurred in the file system |
| State | Description |
|---|---|
Creating | Allocating resources and configuring the file system with the specified volume size |
Active | File system is running normally and available |
Restoring | File system restore operation is in progress |
Setting-up | Restarting the file system after restore |
Backing-up | Backup operation is in progress |
Updating | Configuration change, image change, or migration is in progress |
Deleting | Terminating and releasing the file system |
Error | An error occurred in the file system |
File system performance
File Storage is optimized for environments where multiple servers access files at the same time to share data. Because it is network-based storage, actual performance is affected significantly by client specifications and network settings.
Measuring and understanding File Storage performance
Cloud file storage uses a structure where multiple clients share resources, so performance characteristics between the client and file storage must be considered together. KakaoCloud provides performance guidance based on standard I/O testing with fio.
The results below are reference values measured with specific VM specifications, network settings, and mount options; they do not guarantee actual performance. Results may vary depending on the VM specifications, network bandwidth, mount options, and number of concurrent jobs. Separate testing under the same conditions as the production environment is recommended.
- Infinite file system (NFS)
- Infinite file system (SMB)
The following values measure ranges close to actual user-perceived performance and can vary significantly depending on VM specifications and network settings.
Key variables
- VM network bandwidth
- NFS mount option, such as nconnect
- Number of concurrent jobs
nconnect is the number of connections created between the NFS client and server. Increasing the number of connections can improve IOPS by increasing parallel processing, but the actual effect varies depending on the client and network environment.
Client reference
| Item | Specification |
|---|---|
| VM flavor | 8 vCPU / 16 GB RAM |
| Network | 10 Gbps |
| OS | Linux |
| Protocol | NFS v4.1 |
| Mount option | nconnect=1 / 4 / 16 |
| Write mode | Async |
Measurement method
Random read and random write performance was measured using fio.
fio --filename=/mnt/nfs/iops-bench.dat \
--rw=randread \
--bs=4k \
--size=10G \
--numjobs=8 \
--direct=1 \
--ioengine=libaio \
--iodepth=64 \
--group_reporting=1 \
--norandommap=1 \
--randrepeat=1 \
--time_based=1 \
--ramp_time=20 \
--runtime=300
fio --filename=/mnt/nfs/iops-bench.dat \
--rw=randwrite \
--bs=4k \
--size=10G \
--numjobs=8 \
--direct=1 \
--ioengine=libaio \
--iodepth=64 \
--group_reporting=1 \
--norandommap=1 \
--randrepeat=1 \
--time_based=1 \
--ramp_time=20 \
--runtime=300
Performance results
| Test item | nconnect | I/O pattern | IOPS | |
|---|---|---|---|---|
| Random Read | nconnect = 1 | 100% Read | 4 KB | up to 30,000 |
| Random Read | nconnect = 4 | 100% Read | 4 KB | up to 57,000 |
| Random Read | nconnect = 16 | 100% Read | 4 KB | up to 66,000 |
| Random Write | nconnect = 1 | 100% Write | 4 KB | up to 28,000 |
| Random Write | nconnect = 4 | 100% Write | 4 KB | up to 42,000 |
| Random Write | nconnect = 16 | 100% Write | 4 KB | up to 47,000 |
Increasing the nconnect value increases the number of parallel connections and can improve IOPS.
The following values are performance test results for SMB protocol in a Windows environment.
Measurement method
Random read and random write performance was measured using fio.
fio --filename=fio_test \
--rw=randread \
--bs=4k \
--size=10G \
--numjobs=8 \
--direct=1 \
--ioengine=windowsaio \
--iodepth=64 \
--group_reporting=1 \
--norandommap=1 \
--randrepeat=1 \
--time_based=1 \
--ramp_time=20 \
--runtime=300
fio --filename=fio_test \
--rw=randwrite \
--bs=4k \
--size=10G \
--numjobs=8 \
--direct=1 \
--ioengine=windowsaio \
--iodepth=64 \
--group_reporting=1 \
--norandommap=1 \
--randrepeat=1 \
--time_based=1 \
--ramp_time=20 \
--runtime=300
| Test item | I/O pattern | IOPS | |
|---|---|---|---|
| Random Read | 100% Read | 4 KB | up to 23,000 |
| Random Write | 100% Write | 4 KB | up to 20,000 |
SMB environments can show relatively lower IOPS than NFS, and performance can vary depending on the client environment.
File system operational recommendations
Refer to the following recommendations to operate File Storage reliably and reduce performance degradation.
Store large files
There is no limit on the size of a single file, but operational efficiency and stability should be considered. Single files of several TB or more can increase retry costs during transfer and lengthen recovery time after failures. For large data, splitting it into multiple files is recommended.
Limit metadata-heavy operations
Creating or deleting a large number of files in a short time can increase system load. Recursive commands such as chmod -R, chown -R, and ls -R from a top-level directory can affect overall performance and should be used carefully.
Use symbolic links
Use symbolic links for file references. Hard links can cause internal lock contention and degrade overall response performance.
Manage the number of files in a directory
Storing an excessive number of files in one directory can cause performance degradation due to internal distributed processing. If the number of files continues to increase, separate directories by date (YYYY/MM/DD) or category.
- Recommended: Fewer than 50,000 files per directory
- Caution: File creation errors can occur with 500,000 or more files
Limit concurrently accessed files and workloads
File Storage optimizes performance by caching metadata in memory. If requests continuously exceed the cache range, overall performance can degrade and affect other users' access. Operate workloads within the recommended range.
- Recommended: Fewer than 1 million managed files in total
- Client: Up to 500,000 concurrently open files per mount point
IAM-based role management
File Storage follows IAM role-based access control (RBAC). Permissions to view, create, modify, and delete file systems and backups are granted based on IAM roles. For how to manage user roles, see Manage user IAM roles.
- Infinite file system role management
- Basic file system role management
| Permission | Project Admin | Project Member | Project Reader | File Storage Manager | File Storage Viewer |
|---|---|---|---|---|---|
| View file system | ✓ | ✓ | ✓ | ✓ | ✓ |
| Create, edit, delete file system | ✓ | ✓ | ✓ |
| Permission | Project Admin | Project Member | Project Reader | File Storage Manager | File Storage Viewer |
|---|---|---|---|---|---|
| View file system | ✓ | ✓ | ✓ | ✓ | ✓ |
| Create, edit, delete file system | ✓ | ✓ | ✓ | ||
| View backup | ✓ | ✓ | ✓ | ✓ | ✓ |
| Create, edit, delete backup | ✓ | ✓ | ✓ | ||
| Restore backup | ✓ | ✓ | ✓ |