적용 대상: SQL Server 2025(17.x) 미리 보기 - Linux
이 문서에서는 SQL Server 2025(17.x) 미리 보기의 tempdb
파일 시스템에 데이터베이스 파일을 사용하도록 설정하고 실행하는 방법을 안내합니다.
SQL Server on Linux 및 컨테이너는 일반적으로 SQL Server 데이터베이스 파일 및 로그를 배포하기 위한 XFS 및 ext4 파일 시스템을 지원합니다. 그러나 한 가동 시간에서 다른 가동 시간으로 데이터를 저장할 필요가 없는 임시 tempdb
데이터베이스의 경우 메모리(RAM)를 활용하는 tmpfs 파일 시스템을 사용하면 기반 워크로드의 tempdb
전반적인 성능을 향상시킬 수 있습니다.
tmpfs 파일 시스템에 대한 자세한 내용은 tmpfs - Linux 커널 설명서를 참조하세요.
구성 / 설정 | 설명 |
---|---|
지원되는 구성 |
tmpfs 는 다시 시작할 때 저장할 필요가 없는 비영구 데이터를 저장하는 데 적합합니다. 현재 데이터베이스 파일만 tempdb 컨테이너 및 비 컨테이너 기반 배포에 대해 tmpfs 파일 시스템에 지원됩니다. |
지원되지 않는 구성 | tmpfs 파일 시스템은 SQL 컨테이너 배포의 사용자 데이터베이스에만 사용할 수 있지만 개발 목적으로만 사용할 수 있습니다. 그러나 이 구성은 지원되지 않습니다. GitHub에서 이 시나리오에 대한 피드백을 제공할 수 있습니다. |
물리적 또는 가상 머신 배포
물리적 또는 가상 머신에서 Sql Server on Linux에 대한 tmpfs 지원을 사용하도록 설정하려면 tmpfs 파일 시스템을 올바르게 탑재해야 합니다. 이 경우 sudo 액세스가 필요합니다. 탑재 지점이 설정되면 tempdb
파일을 이러한 탑재 지점에 배치하고, tempdb
파일 시스템에 파일을 탑재한 상태에서 SQL Server를 시작할 수 있습니다.
"tempdb
대한 tmpfs 사용을 활성화하십시오."
tempdb
디렉터리를 만듭니다.이
mkdir
명령을 사용하여 데이터베이스에 대한 디렉터리를 만듭니다tempdb
.mssql
사용자 및 그룹이 소유하여 SQL Server 액세스를 허용하는지 확인합니다.mkdir /var/opt/mssql/tempdb sudo chown mssql. /var/opt/mssql/tempdb
tmpfs 파일 시스템을 탑재합니다.
다음 명령을 사용하여 tmpfs 파일 시스템을 탑재합니다.
sudo mount -t tmpfs -o size=4G tmpfs /var/opt/mssql/tempdb/
이
-t
옵션은 파일 시스템의 형식을 지정합니다. 이 경우tmpfs
.이
-o
옵션을 사용하면 탑재 옵션을 지정할 수 있습니다.size=4G
여기서는 tmpfs의 최대 크기를 4GB로 설정합니다. 즉, 최대 4GB의 RAM을 사용할 수 있습니다.이 명령은 SQL Server 데이터베이스에서 사용하는 대상 디렉터리에
tempdb
를 탑재합니다.필요에 따라
fstab
에 추가하여 다시 시작할 때 마운트를 유지합니다.echo "tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0" | sudo tee -a /etc/fstab
tempdb
파일 위치를 업데이트합니다.SQL Server가 실행 중인지 확인합니다. SSMS(SQL Server Management Studio)를 사용하여 다음 T-SQL 명령을 실행하여 SQL Server 인스턴스에 연결합니다.
다음 T-SQL 스크립트를 사용하여 모든
tempdb
파일을 식별한 다음, 명령을 실행ALTER DATABASE
하여 파일 위치를 업데이트합니다tempdb
.SELECT [name], physical_name FROM sys.master_files WHERE database_id = 2;
표시되는
tempdb
파일 수에 따라 명령을 다음과 같이 만듭니다:ALTER DATABASE
ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf'); ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
SQL Server를 다시 시작하여 변경 내용을 적용합니다.
sudo systemctl restart mssql-server
tempdb
파일 위치를 확인합니다.SQL Server가 실행되고 나면 SSMS(SQL Server Management Studio)와 같은 도구를 사용하여 SQL Server에 연결하여 데이터 및 로그 파일이 새 디렉터리에 있는지 확인
tempdb
합니다.
SELECT [name], physical_name
FROM sys.master_files
WHERE database_id = 2;
이제 당신은 새로운 탑재 경로 tempdb
에 있는 모든 데이터베이스 파일 /var/opt/mssql/tempdb
를 볼 수 있습니다.
tmpfs 마운트의 실시간 크기 조정
가득 찬 경우에는 tmpfs 마운트를 실시간으로 크기 조정할 수도 있습니다. 핫 리사이즈하려면 다음 명령을 실행하여 tmpfs 탑재 크기를 6 GB로 조정합니다.
mount -o remount,size=6G /var/opt/mssql/tempdb
필요에 따라 fstab
항목을 수정하여 재시작 시 새로운 크기가 유지되도록 합니다.
sudo sed -i 's|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=4G 0 0|tmpfs /var/opt/mssql/tempdb tmpfs defaults,size=6G 0 0|' /etc/fstab
컨테이너 배포
개발자 워크로드의 경우 사용자 데이터베이스에 tmpfs 를 사용할 수 있습니다. tmpfs 파일 시스템은 컨테이너에 배포된 사용자 데이터베이스에 대한 테스트 사례의 속도를 크게 높일 수 있습니다. tmpfs는 디스크 스토리지 대신 RAM을 사용하므로 빠른 읽기/쓰기 작업을 수행할 수 있습니다. 이 구성은 빠른 반복이 필요한 개발 및 테스트 환경에서 유용합니다.
그러나 사용자 데이터베이스 에 대한 tmpfs 는 지원 되지 않습니다 . GitHub의 tmpfs에서 사용자 데이터베이스와 관련된 피드백을 제공할 수 있습니다.
오직 tempdb
데이터베이스만 tmpfs 파일 시스템에 호스트하십시오.
SQL Server 컨테이너를 배포하고 컨테이너가 tmpfs 를 tempdb
사용하도록 하려면 다음 명령을 실행할 수 있습니다.
docker run \
-e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD = <password>\
--tmpfs /var/opt/mssql/tempdb:uid=10001,gid=10001,size=4G \
-p 5433:1433 \
--name sql1 \
-h sql1 \
--d mcr.microsoft.com/mssql/server:2025-latest
이 --tmpfs
명령은 파일 생성에 필요한 권한이 올바르게 uid
설정되도록 크기를 4GB 및 gid
(사용자 ID) 및 10001
(그룹 ID)tempdb
로 설정합니다.
컨테이너가 실행되고 나면 SSMS를 사용하여 SQL Server에 연결하고 다음 T-SQL 명령을 사용하여 파일을 새 위치 tempdb
로 이동합니다/var/opt/mssql/tempdb
.
SELECT [name], physical_name
FROM sys.master_files
WHERE database_id = 2;
표시되는 파일 수에 따라 다음 명령을 수정합니다. 이 예제에는 4개의 tempdb
파일과 하나의 로그 파일이 있습니다. 다음 명령을 사용하여 이러한 파일을 새 위치로 이동합니다.
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = '/var/opt/mssql/tempdb/tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev2, FILENAME = '/var/opt/mssql/tempdb/tempdb2.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev3, FILENAME = '/var/opt/mssql/tempdb/tempdb3.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev4, FILENAME = '/var/opt/mssql/tempdb/tempdb4.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = '/var/opt/mssql/tempdb/templog.ldf');
GO
파일을 이동한 후 다음 명령을 사용하여 컨테이너를 중지하고 다시 시작합니다.
docker stop sql1
docker start sql1
tmpfs에 모든 데이터 및 로그 파일을 사용하여 컨테이너 배포
경고
이 구성은 지원되지 않지만 개발 목적으로 사용할 수 있습니다. GitHub에서 이 시나리오에 대한 피드백을 제공할 수 있습니다.
docker run -e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD=<password> \
--tmpfs /var/opt/mssql/data:uid=10001,gid=10001,size=4G \
-p 5434:1433 \
--name sql2 \
-h sql2 \
-d mcr.microsoft.com/mssql/server:2025-latest