리눅스를 쓰다보면, /etc/fstab 이라는 파일을 보게 된다.
하드디스크를 추가하거나 하면, 편집해서 추가해줘야 한다.(자동으로 해주는 GUI 툴이 있나?)
그런데, 종종 하드디스크를 추가한 후 드라이브명(?)이 바뀌는 경우가 있다.
/dev/sda , sdb , sdc 의 순서가 바뀌는 경우가 있다.
이런경우 하드디스크의 고유한 UUID 를 이용하면 바뀌는 것에 신경을 쓰지 않아도 된다.
스텝 원! - 하드디스크를 추가하자. 하드디스크를 달자.
추가한 후 fdisk -l 을 입력해본다. 참! 쉽~죠잉.
예를 들어 본인의 시스템은 다음과 같다.(진한색만 보면 됨)
root@ubuntubox:/home/young# fdisk -l
Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa8b8174c
Device Boot Start End Blocks Id System
/dev/sda1 1 5472 43952128 7 HPFS/NTFS
/dev/sda2 5473 10579 41021977+ 83 Linux
/dev/sda3 10580 19458 71312384 7 HPFS/NTFS
Disk /dev/hda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0fda4a0a
Device Boot Start End Blocks Id System
/dev/hda1 * 1 1216 9767488+ 83 Linux
/dev/hda2 1217 5472 34186320 5 Extended
/dev/hda3 5473 10579 41021977+ 83 Linux
/dev/hda4 10580 14593 32242455 83 Linux
/dev/hda5 1217 5289 32716341 83 Linux
/dev/hda6 5290 5472 1469916 82 Linux swap / Solaris
Disk /dev/sdb: 73.4 GB, 73407900160 bytes
255 heads, 63 sectors/track, 8924 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 1 1337 10739421 83 Linux
/dev/sdb2 1338 6444 41021977+ 83 Linux
/dev/sdb3 6445 8924 19920600 83 Linux
원래는 hda , sda 이렇게 두개가 있었다.( hda : 120기가 - IDE 하드 , sda : 73기가 - SCSI 하드)
그런데, 위에서 보시다 시피 추가한 160기가 SATA 하드가 sda 로 잡히고,
기존의 sda 였던 스카시 하드가 sdb 로 잡힌것을 볼 수 있다.
보통 fstab 을 보면 이런식으로 드라이브문자(sda,hda) 를 쓰고는 하는데.
/dev/sda1 /work1 ext3 defaults 0 2
/dev/sda2 /work2 ext3 defaults 0 2
/dev/sda3 /work3 ext3 defaults 0 2
위의 경우처럼 하드를 추가한 것 뿐인데, 시스템이 부팅이 안되는 경우가 생길 수 있다.
배포판에서도 그런 이유인지, 드라이브문자를 직접쓰기보다는 UUID 를 사용하는 추세인 듯 하다.
기존에 쓰던 방식에 익숙해서 UUID 보다는 드라이브문자를 쓰곤 했는데, 앞으로 UUID 를 써보자.
스텝 투! - UUID 를 알아내자. 그럼 UUID 를 어떻게 알 수 있지?(시스템의 루트 파티션이 다음과 같다)
UUID=e38c77a6-0990-44bf-a592-9c156920fb5d / ext3 errors=remount-ro 0 1
UUID 가 e38c .. b5d (적기도 힘든데, 외울 수도 없고) 어떻게 알 수 있나?
UUID 를 알아내는 명령은 바로 blkid (뭐야, bl 키드?) - 아마도 block ID(블럭 아이디) 일 듯 하다.
위 시스템의 blkid 명령을 내려봤다.
/dev/hda1: UUID="e38c77a6-0990-44bf-a592-9c156920fb5d" SEC_TYPE="ext2" TYPE="ext3"
/dev/hda3: UUID="9fa0f339-1fa5-4c75-942a-b6001b7bcde8" SEC_TYPE="ext2" TYPE="ext3"
/dev/hda4: UUID="26474b1a-8353-4a15-8add-94df2a6784b7" SEC_TYPE="ext2" TYPE="ext3"
/dev/hda5: UUID="9dfa1ff8-b91c-47db-9d8d-8cfb78ff7432" SEC_TYPE="ext2" TYPE="ext3"
/dev/hda6: TYPE="swap" UUID="0e7bd3d5-88dd-4a06-81bd-2dd1f2870a5c"
/dev/sda1: UUID="00CC65DDCC65CE0A" LABEL="Data1" TYPE="ntfs"
/dev/sda2: UUID="8d6f7e4f-4bfe-4ad1-83b8-22d71065193f" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda3: UUID="2E38726838722EC9" LABEL="Data2" TYPE="ntfs"
/dev/sdb2: UUID="1ed998db-712f-4fc3-9155-02e091fd8380" TYPE="ext3"
/dev/sdb3: UUID="4c907521-a4fb-4a2c-86ce-9b8206aaf33a" TYPE="ext3"
/dev/sdb1: UUID="feeb3d31-7c74-41e3-87fd-9a60c900430f" SEC_TYPE="ext2" TYPE="ext3"
위 루트시스템 파티션인 e38c77a6-0990-44bf-a592-9c156920fb5d 뭐시기가 보인다.
그외 다른 파티션들도 UUID 를 확인할 수 있다. 저걸 하나하나 입력하긴 뭐할테니 필요한것은 복사하자.
스텝! 쑤~우리 : fstab 에 UUID 로 기록하자. /etc/fstab 파일을 편집하자. 위의 /dev/sda1 , sda2 ... 등으로 쓰던 부분을 UUID 로 바꿨다.
UUID=feeb3d31-7c74-41e3-87fd-9a60c900430f /work1 ext3 defaults 0 2
UUID=1ed998db-712f-4fc3-9155-02e091fd8380 /work2 ext3 defaults 0 2
UUID=4c907521-a4fb-4a2c-86ce-9b8206aaf33a /work3 ext3 defaults 0 2
/dev/sda1 에 해당하는 부분을 UUID=feeb3d31-7c74-41e3-87fd-9a60c900430f 이런식으로 바꿔주기만 하면 된다. 나머지 sda2, sda3 도 같은 방식으로 바꿔준다.
이렇게 하면 추후 하드디스크를 추가해서 드라이브문자가 바뀐다고 해도 이상없이 작동한다.
(위의 sda1 도 하드가 추가되면서 sdb1 으로 바뀐것이다)
참! 쉽~죠잉ps. 예전에 LABEL 을 이용하는 방법도 잠깐 유행(?) 했었는데, 방법도 편하지 않고 관리하기 힘들어서 그런지 그 방법은 요즘은 잘 쓰지 않는 듯 하다.