home을 옮기고 싶어요 더~ 넓은곳으로 답변 부탁드립니다.

lupsunny의 이미지

안녕하세요 :D

저는 지금 40기가의 하드를 사용해 레드햇을 돌리고 있습니다.

그중 home을 20기가 사용하고 있는데 사용자가 많아져서 40기가의 하드를 추가로 장착해서 사용하고자 합니다.

질문1. 20기가와 40기가의 하드를 모두 사용할수 있나요?
그냥 단순히 40기가 하드 fdisk(전부사용) -> mkfs -> fstab 항목에 home2 나 이런것으로 해서 마운트를 시키면 모두 사용이 가능한가요 ? :?:

질문2. 그게 가능하지 않다면 40기가 하나라도 사용하는 방법을 알려주세요!

p.s.) 현재 lvm을 설치하려다 제가 워낙 초보에 중요서버라 잘 못건드리고 테스트 서버에만 시도했으나, 테스트 서버 결국 망가져서 일단 급한대로 40기가로 먼저 옮기고 나서 lvm을 추후에 설치 하려합니다.

많은 도움 부탁드립니다. ^^

그럼 전 이만...... 읽어주셔서 감사합니다.

kirrie의 이미지

동아리 서버가 원래 2.1기가 하드였는데, 추가로 6기가 짜리 하드가 생겨서
말씀하신 대로 추가해서 사용중입니다. home2로 root에 마운트 해서
계정들을 그냥 통째로 옮겨버렸습니다. 아무런 문제 없이 잘 사용중입니다.
다만 홈페이지를 운용하고 있는 유저들에게 절대경로가 바뀌었으니,
home/id에서 home2/id로 변경하라는 공지 하나만 보내주었습니다.

또 접속시에 새로 마운트한 하드로 로그인 될 수 있도록, etc/passwd파일을
좀 수정했습니다. 그리고 virtualhost 설정도 좀 바꿔줬구요.
그런데 virtualhost보다는 mod_rewrite를 이용하는게 더 간편하다고 하더군요.
귀차니즘으로 아직 mod_rewrite는 적용시키지 않았습니다만.. ^^

--->
데비안 & 우분투로 대동단결!

gnobus의 이미지

kirrie님 처럼 해도 되겠지만 더 간단히 할 수 있습니다. 그냥 파일 복사한 후에 다시 마운트하기만 하면 됩니다.

20기가 짜리: /dev/hda2 (즉, 원래의 home 파티션)
40기가 짜리: /dev/hdb1 (추가한 하드를 통짜로 파티션)
라고 가정하겠습니다. 즉, /dev/hdb를 통짜로 파티션했다고 가정했습니다(fdisk /dev/hdb, ...). 포맷도 합니다. ext3로 한다면 mke2fs -j /dev/hdb1

질문2에 대한 답변: hdb1을 임시로 아무데나 마운트 한후에 /home 아래의 모든 파일을 그쪽으로 카피합니다.

