3.8. 데이터 저널링
일반적으로 GFS2는 메타 데이터만을 저널에 작성합니다. 결과적으로 파일 내용물은 파일 시스템 버퍼를 삭제하는 커널의 주기적 동기화 작업에 의해 디스크에 작성됩니다. 파일 상의
fsync()
호출로 파일의 데이터는 디스크로 바로 작성됩니다. 디스크가 모든 데이터가 안전하게 작성되었음을 보고하면 호출이 반환됩니다.
파일 데이터는 메타데이터와 함께 저널에 기록되므로 아주 작은 파일의 경우 데이터 저널링으로
fsync()
시간을 감소시킬 수 있습니다. 파일 크기가 커질 수록 이러한 장점은 급속하게 감소됩니다. 데이터 저널링 기능을 사용하면 매체 및 대용량 파일로 쓰기 속도는 상당히 느려지게 됩니다.
파일 데이터를 동기화하기 위해
fsync()
에 의존하는 어플리케이션은 데이터 저널링 사용으로 인해 성능이 향상되었음을 확인할 수 있습니다. 플래그된 디렉토리 (및 모든 하부 디렉토리)에 생성된 데이터 GFS2 파일에 대해 저널링은 자동으로 활성화될 수 있습니다. 0 값을 갖는 기존 파일은 데이터 저널링을 활성화 또는 비활성화시킬 수 있습니다.
디렉토리에 데이터 저널링을 활성화하는 것은 디렉토리를 "inherit jdata"로 설정하는 것으로 이는 결과적으로 저널링된 디렉토리에 생성된 모든 파일 및 디렉토리를 나타냅니다.
chattr
명령을 사용하여 파일의 모든 데이터 저널링을 활성화 및 비활성화할 수 있습니다.
다음의 명령으로
/mnt/gfs2/gfs2_dir/newfile
파일에 있는 데이터 저널링을 활성화한 후 플래그가 올바르게 설정되어 있는 지를 확인합니다.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
다음의 명령으로
/mnt/gfs2/gfs2_dir/newfile
파일에 있는 데이터 저널링을 비활성화한 후 플래그가 올바르게 설정되어 있는 지를 확인합니다.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
디렉토리에
j
플래그를 설정하기 위해 chattr
를 사용할 수 있습니다. 디렉토리에 이러한 플래그가 설정되어 있을 때, 결과적으로 디렉토리에 생성된 모든 파일 및 디렉토리는 저널링됩니다. 다음의 명령은 gfs2_dir
디렉토리에 j
플래그를 설정하고, 플래그가 올바르게 설정되어 있는 지를 확인합니다. 그 후, 이러한 명령은 /mnt/gfs2/gfs2_dir
디렉토리에 newfile
이라는 새 파일을 생성한 후 파일에 j
플래그가 설정되었는 지를 확인합니다. 디렉토리에 j
플래그가 설정된 후, newfile
에 대한 저널링을 활성화해야 합니다.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile