디바이스를 오픈하여 사용한 경우
글쓴이: iyouhe / 작성시간: 목, 2003/03/20 - 9:04오전
일반적으로 리눅스에서 ext2파일시스템을 사용하는데 , 파일 시스템을 사용하지 않고 그대로 사용하기 위해서 아래와 같이 하드디스크 디바이스를 열고
int fd= open("/dev/hda4",O_WRI...);
for( i = 0 ; i < 10 ; i++ )
{
size = write(fd,buf,1024);
}
이렇게 사용한 후 재 부팅시 루트 파티션을 마운트 하지 못하고 있습니다.
/dev/hda1을 사용한 것도 아닌데 왜 루트 파티션을 마운트 하지 못하는 걸까요?
복구할 순 없나요?
그리고 row 파티션으로 , 파일 시스템없이 write를 하는건 더 빠르게 write를 하나요? 그렇게 하려면 어떻게 해야 하나요?
질문이 많아서 죄송합니다. 고수님들의 답변을 기다리겠습니다.
Forums:
먼저 쓰신 글과 더불어....복구 불가능해보이는 군요.devi
먼저 쓰신 글과 더불어....
복구 불가능해보이는 군요.
device에 직접 쓰기를 하셨다니...
---
http://coolengineer.com
기존에 존재하는 filesystem을 이용하지 않고 바로 write 하는
기존에 존재하는 filesystem을 이용하지 않고 바로 write 하는 경우가 빠르다고 말하기는 힘들 것 같습니다. 기존에 존재하던 filesystem은 대개 충분한 세월을 두고 나름대로 buffer scheduling이 최적화된 상태라고 봐야 하기 때문이죠. 이들보다 효율적인 buffering을 하지 않는 한, 느리면 느렸지 빨라지지 않으리라 봅니다.
될지 안될진 모르겠지만fstab에 /dev/hda4 관련된 부분이 있
될지 안될진 모르겠지만
fstab에 /dev/hda4 관련된 부분이 있다면 지워주세요.
일단.. 루트 파티션과 다른 파티션인 것 같은데요..어떤 용도로 사용
일단.. 루트 파티션과 다른 파티션인 것 같은데요..
어떤 용도로 사용하는 파티션이었는지 적는 것이 좋을 것 같습니다.
현재 주어진 정보로 보기에는 루트 파티션을 마운트하지 못하는 것보다는..
그냥 해당 파티션을 읽지 못하는 정도인 것 같네요.
그리고 raw disk I/O 를 하게 되면,
아무래도 파일시스템 레이어와 커널 버퍼를 한번 덜 통하니까 속도는 빠릅니다.
물론.. 단 한번의 디스크 I/O자체가 빠르다는 거죠.
현재 사용하신 코드를 보면, 오히려 파일시스템을 통해서 기록하는 것이 빠를 것입니다.
왜냐하면, 10번의 디스크 I/O가 필요하니까요.
아마 파일시스템은 한번 혹은 세번에 디스크에 기록할 겁니다.
물론 튜닝하기 나름입니다만...
하지만,
write (fd, buf, 10 * 1024);
라고 했다면, 빠를 가능성은 더 있습니다. ^^
파일시스템을 하나 구현하실 생각이 있으시다면 raw 디스크 I/O를 쓰시고..
그렇지 않다면.. 기존의 파일시스템을 쓰십시오..
파일시스템을 구현하는 거 머리아픕니다 --;
서명:
이것은 올리는 글에 첨부될 사인 문구입니다. 제한은 255 글자입니다
댓글 달기