statfs(2) - wariua/manpages-ko GitHub Wiki

NAME

statfs, fstatfs - 파일 μ‹œμŠ€ν…œ 톡계 μ–»κΈ°

SYNOPSIS

#include <sys/vfs.h>    /* λ˜λŠ” <sys/statfs.h> */

int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);

DESCRIPTION

statfs() μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ 마운트 된 파일 μ‹œμŠ€ν…œμ— λŒ€ν•œ 정보λ₯Ό λ°˜ν™˜ν•œλ‹€. pathλŠ” 마운트 된 파일 μ‹œμŠ€ν…œ λ‚΄ μž„μ˜ 파일의 경둜λͺ…이닀. bufλŠ” λŒ€λž΅ λ‹€μŒμ²˜λŸΌ μ •μ˜λΌ μžˆλŠ” statfs ꡬ쑰체에 λŒ€ν•œ 포인터닀.

struct statfs {
    __fsword_t f_type;    /* 파일 μ‹œμŠ€ν…œ μœ ν˜• (μ•„λž˜ μ°Έκ³ ) */
    __fsword_t f_bsize;   /* 졜적 전솑 블둝 크기 */
    fsblkcnt_t f_blocks;  /* 파일 μ‹œμŠ€ν…œ λ‚΄ 총 데이터 블둝 */
    fsblkcnt_t f_bfree;   /* 파일 μ‹œμŠ€ν…œ λ‚΄ 유휴 블둝 */
    fsblkcnt_t f_bavail;  /* λΉ„νŠΉκΆŒ μ‚¬μš©μžκ°€ μ‚¬μš© κ°€λŠ₯ν•œ
                             유휴 블둝 */
    fsfilcnt_t f_files;   /* 파일 μ‹œμŠ€ν…œ λ‚΄ 총 파일 λ…Έλ“œ */
    fsfilcnt_t f_ffree;   /* 파일 μ‹œμŠ€ν…œ λ‚΄ 유휴 파일 λ…Έλ“œ */
    fsid_t     f_fsid;    /* 파일 μ‹œμŠ€ν…œ ID */
    __fsword_t f_namelen; /* 파일λͺ… μ΅œλŒ€ 길이 */
    __fsword_t f_frsize;  /* λ‹¨νŽΈ 크기 (λ¦¬λˆ…μŠ€ 2.6λΆ€ν„°) */
    __fsword_t f_flags;   /* 파일 μ‹œμŠ€ν…œ 마운트 ν”Œλž˜κ·Έ
                             (λ¦¬λˆ…μŠ€ 2.6.36λΆ€ν„°) */
    __fsword_t f_spare[xxx];
                    /* ν–₯ν›„ μš©λ„λ₯Ό μœ„ν•΄ μ˜ˆλΉ„λœ νŒ¨λ”© λ°”μ΄νŠΈ */
};

f_type에 λ‹€μŒ 파일 μ‹œμŠ€ν…œ μœ ν˜•μ΄ λ‚˜μ˜¬ 수 μžˆλ‹€.

ADFS_SUPER_MAGIC      0xadf5
AFFS_SUPER_MAGIC      0xadff
AFS_SUPER_MAGIC       0x5346414f
ANON_INODE_FS_MAGIC   0x09041934 /* 읡λͺ… μ•„μ΄λ…Έλ“œ FS (이름 μ—†λŠ”
                                    가상 νŒŒμΌλ“€μ„ μœ„ν•œ FS.
                                    예: epoll, signalfd, bpf) */
