인터널 OS 디스크가 sda가 아닌 sdb로 바뀌는 경우가 있다.
원래는 sda 였지만 추후에 레이드컨트롤러 추가 또는 외장스토리지 추가에 의해 sda 장치명이 바뀔수 있다.
OS 디스크가 sda가 꼭 되어야 하는 법은 없지만 원래 sda 였던 장치명으로 바꾸고 싶어 아래와 같이 udev 를 사용해 보았다.
테스트 OS : RHEL 6.5
RHEL 6.x CentOS 6.x 에 해당된다.
1. 아래 두가지 명령중 하나로 디스크의 WWID 를 확인
[root@RHCS-NODE02 ~]# scsi_id -g -u /dev/sdb
[root@RHCS-NODE02 ~]# scsi_id --whitelisted --replace-whitespace --device=/dev/sdb
2. 확인된 WWID를 바탕으로 아래처럼 작성.
[root@RHCS-NODE02 ~]# vi /etc/udev/rules.d/20-names.rules
KERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=%N", RESULT=="특정 WWID", SYMLINK+="sdz%n"
-> RESULT=="특정 WWID" 부분 " " 안에 WWID 입력
-> SYMLINK+="sdz%n" 부분에 심볼릭링크할 장치명 입력(여기서는 sdz 지정, 만약 sda로 지정한다면 이미 sda가 있기 때문에 변경이 되지 않는다.)
3. 제대로 작성이 되었는지 확인
[root@RHCS-NODE02 ~]# udevadm test /block/sdb 2>&1 | grep sdz
4.적용 하기
[root@RHCS-NODE02 ~]# start_udev
5. 장치 확인
[root@RHCS-NODE02 ~]# ls -la /dev/sdz
lrwxrwxrwx 1 root root 3 Mar 27 11:17 /dev/sdz -> sda
* 결론 :
링크된 장치는 생성이 가능하다. 하지만 디스크 컨트롤러에 대한 모듈이 로딩되는 순서에 의해 정해지는 장치의 근본적인 명(sda, sdb…)은 OS에서는 바꿀 수 없는 듯 하다.
어쩌면 하드웨어 레벨에서 순서를 바꾸면 될 수도 있을 듯 하지만 쉽지 않을 듯.
* 참고 :
레드햇은 fstab에 장치명을 기입하기 보다는 Label, UUID, by-id 를 사용하는 것을 권장한다고 한다.
또한 볼륨이 lvm 일 경우에도 문제가 없다.
원래 내 목적은 OS 디스크의 장치명을 sda로 지정하고 싶었으나 방법이 없는 것으로 확인했으며
메인보드 모델, 메인보드의 펌웨어, 레이드 컨트롤러 모델, 펌웨어 등의 여러 요소에 의해 변경될 수 있다는 결론을 내린다.
참조 :
비공개: sda, sdb 등 Block device name 변경 방지 방법
How are persistent names assigned for SCSI devices using udev in Red Hat Enterprise Linux 7?
https://access.redhat.com/solutions/2975361
How can static names be assigned for SCSI devices using udev in Red Hat Enterprise Linux 6?
https://access.redhat.com/solutions/45626
How do I change the order of storage devices during boot in RHEL 5 and 6?
https://access.redhat.com/solutions/67778
위방법도 맞습니다만… OS 를 설치 하자마자 적용 하셔야 하고… 스토리지를 끊고 로컬디스크가 sda로 올라 왔을시 적용 하고… 스토리지를 연결 하고…또한 스토리지디스크 개수가 많으면 손이 많이 가는 작업 인듯 합니다…
자꾸 인터널 볼륨이 바뀌어서 개빡치네요 ㅅㅂ