클러스터 크기 찾기

클러스터 크기 찾기

Ubuntu 11.04를 실행하고 있는데 할당 단위의 크기를 어떻게 구하는지 궁금합니다. 우분투에 이것을 찾는 명령이 있습니까? 또한 할당 단위의 크기에 따라 파일이 사용하는 하드 디스크 공간의 총량이 달라지나요? 을 사용하여 파일 크기를 ls확인 했으며 du -b두 경우 모두 동일한 값을 얻었습니다.

데이터 포함:

 sudo tune2fs -l <file system> 
  Block count:              8052736
  Reserved block count:     402636
  Free blocks:              2797402
  First block:              0
  Block size:               4096
  Reserved GDT blocks:      1022
  Blocks per group:         32768
   Inode blocks per group:   512
  Flex block group size:    16
  Reserved blocks uid:      0 (user root)
  Reserved blocks gid:      0 (group root)
  Journal backup:           inode blocks

따라서 블록 크기가 4096바이트인 경우 4096보다 작은 파일은 하드 디스크에서 4096바이트의 저장 공간을 차지합니다. 4096바이트보다 큰 파일은 얼마나 많은 공간을 차지합니까? 같은 것을 찾는 명령이 있습니까?

답변1

상위 게시물 편집:
크기를 선제적으로 검색:

온도 = int(크기/블록)  
mod(크기/블록) != 0인 경우:  
    온도 += 1
온도 = 온도*블록
인쇄 온도

파일이 디스크에 있는 블록 수를 확인하려면 다음을 수행하세요.

ls -s

여기서 블록 크기는 파티션 블록 크기
이고 디스크 크기는 블록 크기 * 블록 수입니다.


sudo fdisk -l /dev/sda
/dev/sda가 문제의 하드 디스크일 때 블록 크기 용어 차이에 대한 설명

디스크 /dev/sda: 500.1GB, 500107862016바이트
255개 헤드, 63개 섹터/트랙, 60801개 실린더, 총 976773168개 섹터
단위 = 1 * 512 = 512바이트의 섹터
섹터 크기(논리적/물리적): 512바이트 / 512바이트
I/O 크기(최소/최적): 512바이트 / 512바이트
디스크 식별자: 0x000c1f6b

   장치 부팅 시작 끝 블록 ID 시스템
/dev/sda1 * 63 498014 248976 83 리눅스
/dev/sda2 498015 976768064 488135025 5 확장
/dev/sda5 498078 976768064 488134993+ 83 리눅스
이것은 몇 가지 사실을 알려줍니다. 다른 사람이 이미 더 좋다고 말했으므로 인용문을 인용하세요.

문제는 명심해야 할 네 가지 별개의 단위가 있다는 것입니다. 설상가상으로 이 유닛 중 두 개가 같은 이름을 가지고 있습니다. 다음은 다양한 단위입니다.

  1. 하드웨어 블록 크기, "섹터 크기"
  2. 파일 시스템 블록 크기, "블록 크기"
  3. 커널 버퍼 캐시 블록 크기, "블록 크기"
  4. 파티션 테이블 블록 크기, "실린더 크기"

파일 시스템 블록 크기와 버퍼 캐시 블록 크기를 구별하기 위해 FAT 용어를 따르고 파일 시스템 블록 크기에 "클러스터 크기"를 사용하겠습니다.

섹터 크기는 하드웨어가 처리하는 단위입니다. 이는 다양한 하드웨어 유형에 따라 다르지만 대부분의 PC 스타일 하드웨어(플로피, IDE 디스크 등)는 512바이트 섹터를 사용합니다.

클러스터 크기는 파일 시스템이 사용하는 할당 단위이며 조각화의 원인입니다. 이에 대해 알고 계실 것입니다. 적당한 크기의 ext3 파일 시스템에서는 일반적으로 4096바이트이지만 dumpe2fs를 사용하여 이를 확인할 수 있습니다. 이들은 일반적으로 "블록"이라고도 불리며 여기서는 클러스터라고만 지칭합니다.

클러스터 크기는 프로그램이 파일의 실제 디스크 사용량을 계산할 수 있도록 상태 버퍼의 st_blksize로 반환됩니다.

블록 크기는 커널이 저장 장치(따라서 "블록 장치"라는 이름)에서 읽은 섹터를 캐시할 때 내부적으로 사용하는 버퍼의 크기입니다. 이는 커널에서 가장 원시적인 형태의 저장소이므로 모든 파일 시스템 클러스터 크기는 이의 배수여야 합니다. 이 블록 크기는 사용자 공간 프로그램에서 거의 항상 참조되는 크기이기도 합니다. 예를 들어, -h 또는 -H 옵션 없이 "du"를 실행하면 파일이 차지하는 블록 수를 반환합니다. df는 이러한 블록의 크기도 보고하며, fdisk -l 출력의 "Blocks" 열은 이 유형입니다. 가장 일반적으로 "블록"이라고 불리는 것입니다. 두 개의 디스크 섹터가 각 블록에 맞습니다.

실린더 크기는 파티션 테이블과 BIOS에서만 사용됩니다(그리고 BIOS는 Linux에서 사용되지 않습니다).

"df"는 파일 시스템에서만 작동하므로 파일 시스템 없이는 사용할 수 없습니다. 파일 시스템이 없으면 반환할 데이터가 존재하지 않습니다. "du"는 개별 파일에서 작동합니다.

~에서여기.

답변2

stat마운트 지점을 매개변수로 사용하여 실행되는 명령은 IO Block속성 아래에 파일 시스템의 클러스터 크기를 표시합니다.

stat /dev/shm/minifs-mounted

표시됩니다

  File: /dev/shm/minifs-mounted
  Size: 1024            Blocks: 2          IO Block: 1024   directory
Device: 709h/1801d      Inode: 2           Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-12-27 14:03:15.000000000 -0300
Modify: 2022-12-27 14:01:50.000000000 -0300
Change: 2022-12-27 14:01:50.000000000 -0300
 Birth: -

위 정보는 다음으로 생성된 파일 시스템에 속합니다.

cd /dev/shm
dd if=/dev/zero bs=1M count=100 of=minifs.img
mkfs.ext4 -b 1024 ./minifs.img
mount -o loop minifs.img minifs-mounted

1024바이트 길이의 클러스터 강제 적용

관련 정보