noatime 과 nodiratime 을 동시에 설정 해 야 합 니까?

2525 단어 time
http://www.vpsee.com/2010/04/no-need-to-set-noatime-and-nodiratime-at-the-same-time/
성능, 최적화 에 관심 이 있 는 친구 들 은 Linux 에서 파일 시스템 을 마 운 트 할 때 noatime 을 설정 하면 파일 시스템 의 성능 을 현저히 향상 시 킬 수 있다 는 것 을 알 고 있다.기본 적 인 상황 에서 Linux ext 2 / ext 3 파일 시스템 은 파일 이 접근, 생 성, 수정 되 었 을 때 파일 의 시간 스탬프 를 기록 했다. 예 를 들 어 파일 생 성 시간, 최근 수정 시간 과 최근 방문 시간 등 이다.시스템 이 실 행 될 때 대량의 파일 을 방문 해 야 하기 때문에 일부 동작 (예 를 들 어 시간 스탬프 의 기록 횟수 를 줄 이 는 등) 을 줄 일 수 있다 면 디스크 IO 의 효율 을 현저히 향상 시 키 고 파일 시스템 의 성능 을 향상 시 킬 것 이다.리 눅 스 는 최근 방문 시간 스탬프 를 기록 하지 못 하도록 noatime 라 는 인 자 를 제공 합 니 다.
파일 시스템 에 마 운 트 할 때 noatime 인 자 를 추가 하면 파일 시스템 성능 을 크게 향상 시 킬 수 있 습 니 다.
# vi /etc/fstab

/dev/sda1        /             ext3     defaults,noatime,errors=remount-ro 0 0
devpts           /dev/pts      devpts   gid=5,mode=620             0 0
proc             /proc         proc     defaults                   0 0
/dev/sda2        swap          swap     defaults,noatime           0 0

설정 을 수정 한 후 파일 시스템 을 다시 마 운 트 하기 만 하면 다시 시작 하지 않 아 도 새 설정 을 적용 할 수 있 습 니 다.
# mount -o remount /

# mount
/dev/sda1 on / type ext3 (rw,noatime,errors=remount-ro)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

인터넷 에서 많은 자료 들 이 noatime 과 nodiratime 를 동시에 설정 해 야 한다 고 언급 했 습 니 다. 이 결론 이 어디서 나 왔 는 지 모 르 겠 습 니 다. 사실은 noatime 을 설정 하 는 것 처럼 nodiratime 을 설정 할 필요 가 없습니다. 가장 믿 을 만 한 자 료 는 소스 코드 일 것 입 니 다. VPSee 는 소스 코드 를 찾 아 보 았 는데 커 널 소스 코드 linux - 2.6.33 / fs / inode. c 파일 에 touch 가 있 는 것 을 발 견 했 습 니 다.atime 함수, inode 의 태그 위치 가 NOATime 이면 바로 돌아 갑 니 다. NODIRATIME 에 갈 수 없 기 때문에 noatime 만 설정 하면 됩 니 다. nodiratime 을 설정 할 필요 가 없습니다.
void touch_atime(struct vfsmount *mnt, struct dentry *dentry)
1405{
1406        struct inode *inode = dentry->d_inode;
1407        struct timespec now;
1408
1409        if (inode->i_flags & S_NOATIME)
1410                return;
1411        if (IS_NOATIME(inode))
1412                return;
1413        if ((inode->i_sb->s_flags & MS_NODIRATIME) && S_ISDIR(inode->i_mode))
1414                return;
1415
1416        if (mnt->mnt_flags & MNT_NOATIME)
1417                return;
1418        if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
1419                return;
...
1435}

좋은 웹페이지 즐겨찾기