특정 섹터 또는 블록에 데이터 쓰기

특정 섹터 또는 블록에 데이터 쓰기

더 적합한지는 잘 모르겠습니다뿌리~의서버 장애보드, 말해봐.

다시 파티션을 나눈 드라이브가 있습니다 fdisk. 처음에는 하나의 큰 파티션만 있었지만 지금은 여러 개의 파티션이 있습니다. 이제 커널은 다음에 재부팅할 때까지 새 파티션 테이블을 고려하지 않습니다.

요점은 NFS를 통해 공유되는 일부 데이터가 드라이브에 있고 재부팅 시 드라이브에 있어야 한다는 것입니다. 또한 일시적이라도 구성 파일을 수정하지 않고 싶습니다. 따라서 이러한 데이터가 /dev/sdb1이전 파티션에 해당하는 첫 번째 파티션에 있는지 확인하여 다음 부팅 시 즉시 사용할 수 있도록 하고 싶습니다 .

그렇다면 드라이브의 특정 섹터나 블록에 데이터를 쓰는 (쉬운) 방법이 있습니까? 이것이 dd"탐색" 옵션의 목적입니까? 이 작업을 수행하면 새 파티션이 고려되면 다음 재부팅 시에도 데이터를 계속 읽을 수 있습니다. 그렇죠?

FWIW, 데이터 크기는 2.1MB로 크지 않지만 /dev/sdb182MB에 불과하고 드라이브는 160GB입니다.

감사해요.

편집: 전체 기록과 파티션 테이블을 다시 로드할 수 없는 이유(최상의 솔루션)는 다음을 참조하세요.이 문제존재하다서버 장애.

Edit2: 좋아, NFS를 설정하기 전에 컴퓨터를 재부팅한 후 다른 곳에서 파일을 복사하는 해결 방법을 찾았을 수도 있습니다.

Edit3: 괜찮습니다. Edit2는 /dev/sdb1아직 포맷되지 않았습니다...

편집 4: 실제로 이 마지막 편집은 모든 상황에 적용되므로 전체 질문을 포기할 수 있습니다. 좀 더 일찍 생각했어야 했는데...

답변1

NFS를 처리하고 이전 드라이브 내보내기를 중지해야 합니다. "선택 사항이 아니다"라고 부정할 수는 없습니다.

즉, 커널 파티션에 의존하지 않고 장치의 특정 블록에 직접 액세스하려는 경우에는 가능합니다. 그러면 dd해당 옵션 seekskip작동합니다. 다양한 분야에 접근하고 싶다면블록 장치losetup, 특정 오프셋 및 크기 제한을 갖도록 설정한 루프 장치를 사용할 수 있습니다 . 마지막으로, 장치에 연결된 가상 머신에서 언제든지 새 커널을 시작할 수 있습니다(예: 다음을 libguestfs사용 )./dev/sdb

답변2

커널이 파티션 테이블을 다시 읽도록 유도하는 기술을 살펴보는 것은 어떨까요? 예를 들어 아래 설명과 같이 partprobe를 사용할 수 있습니다.여기.

또 다른 옵션은 -R플래그를 지정 하는 것입니다.플로피 디스크.

또 다른 옵션은 위에서 언급한 것처럼 blockdev입니다.여기.

관련 정보