파일시스템을 세팅하는 경우는 많았지만, raw device를 등록하는 작업은 처음이었다. (입사한지 8개월밖에 안되긴 했음)
주용과장님도 한번밖에 안해보셨다는거 보면 그리 흔하지 않은 작업인 듯 하다.
이번 작업은 협력사가 진행하신다해서 우리가 작업에 참여하지는 않지만, 정말 작업계획서를 쓰는 것 처럼 작성해보라고 과제를 주셨다.. 그래서 개인pc에 직접 raw device를 등록해보기로 했다.
0. 기존 형상
df -h | ![]() |
lsblk | ![]() |
lvm형상 | ![]() |
앞으로 할 내용은 아래와 같다!
1. 기존 형상에 디스크를 새로 추가
2. LVM 파티션 구성
3. lvm을 사용하여 raw device용 lv 만들기
4. raw device 등록 ⭐ ⭐ ⭐
5. 원복(삭제)
1. 기존 형상에 디스크를 새로 추가
[VirtualBox] 디스크 추가
1.VM을 종료하고 설정-저장소에서 하드 디스크 추가하기를 누른다.2\. 만들기를 눌러 가상 하드 디스크, 동적 할당, 할당할 용량을 선택하고 만든 후 만들어진 디스크를 선택한다.3.fdisk -l 을 통해
velog.io
실습환경에서 새 디스크를 추가해준다. 내 실습환경은 virtualbox이므로 해당 블로그를 참고하였다.
20G 정도를 할당해주었고, 아까 lsblk로 sda~sdc까지 만들어진걸 확인했으니 이제 20G짜리 sdd가 만들어질 것이다.
lsblk | ![]() |
2. LVM 파티션 구성
LVM을 사용하기 때문에 LVM을 설정할 수 있는 파티션을 만들어주겠다.
/dev/sdd 장치가 만들어졌으므로 fisk /dev/sdd 명령으로 설정화면을 들어간다.
(참고) 매뉴얼에서 옵션 확인 | ![]() 음영표시 되어있는 것들이 우리가 사용할 옵션이다. |
파티션 확인(p) | ![]() 아직 파티션 생성 안됨 |
new 파티션 생성(n) | ![]() |
파티션 type 지정(t) | ![]() l옵션으로 파티션 유형을 조회할 수 있다. 우리는 LVM 용 파티션을 만들것이기 때문에 8e 번의 파티션 타입을 지정해주겠다. ![]() |
파티션 설정 저장(w) | ![]() |
LVM 용 파티션 /dev/sdd1이 새로 추가된 것을 확인할 수 있다.
3 . lvm을 사용하여 raw device용 lv 만들기
추가한 디스크를 LVM구성으로 만들어보자.
아래와 같이 볼륨그룹(vg)까지 만들어둔다.
생성 | 확인 | |
pv | ![]() |
![]() |
vg | ![]() |
![]() |
여기까지가 raw device를 만들어두기 위한 사전단계이다.
(사실 기존에 Free용량이 있는 경우 바로 lvcreate를 시작하여도 무관하다.)
연습용이니 3MB 짜리 LV 5개로 만들어보겠다.
lv 생성 (lvcreate -L 용량 -n lv명 vg명) |
![]() 4M로 반올림이 되어버렸군.. |
lv 생성 확인 (lvs) | ![]() |
4. raw device 등록
/etc/udev/rules.d/60-raw.rules에 raw deivce로 등록할 5대를 아래와 같이 작성해준다.
ACTION=="udev가 수행할 동작",
ENV{DM_VG_NAME}=="VG명",
ENV{DM_LV_NAME}=="LV명",
RUN+="/bin/raw /dev/raw/rawdevice명 %N"
파일 저장 후 아래의 두 명령어를 통해 60-raw.rules 파일을 reload하고, trigger를 실행해준다.
udevadm control --reload-rules
udevadm trigger
AS-IS | TO-BE (raw device 등록) | |
raw -qa | ![]() |
![]() |
ls -al /dev/raw | ![]() |
![]() |
다음과 같이 raw device가 정상적으로 등록된 것을 확인할 수 있다.
5. 원복(삭제)
1. vg,lv 삭제
2. /etc/udev/rules.d/60-raw.rules 파일 삭제
등록은 온라인으로 가능해서 삭제도 reload, trigger명령으로 가능할 줄 알았더만... 조회가 되는걸 보니 재부팅을 수행해야 반영되는 듯 함...
실제 운영 환경에서 원복시에는 재부팅이 필요하다는 것을 꼭 염두해두자.
udevadm trigger --action="remove" 를 해도 먹질 않길래 온라인 반영이 안되는 줄 알았더니,
raw 장치명 0 0 명령어를 쓰면 재부팅 없이 실시간 반영이 되더라!
ex)
raw /dev/raw2 0 0
raw /dev/raw3 0 0
raw /dev/raw4 0 0
raw /dev/raw5 0 0
udevadm trigger --action="add" 와 같이 --action 옵션은 60-raw.rules 파일에서 add 가 적혀있는 명령어를 찾아서 실행하는 명령어라, 내 코드에는 remove 포함 명령이 없어서 실행이 되지 않은 듯 하다.
raw device 삭제를 진행하는 경우, 아래와 같이 진행하면 될 것 같다.
1) 60-raw.rules 파일에서 해당 디바이스 삭제
2) rule reload 수행 : udevadm control --reload-rules
3) trigger 명령 필요 없이 raw 장치명 0 0 명령어로 디바이스 삭제
3. 재부팅(init 6) 후 확인
운영 환경이 아니라면, raw 명령어를 일일이 작성하기 번거로우니 재부팅으로 깨끗하게 raw device 정보를 날려버리는 것도 가능하다. (운영환경에서는 raw명령어!)
댓글