mkdir /mnt/temp
mount /dev/hdb1 /mnt/temp/
cp -a /home/* /mnt/temp/
umount /home /mnt/temp/
mount /dev/hdb1 /home
home의 위치가 바뀌었으니 fstab을 여기에 맞춰서 고쳐줍니다.

질문1에 대한 답변: lvm 그런 건 저는 모르겠고 저 같으면 저 자신의 홈을 20 기가 짜리에 두겠습니다. 혼자 많이 쓰려고.. :oops:
위에서 계속 이어서 다음과 같이 합니다.

mount /dev/hda2 /mnt/temp
rm -rf /mnt/temp/*
cp -a /home/gnobus/* /mnt/temp/
umount /mnt/temp
rm -rf /home/gnobus/*
mount /dev/hda2 /home/gnobus
여기서도 마찬가지로 /dev/hda2가 /home/gnobus에 마운트 되도록 fstab를 고쳐줍니다.

이렇게 할 수 있는 것은, 마운트 포인트라는 것이 내 자신이 정하기 나름이기 때문입니다. 어떤 곳에 마운트된 실제 물리적 파티션이 어느것이냐를 주의하시면 큰 착오는 없으실 겁니다. :)

cdpark의 이미지

gnobus wrote:
질문2에 대한 답변: hdb1을 임시로 아무데나 마운트 한후에 /home 아래의 모든 파일을 그쪽으로 카피합니다.
mkdir /mnt/temp
mount /dev/hdb1 /mnt/temp/
cp -a /home/* /mnt/temp/
umount /home /mnt/temp/
mount /dev/hdb1 /home
home의 위치가 바뀌었으니 fstab을 여기에 맞춰서 고쳐줍니다.

cp -a 대신에 tar나 rsyc를 이용하세요.

cd /home; tar cf - . | (cd /mnt/temp; tar xvfBp - )

혹은
rsync -a /home /mnt/temp

gnobus의 이미지

한 수 잘 배웠습니다. :)
한가지 궁금한 것이, 다음에서 '-' 는 현재 디렉토리로 옮겨 오기 직전의 디렉토리를 의미한다고 보면 되겠지요? 'cd -' 에서 볼 수 있는 바와 같이..

cdpark wrote:

cd /home; tar cf - . | (cd /mnt/temp; tar xvfBp - )
kirrie의 이미지

gnobus wrote:
kirrie님 처럼 해도 되겠지만 더 간단히 할 수 있습니다. 그냥 파일 복사한 후에 다시 마운트하기만 하면 됩니다.

20기가 짜리: /dev/hda2 (즉, 원래의 home 파티션)
40기가 짜리: /dev/hdb1 (추가한 하드를 통짜로 파티션)
라고 가정하겠습니다. 즉, /dev/hdb를 통짜로 파티션했다고 가정했습니다(fdisk /dev/hdb, ...). 포맷도 합니다. ext3로 한다면 mke2fs -j /dev/hdb1

질문2에 대한 답변: hdb1을 임시로 아무데나 마운트 한후에 /home 아래의 모든 파일을 그쪽으로 카피합니다.

mkdir /mnt/temp
mount /dev/hdb1 /mnt/temp/
cp -a /home/* /mnt/temp/
umount /home /mnt/temp/
mount /dev/hdb1 /home
home의 위치가 바뀌었으니 fstab을 여기에 맞춰서 고쳐줍니다.

질문1에 대한 답변: lvm 그런 건 저는 모르겠고 저 같으면 저 자신의 홈을 20 기가 짜리에 두겠습니다. 혼자 많이 쓰려고.. :oops:
위에서 계속 이어서 다음과 같이 합니다.

mount /dev/hda2 /mnt/temp
rm -rf /mnt/temp/*
cp -a /home/gnobus/* /mnt/temp/
umount /mnt/temp
rm -rf /home/gnobus/*
mount /dev/hda2 /home/gnobus
여기서도 마찬가지로 /dev/hda2가 /home/gnobus에 마운트 되도록 fstab를 고쳐줍니다.

이렇게 할 수 있는 것은, 마운트 포인트라는 것이 내 자신이 정하기 나름이기 때문입니다. 어떤 곳에 마운트된 실제 물리적 파티션이 어느것이냐를 주의하시면 큰 착오는 없으실 겁니다. :)

아, 전 home을 따로 마운트 해 두지 않아서 불가피하게 저런 방식을 사용했었습니다.
서버 처음 만들때 리눅스를 잘 몰라서 대충 파티션을 만들었거든요.
지금에야 후회되지만 (적절하게 기능에 따라 파티션을 나눠 두면 나중에
편하더군요. ^^)...

혹시라도 home파티션을 현재 따로 나누어 사용중이시라면, gnobus님의
방법대로 하는게 더 편리하겠습니다. 하핫. ^^

--->
데비안 & 우분투로 대동단결!

cdpark의 이미지

gnobus wrote:
한 수 잘 배웠습니다. :)
한가지 궁금한 것이, 다음에서 '-' 는 현재 디렉토리로 옮겨 오기 직전의 디렉토리를 의미한다고 보면 되겠지요? 'cd -' 에서 볼 수 있는 바와 같이..
cdpark wrote:

cd /home; tar cf - . | (cd /mnt/temp; tar xvfBp - )

tar 명령에서 파일명 자리의 - 는 stdin/stdout을 의미합니다. 8)

그리고 위 code는 Solaris에서는 tar의 man page에도 나올 정도로 잘 알려진 tip이랍니다. 시스템 관리자라면 반드시 알아야 할 유용한 상식이죠.

User Commands                                              tar(1)

NAME
     tar - create tape archives and add or extract files

...

OPTIONS
     The following options are supported:

...

     f         File. Use the tarfile argument as the name of  the
               tarfile.  If  f  is specified, /etc/default/tar is
               not searched. If f is omitted, tar  will  use  the
               device indicated by the TAPE environment variable,
               if set; otherwise, it will use the default  values
               defined  in  /etc/default/tar.  If the name of the
               tarfile is '-', tar  writes to the standard output
               or  reads  from  the  standard input, whichever is
               appropriate. tar  can be used as the head or  tail
               of  a  pipeline.  tar   can  also  be used to move
               hierarchies with the command:

     example% cd fromdir; tar cf - .| (cd todir; tar xfBp -)
cdpark의 이미지

kirrie wrote:
아, 전 home을 따로 마운트 해 두지 않아서 불가피하게 저런 방식을 사용했었습니다.
서버 처음 만들때 리눅스를 잘 몰라서 대충 파티션을 만들었거든요.
지금에야 후회되지만 (적절하게 기능에 따라 파티션을 나눠 두면 나중에
편하더군요. ^^)...

혹시라도 home파티션을 현재 따로 나누어 사용중이시라면, gnobus님의
방법대로 하는게 더 편리하겠습니다. 하핫. ^^

그렇다면..

1. copy /home to /mnt/new_home (tar를 이용!)
2. mv /home /home-old
3. mkdir /home
4. mount /home (& edit fstab)

순으로 하면 됩니다. 며칠 후에 /home-old 디렉토리를 지우시거나 다른 용도로 활용하시면 됩니다.

ssggkim의 이미지

cdpark wrote:

cp -a 대신에 tar나 rsyc를 이용하세요.

cd /home; tar cf - . | (cd /mnt/temp; tar xvfBp - )

혹은
rsync -a /home /mnt/temp

cp 보다 tar나 rsync가 더 좋은 이유를 좀 알 수 있을까요?
아직은 초보라 이유를 유추하기가 힘드네요. :oops:

cdpark의 이미지

ssggkim wrote:
cp 보다 tar나 rsync가 더 좋은 이유를 좀 알 수 있을까요?
아직은 초보라 이유를 유추하기가 힘드네요. :oops:

device file 등이 있을 수 있기 때문이죠. 또 cp의 -a 옵션은 GNU fileutils에만 있는 옵션입니다. 다른 *nix에서는 쓸 수 없죠. 하지만 tar는 어디서나 쓸 수 있고요. (게다가 rsh/ssh과 조합하면 다른 시스템 간에도!!)

그리고 rsync는 동작중인 시스템을 옮길 때에 downtime을 최소화할 수 있습니다.
1. 우선 새 하드를 답니다. (잠깐 rebooting?)
2. 그리고 rsync로 파일을 옮깁니다. (다른 사용자는 계속 작업해도 됩니다.)
3. 사용자가 적을 때에 single user mode로 바꿉니다.
4. 다시 rsync로 최신 파일인지 확인합니다.
5. mount 등을 손본 후에 다시 multi user mode로 돌아갑니다.

그냥 복사하는 것보다 귀찮긴 하지만 downtime을 최소화하는 것도 시스템관리자에겐 중요합니다.

gnobus의 이미지

분명하게 이해가 됩니다! 감사합니다! :)

ssggkim의 이미지

좋은 설명 감사드립니다. :D

pynoos의 이미지

cdpark wrote:

cd /home; tar cf - . | (cd /mnt/temp; tar xvfBp - )

tar 파일의 재밌는 용도가 저렇게 직렬화(?)하여 보내는 것인데, 이것은 ssh를 통해서도 가능합니다.

tar cf - . | ssh <host> "tar xvf -"

cdpark의 이미지

pynoos wrote:

tar 파일의 재밌는 용도가 저렇게 직렬화(?)하여 보내는 것인데, 이것은 ssh를 통해서도 가능합니다.

tar cf - . | ssh <host> "tar xvf -"

ssh 후에 chdir 까지 해야죠. :)

그러나 그냥 rsync 쓰세요. 이런 상황에선.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.