0. 장치명 순서
EIDE 인터페이스는 정해진 룰에 따라 장치명의 순서가 정적이다.
hda, hdb, hdc….
장치명의 순서는 IDE 케이블 또는 HDD(또는 CD롬등)의 점퍼에 의해 정할 수 있다.
하지만 SATA의 경우 메인보드에 따라, 혹은 OS 커널에 따라 장치명이 다르게 잡히고, 중간에 HDD 하나가 빠지면 순서가 바뀌는 동적인 구조이다.
1. 메인보드에 따른 예
메인보드에는 SATA 1, 2, 3, 4, 5, 6 이라고 명시가 되어 있으나 (또는 SATA 0, 1, 2, 3, 4, 5 로 된경우도 있음)
아래와 같이 메인보드에 따라 다르게 표기된다.
A 메인보드는(SATA 포트 4개)
SATA 1 (sda)
SATA 2 (sdb)
SATA 3 (sdc)
SATA 4 (sdd)
B 메인보드는(SATA 포트 4개)
SATA 1 (sda)
SATA 2 (sdc)
SATA 3 (sdb)
SATA 4 (sdd)
C 메인보드는(SATA 포트 6개)
SATA 1 (sda)
SATA 2 (sdb)
SATA 3 (sdc)
SATA 4 (sdd)
SATA 5 (sde)
SATA 6 (sdf)
D 메인보드는(SATA 포트 6개)
SATA 1 (sda)
SATA 2 (sdc)
SATA 3 (sdb)
SATA 4 (sdd)
SATA 5 (sde)
SATA 6 (sdf)
드물지만 일부 메인보드의 경우 BIOS의 순서와 OS(리눅스)에서 보이는 순서가 다르게 보이는 경우도 있다.
또한 같은 제조사 메인보드라고 해도 모델에 따라 달라질 수 있다.
SATA 연결 HDD중 중간에 HDD 하나가 빠지면 빠진 HDD 뒤의 장치의 장치명은 하나 씩 앞으로 밀리게 된다.
그리고 외장장치(HBA를 통한, 또는 슬롯에 꽂은 레이드컨트롤러 등)의 볼륨에 대한 장치명이 어떻게 정해질지는 장치 응답속도와 IRQ 할당등에 따라서 커널이 결정한다.
2. 마운트 방법
이런 문제로 리눅스는 저장장치에 디바이스명을 맵핑 시킬때 라벨과 UUID라는 것을 도입하여 마운트시키도록 만들었다.
만약 fstab에 아래 1)처럼 대입을 한다면 중간에 장치가 하나 빠질 경우 또는 응답속도가 네이티브 저장장치처럼 보장 되지 않는 네트워크 스토리지를 인식시켜야 할 경우엔 문제가 발생하게 된다.
아래는 같은 HDD를 인식 시키는데 3가지 방법으로 마운트를 할 수 있음을 보여준다.
1) 물리적 장치명으로 마운트
[root@Sample-local ~]# cat /etc/fstab
/dev/sda3 / ext4 defaults 1 1
/dev/sda1 /boot ext4 defaults 1 2
/dev/sda7 /tmp ext4 defaults 1 2
/dev/sda5 /usr ext4 defaults 1 2
/dev/sda6 /var ext4 defaults 1 2
/dev/sda2 swap swap defaults 0 0
/dev/sdb1 /data1 ext4 defaults 1 2
/dev/sdc1 /data2 ext4 defaults 1 2
/dev/sdd1 /data3 ext4 defaults 1 2
2) 라벨명으로 마운트
[root@Sample-local ~]# cat /etc/fstab
LABEL=/ / ext4 defaults 1 1
LABEL=/boot /boot ext4 defaults 1 2
LABEL=/tmp /tmp ext4 defaults 1 2
LABEL=/usr /usr ext4 defaults 1 2
LABEL=/var /var ext4 defaults 1 2
LABEL=SWAP-sda2 swap swap defaults 0 0
LABEL=/data1 /data1 ext4 defaults 1 2
LABEL=/data2 /data2 ext4 defaults 1 2
LABEL=/data3 /data3 ext4 defaults 1 2
* 라벨명은 해당 HDD에 메터데이터 값으로 저장되어 존재한다. (e2label 이라는 명령어를 이용하여 직접 라벨링 해야 된다.)
3) UUID 값으로 마운트
[root@Sample-local ~]# cat /etc/fstab
UID=d355f3ec-da29-4c14-b441-a2e3c92a83d3 / ext4 defaults 1 1
UUID=8f828811-0331-4a61-bbbe-c9e7c5a0d603 /boot ext4 defaults 1 2
UUID=b6b34b95-48b2-46b5-80bb-a8a23b7eeac6 /tmp ext4 defaults,noexec,nosuid 1 2
UUID=ec43dfbe-2ff8-4c7a-821b-8b6e95ba887d /usr ext4 defaults 1 2
UUID=f8cabd70-b43e-4d2b-9b02-c31b943cffff /var ext4 defaults 1 2
UUID=27393099-3f53-4909-8cd7-2f302f1d46e2 swap swap defaults 0 0
UUID=22323500-3a53-5484-8bbb-asasdsss1 /data1 ext4 defaults 1 2
UUID=22323502-3a54-5485-8ccc-wuiwiuue2 /data2 ext4 defaults 1 2
UUID=22323503-3a55-5486-8ddd-jhdfjhjhdkj3 /data3 ext4 defaults 1 2
* UUID는 해당 HDD에 메터데이터 값으로 저장되어 존재한다.(파일시스템생성(포맷)시 랜덤한 값으로 자동 생성)
어떤방식을 사용하건 디바이스가 모두 네이티브 형태일 경우 일반적으로 마운트되는데는 문제가 없다.
하지만,
1)번 방법은 중간에 장치가 하나만 빠져도 문제될 가능성이 매우 높고,
2)번 방법도 장치가 여러개 이거나 네트워크 스토리지를 붙혀야 할 경우 관리가 어렵게 된다.
따라서 네트워크(SAN, iSCSI 등)장치가 흔한 환경에서는 겹칠일이 없는 UUID를 사용하는게 가장 좋다.
CentOS 6 이후부터는 기본적으로 UUID를 사용하도록 fatab이 설정되어 있다.