
Mount는 선택적으로 offset
파일 시스템이 장치의 시작 부분에서 시작되지 않고 그 뒤의 특정 바이트 수에서 시작되도록 지정할 수 있습니다. resize2fs
해당 옵션 없이 장치 시작 시 시작되지 않는 파일 시스템의 크기를 어떻게 조정합니까 ?
답변1
옵션은 마운트에 직접 전달되지 않지만 대신 offset
기본 블록 장치의 오프셋을 참조하는 루프 장치를 설정합니다. 그런 다음 Mount는 원래 블록 장치 자체가 아닌 해당 루프 장치에서 작업을 수행합니다.mount
losetup
다음과 같이 파일 시스템에서 losetup
make play를 사용할 수도 있습니다 .resize2fs
# losetup --offset=<offset> --find --show /dev/<device>
/dev/loop0
# resize2fs /dev/loop0 <newsize>
# losetup --detach /dev/loop0
(resize2fs 작업의 예는 불완전할 수 있습니다)
losetup
--find
전달된 첫 번째 자유 루프 장치를 검색합니다 (이 예에서는 /dev/loop0). --show
이 루프 장치를 STDOUT으로 출력합니다.
답변2
블록 장치 시작 부분의 여유 공간에서 ext4 파일 시스템을 확장하기 전에 다른 사람들이 어떻게 수행했는지 검색해 보았는데 귀하의 질문이 제가 찾을 수 있는 가장 가까운 일치인 것 같았습니다. 하지만 제공된 답변은 귀하가 요청한 내용이나 제가 필요한 답변이 정확히 아닙니다. 방금 디스크 처음부터 크기 조정/확장에 성공했기 때문에 제 생각을 공유하기로 했습니다.
간단히 말해서 프로세스는 다음과 같습니다. 1.) 확장/확장할 파일 시스템: 파티션의 ext4 파일 시스템, 섹터 1026048에서 시작하여 블록 장치 끝에서 끝납니다( /dev/sdb
제 경우). 2.) 해당 파일에서 시스템의 블록 장치 시작 부분에 데이터를 이동해야 하며 dd
미래/새 파티션의 시작 부분으로 데이터를 이동해야 합니다. 3.) 기존 파티션을 삭제하고 새 시작 섹터로 다시 생성합니다. 4.) resize2fs
새 파티션 크기로 확장하려면
사용된 명령 및 방법에 대한 세부정보:
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
(위 정보는 에서 공개합니다 fdisk -l /dev/sdb
.)
dd
탐색 및 건너뛰기 오프셋을 계산합니다 ( bs
이 경우 bs
섹터 크기와 일치 ).
# dd seek=2048 skip=1026048 if=/dev/sdb bs=512 of=/dev/sdb
따라서 데이터를 1026048 섹터에서 새 파티션이 시작될 2048 섹터로 이동하려고 합니다. 입력에서 더 많이 읽을수록 더 멀어지기 때문에 아무것도 잃지 않아야 합니다. 따라서 출력으로 덮어쓰기를 시작할 때(결국 섹터 1026048에 도달하게 됨) 장치 시작 부분을 복사하고 계속합니다.
그런 다음 fdisk
이전 파티션을 삭제하고 2048 섹터부터 다시 생성하십시오.
완료되면 다음을 실행할 수 있습니다.
# partprobe /dev/sdb or
# blockdev --rereadpt /dev/sdb
# resize2fs /dev/sdb<num>
파일 시스템을 확장합니다.
이러한 낮은 수준의 작업을 수행하기 전에 반드시 데이터를 백업하십시오. 특정 단계가 실패하거나 시스템이 충돌하거나 정전되면 데이터가 손실될 수 있습니다. 이는 블록 장치의 단일 파티션을 설명하는 예입니다. 설정이 다를 수 있으므로 있는 그대로 사용하지 마세요. 작동 방식을 배우고 이해한 다음 테스트하고 예상한 결과를 얻으면 위험을 감수하고 실시간 데이터에서 실행하십시오!
다른 사람들에게도 도움이 되기를 바랍니다. 피드백과 개선이 필요한 부분/자세한 내용은 환영합니다.
감사합니다!