AUTOFS_SUPER_MAGIC    0x0187
BDEVFS_MAGIC          0x62646576
BEFS_SUPER_MAGIC      0x42465331
BFS_MAGIC             0x1badface
BINFMTFS_MAGIC        0x42494e4d
BPF_FS_MAGIC          0xcafe4a11
BTRFS_SUPER_MAGIC     0x9123683e
BTRFS_TEST_MAGIC      0x73727279
CGROUP_SUPER_MAGIC    0x27e0eb   /* Cgroup 가상 FS */
CGROUP2_SUPER_MAGIC   0x63677270 /* Cgroup v2 가상 FS */
CIFS_MAGIC_NUMBER     0xff534d42
CODA_SUPER_MAGIC      0x73757245
COH_SUPER_MAGIC       0x012ff7b7
CRAMFS_MAGIC          0x28cd3d45
DEBUGFS_MAGIC         0x64626720
DEVFS_SUPER_MAGIC     0x1373     /* λ¦¬λˆ…μŠ€ 2.6.17 및 이전 */
DEVPTS_SUPER_MAGIC    0x1cd1
ECRYPTFS_SUPER_MAGIC  0xf15f
EFIVARFS_MAGIC        0xde5e81e4
EFS_SUPER_MAGIC       0x00414a53
EXT_SUPER_MAGIC       0x137d     /* λ¦¬λˆ…μŠ€ 2.0 및 이전 */
EXT2_OLD_SUPER_MAGIC  0xef51
EXT2_SUPER_MAGIC      0xef53
EXT3_SUPER_MAGIC      0xef53
EXT4_SUPER_MAGIC      0xef53
F2FS_SUPER_MAGIC      0xf2f52010
FUSE_SUPER_MAGIC      0x65735546
FUTEXFS_SUPER_MAGIC   0xbad1dea  /* μ‚¬μš© μ•ˆ 함 */
HFS_SUPER_MAGIC       0x4244
HOSTFS_SUPER_MAGIC    0x00c0ffee
HPFS_SUPER_MAGIC      0xf995e849
HUGETLBFS_MAGIC       0x958458f6
ISOFS_SUPER_MAGIC     0x9660
JFFS2_SUPER_MAGIC     0x72b6
JFS_SUPER_MAGIC       0x3153464a
MINIX_SUPER_MAGIC     0x137f     /* μ›νŒ λ―Έλ‹‰μŠ€ FS */
MINIX_SUPER_MAGIC2    0x138f     /* 30문자 λ―Έλ‹‰μŠ€ FS */
MINIX2_SUPER_MAGIC    0x2468     /* λ―Έλ‹‰μŠ€ V2 FS */
MINIX2_SUPER_MAGIC2   0x2478     /* λ―Έλ‹‰μŠ€ V2 FS, 30문자 이름 */
MINIX3_SUPER_MAGIC    0x4d5a     /* λ―Έλ‹‰μŠ€ V3 FS, 60문자 이름 */
MQUEUE_MAGIC          0x19800202 /* POSIX λ©”μ‹œμ§€ 큐 FS */
MSDOS_SUPER_MAGIC     0x4d44
MTD_INODE_FS_MAGIC    0x11307854
NCP_SUPER_MAGIC       0x564c
NFS_SUPER_MAGIC       0x6969
NILFS_SUPER_MAGIC     0x3434
NSFS_MAGIC            0x6e736673
NTFS_SB_MAGIC         0x5346544e
OCFS2_SUPER_MAGIC     0x7461636f
OPENPROM_SUPER_MAGIC  0x9fa1
OVERLAYFS_SUPER_MAGIC 0x794c7630
PIPEFS_MAGIC          0x50495045
PROC_SUPER_MAGIC      0x9fa0     /* /proc FS */
PSTOREFS_MAGIC        0x6165676c
QNX4_SUPER_MAGIC      0x002f
QNX6_SUPER_MAGIC      0x68191122
RAMFS_MAGIC           0x858458f6
REISERFS_SUPER_MAGIC  0x52654973
ROMFS_MAGIC           0x7275
SECURITYFS_MAGIC      0x73636673
SELINUX_MAGIC         0xf97cff8c
SMACK_MAGIC           0x43415d53
SMB_SUPER_MAGIC       0x517b
SOCKFS_MAGIC          0x534f434b
SQUASHFS_MAGIC        0x73717368
SYSFS_MAGIC           0x62656572
SYSV2_SUPER_MAGIC     0x012ff7b6
SYSV4_SUPER_MAGIC     0x012ff7b5
TMPFS_MAGIC           0x01021994
TRACEFS_MAGIC         0x74726163
UDF_SUPER_MAGIC       0x15013346
UFS_MAGIC             0x00011954
USBDEVICE_SUPER_MAGIC 0x9fa2
V9FS_MAGIC            0x01021997
VXFS_SUPER_MAGIC      0xa501fcf5
XENFS_SUPER_MAGIC     0xabba1974
XENIX_SUPER_MAGIC     0x012ff7b4
XFS_SUPER_MAGIC       0x58465342
_XIAFS_SUPER_MAGIC    0x012fd16d /* λ¦¬λˆ…μŠ€ 2.0 및 이전 */

이 MAGIC μƒμˆ˜λ“€ λŒ€λΆ€λΆ„μ€ /usr/include/linux/magic.h에 μ •μ˜λΌ 있으며 μΌλΆ€λŠ” 컀널 μ†ŒμŠ€μ— ν•˜λ“œμ½”λ”© 돼 μžˆλ‹€.

