리눅스의 fstab 을 UUID 로 바꾸자.

잡다한일 2009.05.16 14:31 Posted by 1day1
리눅스를 쓰다보면, /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 을 이용하는 방법도 잠깐 유행(?) 했었는데, 방법도 편하지 않고 관리하기 힘들어서 그런지 그 방법은 요즘은 잘 쓰지 않는 듯 하다.


신고

댓글을 달아 주세요

  1. _FL 2012.07.12 21:42 신고  댓글주소  수정/삭제  댓글쓰기

    깔끔하고 쉽게 정리해주셔서 감사합니다

  2. 레디시스 2013.04.19 13:51 신고  댓글주소  수정/삭제  댓글쓰기

    스크랩 해갈께요~ 좋은 정보 감사합니다.

  3. jeffcho 2015.05.29 15:04 신고  댓글주소  수정/삭제  댓글쓰기

    고맙습니다.. 잘 보고 갑니다