컨테이너가있는 매우 밀도가 높은 가상화 환경이 있으므로 각 컨테이너를 실제로 작게 만들려고합니다. "정말 작은" 은 패키지 관리자 호환성을 손상시키지 않으면 서 기본 Ubuntu 14.04 (Trusty Tahr)에서 87MB를 의미 합니다.
따라서 컨테이너의 백업 저장소로 LVM 을 사용 하고 최근에 매우 이상한 숫자를 발견했습니다. 여기 있습니다.
100MiB (예, 2의 거듭 제곱) 논리 볼륨을 만들어 봅시다.
sudo lvcreate -L100M -n test1 /dev/purgatory
크기를 확인하고 싶습니다. sudo lvs --units k
test1 purgatory -wi-a---- 102400.00k
Sweet, 이건 정말 100MiB입니다.
이제 ext4 파일 시스템을 만들어 보자 . 물론 -m 0
공간 낭비를 막는 매개 변수 를 기억 합니다.
sudo mkfs.ext4 -m 0 /dev/purgatory/test1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
25688 inodes, 102400 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
달콤하고 깨끗합니다. 블록 크기를 고려하십시오. 논리 볼륨이 작기 때문에 mkfs.ext4는 일반적인 4 KiB가 아닌 1 KiB 크기의 블록을 만들기로 결정했습니다.
이제 마운트하겠습니다.
sudo mount /dev/purgatory/test1 /mnt/test1
그리고 df
매개 변수없이 호출합시다 (1 KiB 블록을보고 싶습니다)
/dev/mapper/purgatory-test1 95054 1550 91456 2% /mnt/test1
잠깐만 요 ~
우리는 총 95054 블록을 가지고 있습니다. 그러나 장치 자체에는 1 KiB의 102400 블록이 있습니다. 스토리지는 92.8 %에 불과합니다. 내 블록 어 Where 어?
실제 블록 장치에서 살펴 보겠습니다. A에는 16GiB 가상 디스크, 1777의 16777216 블록이 있지만 15396784 블록 만 df 출력에 있습니다. 91.7 %, 무엇입니까?
이제 조사를 따릅니다 (스포일러 : 결과 없음).
파일 시스템이 장치의 시작 부분에서 시작할 수 없습니다. 이것은 이상하지만 가능합니다. 다행히도 ext4에는 매직 바이트가 있습니다.
sudo hexdump -C / dev / purgatory / test1 | grep "53 ef"
이것은 수퍼 블록을 보여줍니다 :
00000430 a9 10 e7 54 01 00 ff ff 53 ef 01 00 01 00 00 00 |...T....S.......|
16 진수 430 = 1072 년 12 월이므로 첫 킬로바이트 이후 합리적인 것으로 보입니다 .ext4는 VBR 등과 같은 이상한 점에 대해 처음 1024 바이트를 건너 뜁니다.
- 이것은 일기입니다!
전혀 그렇지 않다. df 출력의 경우 저널에서 사용 가능한 공간을 확보합니다.
- 오, 우리는 dump2fs를 가지고 있고 거기에서 크기를 확인할 수 있습니다!
... 많은 greps ...
sudo dumpe2fs /dev/purgatory/test1 | grep "Free blocks"
아야.
Free blocks: 93504
Free blocks: 3510-8192
Free blocks: 8451-16384
Free blocks: 16385-24576
Free blocks: 24835-32768
Free blocks: 32769-40960
Free blocks: 41219-49152
Free blocks: 53249-57344
Free blocks: 57603-65536
Free blocks: 65537-73728
Free blocks: 73987-81920
Free blocks: 81921-90112
Free blocks: 90113-98304
Free blocks: 98305-102399
그리고 또 다른 번호가 있습니다. 93504 개의 무료 블록.
문제는 무엇입니까?
- 블록 장치 : 102400k (LVS는 말합니다)
- 파일 시스템 크기 : 95054k (df 말한다)
- 무료 블록 : 93504k (dumpe2fs 말한다)
- 사용 가능한 크기 : 91456k (df says)
ext2
는 여기서 합리적으로 보입니다.
ext2
작은 파티션에 사용 합니다.