f_flags ν•„λ“œλŠ” 파일 μ‹œμŠ€ν…œ 마운트 μ˜΅μ…˜μ„ λ‚˜νƒ€λ‚΄λŠ” λΉ„νŠΈ λ§ˆμŠ€ν¬μ΄λ‹€. λ‹€μŒ λΉ„νŠΈλ₯Ό 0개 이상 λ‹΄λŠ”λ‹€.

ST_MANDLOCK
파일 μ‹œμŠ€ν…œ μƒμ—μ„œ κ°•μ œμ  락킹을 ν—ˆμš©ν•œλ‹€. (fcntl(2) μ°Έκ³ .)
ST_NOATIME
μ ‘κ·Ό μ‹œκ°„μ„ κ°±μ‹ ν•˜μ§€ μ•ŠλŠ”λ‹€. mount(2) μ°Έκ³ .
ST_NODEV
파일 μ‹œμŠ€ν…œ μƒμ—μ„œ μž₯치 특수 νŒŒμΌμ— λŒ€ν•œ 접근을 λΆˆν—ˆν•œλ‹€.
ST_NODIRATIME
디렉터리 μ ‘κ·Ό μ‹œκ°„μ„ κ°±μ‹ ν•˜μ§€ μ•ŠλŠ”λ‹€. mount(2) μ°Έκ³ .
ST_NOEXEC
파일 μ‹œμŠ€ν…œ μƒμ—μ„œ ν”„λ‘œκ·Έλž¨ 싀행을 λΆˆν—ˆν•œλ‹€.
ST_NOSUID
파일 μ‹œμŠ€ν…œ μƒμ˜ μ‹€ν–‰ νŒŒμΌμ— λŒ€ν•΄ exec(3)μ—μ„œ set-user-ID 및 set-group-ID λΉ„νŠΈλ₯Ό λ¬΄μ‹œν•œλ‹€.
ST_RDONLY
파일 μ‹œμŠ€ν…œμ΄ 읽기 μ „μš©μœΌλ‘œ 마운트 돼 μžˆλ‹€.
ST_RELATIME
mtime/ctime에 λ”°λΌμ„œ atime을 κ°±μ‹ ν•œλ‹€. mount(2) μ°Έκ³ .
ST_SYNCHRONOUS
μ“°κΈ°λ₯Ό 파일 μ‹œμŠ€ν…œμœΌλ‘œ μ¦‰μ‹œ λ™κΈ°ν™”ν•œλ‹€. (open(2)의 O_SYNC μ„€λͺ… μ°Έκ³ .)

f_fsid에 뭐가 λ“€μ–΄κ°€μ•Ό ν•˜λŠ”μ§€λŠ” 아무도 λͺ¨λ₯Έλ‹€. (ν•˜μ§€λ§Œ μ•„λž˜ μ°Έκ³ .)

ν•΄λ‹Ή 파일 μ‹œμŠ€ν…œμ—μ„œ κ·œμ •λΌ μžˆμ§€ μ•Šμ€ ν•„λ“œλŠ” 0으둜 μ„€μ •λœλ‹€.

