sometext
임의의 데이터로 이름이 지정된 파일을 만들었습니다 . 여러 프로그램을 사용하여 이 파일의 메타데이터를 확인하고 싶습니다. 나는 그것을 사용 filefrag
하고 stat
프로그래밍했습니다.
kd@kd-VPCEB2S1E ~/Downloads $ stat sometext
File: 'sometext'
Size: 16 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 6298184 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ kd) Gid: ( 1000/ kd)
Access: 2018-04-19 09:39:07.263246674 +0200
Modify: 2018-04-19 09:39:06.527234524 +0200
Change: 2018-04-19 09:39:06.527234524 +0200
Birth: -
kd@kd-VPCEB2S1E ~/Downloads $ filefrag -v sometext
Filesystem type is: ef53
File size of sometext is 16 (1 block of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 25369307.. 25369307: 1: last,eof
sometext: 1 extent found
kd@kd-VPCEB2S1E ~/Downloads $
두 프로그램 모두 파일 크기가 16 bytes
, block
크기가 4096 bytes
. 지금까지는 훌륭했지만 stat
파일을 표시하려면 가 필요 8 blocks
하고 filefrag
파일을 표시하려면 1 block
.
왜 그렇게 큰 차이가 있습니까? 내가 놓친 게 무엇입니까?
답변1
IO 블록예블록 크기블록 장치와 상호 교환하는데 사용됩니다.
막힌( stat
)는 파일 시스템 번호입니다.셀(물론 파일 시스템 유형에 따라), 파일을 저장하는 데 필요합니다. 테스트하는 것은 쉽습니다:
$ stat shell
File: ‘shell’
Size: 4295 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 16997503 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 1000/ yurij) Gid: ( 1000/ yurij)
Access: 2018-04-11 18:17:38.614827347 +0300
Modify: 2018-04-11 18:17:34.359967012 +0300
Change: 2018-04-19 01:07:03.729000000 +0300
Birth: -
$ pwd
/home/yurij/develop/shell/usr/local/bin
$ sudo blockdev --getbsz /dev/mapper/cl-root
[sudo] password for yurij:
512 # cell size in bytes
8KB = 8192바이트
8192바이트 / 512바이트 = 16블록
filefrag
:
$ filefrag -v shell
Filesystem type is: 58465342
File size of shell is 4295 (2 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 1: 1141480.. 1141481: 2: eof
shell: 1 extent found
블록 장치에서 파일을 읽거나 블록 장치에 파일을 쓰려면 두 번의 읽기/쓰기 작업이 필요합니다.