다음과 같은 방법으로 디스크를 마운트한다고 가정해 보겠습니다.
mount /dev/sdb /mnt/tmp
이 파일 시스템에 일부 파일이 열려 있지만 마운트 해제하고 싶지 않습니다. 그런데 일시적으로 장치를 추출한 다음 다시 연결하고 싶습니다. 이 파일 시스템에 대한 모든 읽기 및 쓰기가 캐시에서만 수행되도록 하거나 장치를 다시 연결할 때까지 중단되기를 원합니다.
임시 분리를 미리 고려하고 있었다면 장치 매퍼를 사용하겠습니다.
# ls -lh /dev/sdb
brw-rw---- 1 root floppy 8, 16 Sep 12 17:38 /dev/sdb
# blockdev --getsize /dev/sdb
2211840
# dmsetup create sdb_detachable --table '0 2211840 linear 8:16 0'
# mount /dev/mapper/sdb_detachable /mnt/tmp
(start working with the filesystem)
(suddenly need to detach the device)
# dmsetup suspend sdb_detachable
# dmsetup load sdb_detachable --table '0 2211840 error'
# blockdev --flushbufs /dev/sdb
(eject the device)
(maybe even use the cached part of the filesystem)
(reattach the device, now it appears as /dev/sdc)
# ls -lh /dev/sdc && blockdev --getsize /dev/sdc
brw-rw---- 1 root floppy 8, 32 Sep 12 17:51 /dev/sdc
2211840
# dmsetup load sdb_detachable --table '0 2211840 linear 8:32 0'
# dmsetup resume sdb_detachable
(filesystem is usable again)
(finished using it, now need to clean up)
# umount /mnt/tmp/
# dmsetup remove sdb_detachable
# eject /dev/sdc
장치를 직접 설치하는 경우 어떻게 구현하나요? 장치 매퍼에 "훔칠" 수 있나요?
답변1
글쎄요. 멋지네요. 나는 dmsetup
그것이 이루어질 수 있다는 것을 몰랐습니다 . :)
내 유일한 대답은 시스템을 일시 중지/최대 절전 모드로 전환하고 플래시 드라이브를 분리한 다음 다른 곳에서 수행한 다음 시스템을 복원하기 전에 플래시 드라이브를 다시 넣는 것입니다.
불행하게도 이러한 작업을 수행하면 장치의 파일 시스템이 손상될 수 있습니다. 아마도이것은 당신이 하는 모든 일이 그것에서 읽는 것뿐이라면 작동합니다(그리고 장치의 어느 곳에도 블록을 쓰지 마십시오).
그러나 대부분의 플래시 장치에는 다시 쓰기 반복 제한이 있으므로 (일부 장치에서는) 쓰기에 정확히 동일한 데이터가 포함되어 있어도 쓰기가 발생하면 펌웨어가 콘텐츠를 이동할 수 있습니다. 이는 장치를 첫 번째 시스템으로 다시 가져오면 파일 시스템이 손상될 수 있음을 의미합니다.
그래도 흥미로운 질문입니다. :)