fstatfs()λŠ” λ””μŠ€ν¬λ¦½ν„° fdκ°€ κ°€λ¦¬ν‚€λŠ” μ—΄λ¦° νŒŒμΌμ— λŒ€ν•΄μ„œ 같은 정보λ₯Ό λ°˜ν™˜ν•œλ‹€.

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EACCES
(statfs()) path의 경둜 μ„ λ‘λΆ€μ˜ μ–΄λŠ μš”μ†Œμ— λŒ€ν•΄ 탐색 κΆŒν•œμ΄ κ±°λΆ€λ˜μ—ˆλ‹€. (path_resolution(7)도 μ°Έκ³ .)
EBADF
(fstatfs()) fdκ°€ μœ νš¨ν•œ μ—΄λ¦° 파일 λ””μŠ€ν¬λ¦½ν„°κ°€ μ•„λ‹ˆλ‹€.
EFAULT
bufλ‚˜ pathκ°€ μœ νš¨ν•˜μ§€ μ•Šμ€ μ£Όμ†Œλ₯Ό 가리킀고 μžˆλ‹€.
EINTR
호좜이 μ‹œκ·Έλ„μ— μ˜ν•΄ μ€‘λ‹¨λ˜μ—ˆλ‹€. signal(7) μ°Έκ³ .
EIO
파일 μ‹œμŠ€ν…œμ—μ„œ 읽기λ₯Ό ν•˜λ˜ 쀑 I/O 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€.
ELOOP
(statfs()) pathλ₯Ό λ³€ν™˜ν•˜λŠ” λ™μ•ˆ λ„ˆλ¬΄ λ§Žμ€ 심볼릭 링크λ₯Ό λ§Œλ‚¬λ‹€.
ENAMETOOLONG
(statfs()) pathκ°€ λ„ˆλ¬΄ κΈΈλ‹€.
ENOENT
(statfs()) pathκ°€ κ°€λ¦¬ν‚€λŠ” 파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
ENOMEM
μ‚¬μš© κ°€λŠ₯ν•œ 컀널 λ©”λͺ¨λ¦¬κ°€ μΆ©λΆ„ν•˜μ§€ μ•Šλ‹€.
ENOSYS
파일 μ‹œμŠ€ν…œμ—μ„œ 이 ν˜ΈμΆœμ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
ENOTDIR
(statfs()) path의 경둜 μ„ λ‘λΆ€μ˜ ν•œ μš”μ†Œκ°€ 디렉터리가 μ•„λ‹ˆλ‹€.
EOVERFLOW
일뢀 값이 λ„ˆλ¬΄ μ»€μ„œ λ°˜ν™˜ ꡬ쑰체둜 ν‘œν˜„ν•  수 μ—†λ‹€.

CONFORMING TO

λ¦¬λˆ…μŠ€ μ „μš©. λ¦¬λˆ…μŠ€μ˜ statfs()λŠ” 4.4BSD의 λ²„μ „μ—μ„œ μ˜κ°μ„ μ–»μ—ˆλ‹€. (ν•˜μ§€λ§Œ 같은 ꡬ쑰체λ₯Ό μ“°μ§€λŠ” μ•ŠλŠ”λ‹€.)

NOTES

statfs ꡬ쑰체 μ •μ˜μ˜ μ—¬λŸ¬ ν•„λ“œμ—μ„œ μ“°λŠ” __fsword_t νƒ€μž…μ€ glibc λ‚΄λΆ€μš© νƒ€μž…μ΄μ§€ μ™ΈλΆ€ μ‚¬μš© μš©λ„κ°€ μ•„λ‹ˆλ‹€. 이 λ•Œλ¬Έμ— ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ κ·Έ ν•„λ“œλ“€μ„ μ§€μ—­ λ³€μˆ˜λ‘œ λ³΅μ‚¬ν•˜κ±°λ‚˜ λΉ„κ΅ν•˜λ € ν•  λ•Œ μ’€ μ–΄λ €μš΄ λ¬Έμ œκ°€ 생긴닀. λŒ€λ‹€μˆ˜ μ‹œμŠ€ν…œμ—μ„œλŠ” 그런 λ³€μˆ˜μ— unsigned intλ₯Ό μ“°λ©΄ μΆ©λΆ„ν•˜λ‹€.

λ¦¬λˆ…μŠ€μ˜ μ›νŒ statfs() 및 fstatfs() μ‹œμŠ€ν…œ ν˜ΈμΆœμ€ 극히 큰 파일 크기λ₯Ό 염두에 두고 μ„€κ³„λ˜μ§€ μ•Šμ•˜λ‹€. κ·Έλž˜μ„œ λ¦¬λˆ…μŠ€ 2.6μ—μ„œ μƒˆλ‘œμš΄ ꡬ쑰체 statfs64λ₯Ό μ΄μš©ν•˜λŠ” μƒˆ μ‹œμŠ€ν…œ 호좜 statfs64() 및 fstatfs64()κ°€ 좔가됐닀. μƒˆ κ΅¬μ‘°μ²΄μ—λŠ” μ›λž˜μ˜ statfs ꡬ쑰체와 같은 ν•„λ“œλ“€μ΄ 있되 큰 파일 크기λ₯Ό 담을 수 μžˆλ„λ‘ μ—¬λŸ¬ ν•„λ“œλ“€μ˜ 크기가 μ»€μ‘Œλ‹€. glibc의 statfs() 및 fstatfs() 래퍼 ν•¨μˆ˜μ—μ„œ 컀널 차이λ₯Ό 투λͺ…ν•˜κ²Œ μ²˜λ¦¬ν•΄ μ€€λ‹€.

