4. 파일시스템 이동(migration)

전체 과정에서의 마지막 부분은 데이터가 손실될 가능성이 있는 한 아마도 실제로 가장 까다롭고 위험한 과정일 것이다. 나는 XFS 로의 이동을 하기 전에 시스템의 완전한 백업 (혹은 적어도 중요한 자료 모두)을 하기를 추천한다. 이부분은 역시 설명하기에도 가장 어려운데, 당신의 파일시스템 설정에 따라서 이동을 할 수 있는 방법이 수백가지가 될 것이기 때문이다. 나는 여러분에게 새로운 파일시스템을 만드는 기본 명령을 알려줄 것이고, 파일시스템 문제를 해결하는 방법에 어떻게 착수할지에 대한 몇가지 요점들을 알려주려고 노력할것이고, 전체적으로는 나 자신의 파일시스템을 이동하는데에 사용했던 방법을 여러분에게 알려줄 것이다.

4.1. / 파일시스템 이동하기

완전한 XFS 시스템을 만드는 것의 가장 어려운 부분은 아마도 / 파일시스템을 이동시키는 것일텐데, / 가 시스템의 나머지 전체를 지탱하는 것이고 그것은 시스템 운영중에는 실제로 언마운트 될 수 없기 때문이다. 만약 / 로 마운트될 수 있는 여분의 파티션이 있다면 이와 비슷한 방법으로 할 수 있다(예제에서는 /dev/hda4 를 여분의 파티션으로, /dev/hda2를 / 로 사용한다).

$ mkfs -t ext2 /dev/hda4 
$ mkdir /mnt/temp 
$ mount -t ext2 /dev/hda4 /mnt/temp 
$ cd / 
$ tar lcf - .|(cd /mnt/temp; tar xpvf - )   
  

내가 / 파일시스템에서 여분의 파일시스템으로 파일들을 복사하기 위해 여기서 tar 을 사용함을 주목하라. 대신 cp -dpR 을 사용할수도 있지만, 내가 여기서 보인것과 같이 -l 플래그를 붙여 tar 을 사용하면 오직 / 파일시스템 안에 있는 파일만을 복사할 것이다(다시 말하면, 당신이 /usr 로 마운트해둔 또다른 파티션이 있다면 그러한 것은 복사되지 않을 것이라는 말이다).

다음 단계는 /etc/fstab 와 /etc/lilo.conf 에 있는 /dev/hda4 에 대한 모든 참조를 /dev/hda2 로 바꾸고 lilo 를 실행한다. 그리고 나서 시스템을 다시 부팅해야 한다.

시스템을 재부팅 후에는 /dev/hda4 가 /로 마운트될 것이고 원래의 / 파일시스템 (/dev/hda2)는 마운트되지 않을 것이다. 이제는 /dev/hda2 에 새로운 XFS 파일시스템을 만들 수 있다.

$ mkfs -t xfs /dev/hda2   
  

그리고 나서 새로운 xfs 파일시스템을 마운트한다:

$ mount -t xfs /dev/hda2 /mnt/temp   
  

그리고 원래의 / 파일시스템을 그것의 원래 위치로 돌려놓는다:

$ cd / 
$ tar lcf - .|(cd /mnt/temp; tar xpvf -)   
  

다시 한번 /etc/fstab 와 /etc/lilo.conf 에 있는 /dev/hda4 의 모든 객체를 바꾸고 lilo 를 실행해야 한다. 또한 /etc/fstab 에 있는 / 의 파일시스템 유형을 바꿔주어야 한다. 이제는 이와 비슷해 보일 것이다:

/dev/hda2               /                       xfs    defaults 1 1   
  

주의: 몇몇 리눅스 배포판에서 위의 예제 상자 이외의 fstab 에 주어진 옵션은 단지 "defaults" 이상의 깊이있는 것일수도 있다. 예를 들어 데비안 시스템은 "defaults,errors=remount-ro"를 사용한다. "defaults" 키워드를 제외하고는 마운트 옵션이 모든 파일시스템마다 다르다. 당신이 사용하고자 하는 특정한 XFS 마운트 옵션을 알고 있지 않는 한은 디폴트 옵션을 사용하라. 주어진 데비안 예제에서는, errors 옵션은 XFS 에서는 사용이 불가능하며 당신의 파일시스템을 마운트되지 못하게 할 것이다.

이제 새로운 xfs / 파일시스템으로 시스템을 리부트한다.

물론 루트 파일 시스템을 이동하는 방법에는 여러가지 다른 방법이 있고 만약 당신이 좋은 생각을 갖고 있다면 나는 정말 그것을 알고 싶고 여기서의 방법보다 더 간단해보인다면 이 문서에 그것을 넣을 것이다. 나 자신은 작업할 여분의 파티션이 없었으나 CD 레코더가 있었으므로 내 루트 파일시스템을 CD 로 구워서 새로운 xfs / 를 만드는동안 루트로 마운트했다. 하지만, 모든 경우에도 새로운 파일시스템을 생성하고 마운트하는 기본적인 명령어는 모두 같을 것이다.

4.2. 마치기

과정의 마지막은 매우 간단하고 새로운 파일 시스템을 만들면서 / 에 대해서 행한 파티션 바꾸는 과정과 본질적으로 같은 과정이다. 나는 이 과정의 나머지를 싱글 유저 모드에서 작업하여 / 이외의 모든 것을 언마운트할 수 있도록 하여 여러번 재부트할필요 없이 모든 교체를 할 수 있기를 추천한다. 싱글 유저 모드로 부팅하기 위해서는 다음과 같이 init 프로세스에 런레벨 변경 명령을 내리던가:

$ telinit 1   
  

혹은 재부팅해서 LILO 프롬프트에서 싱글 유저 모드로 부팅하도록 요청할 수 있다:

LILO Boot: xfs single   
  

이렇게 하면 시스템이 부트되고 나서 바로 루트 쉘로 들어가서 외부의 접속이나 가상터미널이 없으므로 다른 사용자들이나 프로세스들에 의해 파일시스템이 사용될 기회가 없다(파일시스템을 사용중이면 당신이 그것을 언마운트 할수 없게 만든다). 이제 당신은 여분의 파티션을 마운트할 수 있고, 예전처럼, 이동될 파티션중의 하나를 그곳에 복사하라(아마도 / 에서 왼쪽으로부터 존재하는 내용을 지워야 할 것이다), 예전의 파일시스템을 언마운트하고, xfs 파일시스템을 그 위에 만들고, 그것을 xfs 로 다시 마운트하고, 예전의 파일시스템의 내용을 그곳에 복사하라. 당신이 /dev/hda3 파티션을 /usr 로 마운트했다고 가정하자. 이 과정은 다음과 유사할 것이다:

$ mount -t ext2 /dev/hda4 /mnt/temp 
$ cd /usr 
$ tar lcf - .|(cd /mnt/temp; tar xpvf - ) 
$ umount /usr 
$ mkfs -t xfs /dev/hda3 
$ mount -t xfs /dev/hda3 /usr 
$ tar lcf - .|(cd /usr; tar xpvf - )   
  

/etc/fstab 에서 /usr 의 파일시스템 유형을 xfs 로 바꾸는 것을 잊지 말자.

이것이 그것에 대한 전부다. 나머지 이동될 파일시스템은 같은 방식으로 작동하며, 그 후에는 완전한 멀티유저 모드로 재부팅해서 당신 자신의 "Linux on Steroids!" 를 갖는 것이다.