재부팅하지 않고 새 fdisk 테이블을 어떻게 사용합니까 (kpartx)?


11

fdisk를 실행하고 파티션 크기를 변경하면 fdisk는 출력이 끝날 때 말합니다.

The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)

재부팅하지 않고 그렇게하고 싶습니다 (그리고 스크립트를 작성하십시오) kpartx 를 사용 하여 올바르게 수행 하려면 어떻게합니까 ? 난 노력 했어:

kpartx -f -v /dev/mmcblk0

어떤 출력 :

mmcblk0p1 : 0 102400 /dev/mmcblk0 2048
mmcblk0p2 : 0 7657472 /dev/mmcblk0 104448

과:

kpartx -a -v /dev/mmcblk0

어떤 출력 :

device-mapper: reload ioctl on mmcblk0p1 failed: Invalid argument
create/reload failed on mmcblk0p1
add map mmcblk0p1 (0:0): 0 102400 linear /dev/mmcblk0 2048
device-mapper: reload ioctl on mmcblk0p2 failed: Invalid argument
create/reload failed on mmcblk0p2
add map mmcblk0p2 (0:0): 0 7657472 linear /dev/mmcblk0 104448

raspi를 실행중인 데비안의 SD 카드 용입니다.

편집 : 내가하려는 일을 분명히하기 위해; SD 카드에서 사용하지 않는 p3을 삭제하고 p2의 크기를 조정하여 카드를 채 웁니다. 이 카드에는 현재 작은 부팅 파티션 p1이 포함되어 있으며 p2는 OS가있는 곳입니다.


SD 카드가 현재 사용 중입니까? (예 : 파일 시스템이 마운트되어 있습니까?)
derobert

@derobert, 그렇습니다. 여기에는 2 개의 파티션이 있습니다 : 작은 부팅 파티션과 대부분의 OS가있는 큰 기본 파티션. 카드를 채우기 위해 두 번째 파티션을 확장하려고합니다.
Octopus

2
나는 이것이 그 대답이라고 확신합니다. 장치를 사용하지 않으면 커널은 파티션 테이블을 다시 읽지 않습니다.
derobert

합니까의 partprobe도움?
질 'SO-정지 존재 악마'

답변:


7

원하지 partx -u않는 kpartx(device-mapper 장치에서 작동).


-u깃발 의 목적은 무엇입니까 ?
IgorGanapolsky 1

1
@IgorGanapolsky, 디스크 1과 일치하도록 커널 파티션 테이블 을 업데이트 합니다. 빠른 man partx대답이 이걸 대답했을 것입니다.
psusi

@Octopus 이것은 partprobe 가하지 않은 나를 위해 그것을했습니다. 그런 다음 Partprobe가 해당 오류없이 반환되었습니다.
Duncan X Simpson

6

나는 @derobert (원래 질문에 대해 논평 한 사람)가 맞을 것이라고 생각합니다. 현재 사용중인 파티션을 fdisk하는 경우 다시 부팅하는 것 외에 다른 옵션이없는 것 같습니다.

partprobe(으로 얻은 apt-get install parted)을 사용하더라도 다음과 같은 결과가 나타납니다.

Error: Partition(s) 2, 3 on /dev/mmcblk0 have been written, but we have 
been unable to inform the kernel of the change, probably because it/they 
are in use.  As a result, the old partition(s) will remain in use.  You 
should reboot now before making further changes.

나는 같은 일을했다. 좋은 소식은 partprobe <device>를 실행하고 재부팅하지 않고 두 파티션을 다시 마운트 할 수 있다는 것이다. 불행히도 여전히 서비스 종료로 인한 가동 중지 시간이 필요했습니다.
Rahly

3
최신 버전의 parted/ partprobe는 이러한 오류를 발생시키지 않으며 재부팅하지 않고 탑재 된 파티션에서 사용할 수 있습니다.
psusi

@psusi, 나는 최신 버전을 사용하고 parted있지만 여전히 같은 오류가 발생합니다. 해결책은 장치에서 실행하기 전에 장치를 마운트 해제하는 parted것입니다. 그러면 이전 파티션 대신 새 파티션을 사용하도록 커널에 알리기 위해 시스템을 재부팅하지 않아도됩니다.
MyWrathAcademia

1

장치 마운트를 해제하는 것을 잊었 기 때문에이 문제가 발생했습니다. 후 :

sudo umount /dev/sdb

fdisk가 올바르게 작동했습니다.


1
여전히 오류가 발생합니다. ioctl ()을 호출하여 파티션 테이블을 다시 읽습니다. 다시 읽기 파티션 테이블에 실패 : 장치 또는 리소스 바쁜
IgorGanapolsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.