μ–΄λ–€ μ‹œμŠ€ν…œμ—λŠ” <sys/vfs.h>만 있고 λ‹€λ₯Έ μ‹œμŠ€ν…œμ—λŠ” <sys/statfs.h>κ°€ 있으며 μ „μžκ°€ ν›„μžλ₯Ό ν¬ν•¨ν•œλ‹€. λ”°λΌμ„œ μ „μžλ₯Ό ν¬ν•¨ν•˜λŠ” 게 μ΅œμ„ μΌ 것 κ°™λ‹€.

LSBμ—μ„œλŠ” 라이브러리 호좜 statfs() 및 fstatfs()λ₯Ό μ“°μ§€ 말고 λŒ€μ‹  statvfs(2) 및 fstatvfs(2)λ₯Ό 쓰라고 ν•œλ‹€.

f_fsid ν•„λ“œ

μ†”λΌλ¦¬μŠ€, Irix, POSIX에 μžˆλŠ” μ‹œμŠ€ν…œ 호좜 statvfs(2)λŠ” struct statvfs(</sys/statvfs.h>에 μ •μ˜λΌ 있음)λ₯Ό λ°˜ν™˜ν•˜κ³  거기에 unsigned long f_fsidκ°€ μžˆλ‹€. λ¦¬λˆ…μŠ€, SunOS, HP-UX, 4.4BSD에 μžˆλŠ” μ‹œμŠ€ν…œ 호좜 statfs()λŠ” struct statfs(<sys/vfs.h>에 μ •μ˜λΌ 있음)λ₯Ό λ°˜ν™˜ν•˜κ³  거기에 fsid_t f_fsidκ°€ 있으며, fsid_tλŠ” struct { int val[2]; }둜 μ •μ˜λΌ μžˆλ‹€. FreeBSD도 λ§ˆμ°¬κ°€μ§€μ΄λ˜ 헀더 파일 <sys/mount.h>λ₯Ό μ“΄λ‹€.

κΈ°λ³Έ κ°œλ…μ€ f_fsid에 μ–΄λ–€ μž„μ˜μ˜ λ‚΄μš©λ¬Όμ΄ μžˆμ–΄μ„œ (f_fsid,ino) 쌍이 νŒŒμΌμ„ μœ μΌν•˜κ²Œ κ²°μ •ν•΄ μ€€λ‹€λŠ” 것이닀. μ–΄λ–€ 운영 μ²΄μ œμ—μ„œλŠ” μž₯치 번호λ₯Ό (λ˜λŠ” κ·Έκ±Έ λ³€ν˜•ν•΄μ„œ) μ“°κ±°λ‚˜ μž₯치 λ²ˆν˜Έμ— 파일 μ‹œμŠ€ν…œ νƒ€μž…μ„ ν•©μ³μ„œ μ“΄λ‹€. μ—¬λŸ¬ 운영 μ²΄μ œμ—μ„œλŠ” f_fsid ν•„λ“œλ₯Ό μˆ˜νΌμœ μ €μ—κ²Œλ§Œ μ œκ³΅ν•œλ‹€. (λΉ„νŠΉκΆŒ μ‚¬μš©μžμ—κ²ŒλŠ” 0으둜 μ±„μš΄λ‹€.) NFS둜 내보낼 λ•Œ 파일 μ‹œμŠ€ν…œμ˜ 파일 핸듀에 κ·Έ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ κ·Έ 값을 μ•Œλ € μ£ΌλŠ” 게 λ³΄μ•ˆ 우렀 사항이기 λ•Œλ¬Έμ΄λ‹€.

일뢀 운영 μ²΄μ œμ—μ„œλŠ” κ·Έ fsidλ₯Ό sysfs(2) μ‹œμŠ€ν…œ 호좜 두 번째 인자둜 μ“Έ 수 μžˆλ‹€.

BUGS

λ¦¬λˆ…μŠ€ 2.6.38λΆ€ν„° λ¦¬λˆ…μŠ€ 3.1κΉŒμ§€μ—μ„œλŠ” pipe(2)둜 μƒμ„±λœ 파일 λ””μŠ€ν¬λ¦½ν„°μ— λŒ€ν•΄ fstatfs()κ°€ ENOSYS 였λ₯˜λ‘œ μ‹€νŒ¨ν•œλ‹€.

SEE ALSO

stat(2), statvfs(3), path_resolution(7)


2017-09-15

⚠️ **GitHub.com Fallback** ⚠️