반응형

<vmware 기준>

사례: 새로 볼륨을 추가(100G) 후 리부팅을 하였으나 fdisk -l 하였을 때 새로운 볼륨이 추가되지 않는 현상


OS : Redhat 4 버전

거의 모든 장치들은 시스템 설치 당시에 모두 생성되어 마운트까지 되어있기 때문에 왠만해서는

장치파일을 만들필요가 없다.

하지만 수동으로 장치파일을 만들어 줘야 할때가 있다.

(볼륨을 추가하고 보통 리부팅을 하면 장치파일이 자동으로 생성되는데 되지 않을 경우,

일부 오래된 OS버전에서 발생하는 것으로 추정됨)


1. 먼저 디스크(볼륨)가 인식이 되었는지 확인


 1) /var/log/dmesg 확인

   SCSI device sdc : 209715200 512-byte hdwr sectors (107374MB)

   sdc : cache data unavailable

   sdc : assuming drive cache : write through

   sdc : unknown partition table

   Attached scsi disk sdc at scsi0, channel 0, id 2 lun 0

   --> sdc 100G 가 인식이 되어있는게 보인다.


 2) /proc/scsi/scsi 확인

   Host : scsi0 channel : 00 Id : 02 Lun : 00

   Vender : VMware Model : Virtual disk Rev:1.0

   Type : Direct-Access          ANSI SCSI revision : 02

   --> 마찬가지로 추가가 되어있는 것이 보인다.


 3) /proc/partitions 확인

  major     minor     #blocks     name

   8          0       71171907     sda

   8         16      314572800     sdb

   8         32      104857600     sdc --> /dev/sdc 100G 짜리가 보인다.

---------------------------------------------------------------------------------------------------------


2. 해결방법 : 블럭 디바이스를 생성 해준다.(mknod)


<사용 형식>


mknod [장치명][옵션][major 값][minor 값]


옵션

b : 블럭 디바이스 파일

c : 문자 디바이스 파일


여기서는 블럭 디바이스 파일을 생성 할 것이므로 b 옵션을 준다.


# mknod /dev/sdc b 8 32


하고 나서 fdisk -l 을 하면 /dev/sdc 가 보일 것이다.

Block device 와 Character device

[Block device]

* serial 한 특성의 데이터를 다루기 위한 디바이스를 지칭하며, Terminal, Serial Port 등이 포함이 된다.

- 데이터 버퍼링이 불가능함

- 정해진 단위(Block, Sector)로 데이터를 전송한다.

- ioctl() 시스템 콜을 이용한 핸들링을 기본으로 한다.


[Character device]

* Random Access가 가능한 데이터를 다루기 위한 디바이스를 지칭하며, Disk, Tape 등이 포함이 된다.

- 데이터 버퍼링이 가능

- 데이터 전송단위를 byte를 기본으로 한다.

- 마운트와 언 마운트가 가능하다.



Block Device

Character Device

데이터 전송

System buffer 사용 (Block, Sector)

byte 단위로 전송

I/O 전송속도

전송속도가 높다

시스템의 I/O Buffer를 사용하지 않아 느릴 수도 있으나 버퍼처리를 응용프로그램이 제어하므로 응용 프로그램의 성능에 따라 다를 수 있다

대표적인 장치

하드 디스크

테이프 장치

플로피 디스크

광 자기 디스크

단말기

프린터

플로터 및 기억장치




반응형

+ Recent posts