리눅스에서 하드 디스크를 포맷 후 다른 디스크에서 데이터 복사

Iinux의 이미지


리눅스에서 10개의 디스크를 연결하고, 하드디스크 포맷 후

특정 디스크에서 데이터를 일괄 복사하려고 합니다.(데이터는 교육용 동영상입니다.)

즉, 똑같은 디스크를 여러 개 만드는 것이죠

회사에서 이러한 작업을 편하게 할 수 있는 간단한 프로그램을 만들려고 하는데요

하루종일 검색하면서 생각 해보니 아래와 같이 정리가 되었습니다.

1. 리눅스 머신이 한대 있다고 가정..

2. 이 리눅스에 10개의 하드디스크를 연결합니다
부장님이 디스크랙에 여러 개를 연결할 수 있다고 하던데요
디스크랙이 USB로만 연결되는 건가요? 혹시 하드 10개를 동시에 붙일 수 있나요?
디스크랙이 뭔가 구글링을 해봤더니..걍 하드디스크 하나를 꽂을 수 있는 껍데기일뿐이던데요

3. 일단 하드디스크가 연결되면 그 순간 알아내서 화면에 표시해야 한다.
하드디스크를 감시하는 프로그램을 만들든가. 좋은 유틸리티를 이용하든가 무슨 방법을 써서든
연결상태를 자동으로 인식해야 한다.
고수님들은 어떻게 자동으로 인식하게 할 수 있는지요?

4. (가능하면 빠르게) 연결된 모든 디스크를 포맷한다.
순차적 또는 병렬로 포맷할 수 있을텐데...
그냥 쉘에서 백그라운드 작업으로 10개의 포맷하는 Process를 동시에 수행하면 될런지요?

5. 그리고 ext2로 포맷할지 ext3로 포맷할지 잘 모르겠습니다.

6. 이제 포맷을 했으니 데이터 카피를 해야 합니다.
이것도 쉘에서 백그라운드 잡으로 10개의 카피 프로그램을 수행하면 되겠지요?

읽어주셔서 감사합니다.
제가 초보라 하나도 모르는데.. 고수님들의 의견 부탁드립니다.

다 답변 주시기 시간 없으시면 한분이 한 개씩만 답변 주셔도 감사드리겠습니다.

overcrash의 이미지

1. 이건 질문이 아니니까 패스

2. 하드디스크들이 SATA라면, SATA 확장카드가 있습니다.
찾아보니까 일반적인 확장카드는 4포트까지 있던데,
그럼 3개를 달면 되겠네요. 혹은 메인보드에 기본적으로 4개정도는 가능하니까
메인보드4개 + 확장카드(4) 2개 = 12개..되겠네요

3. 리눅스에선 디스크가 연결되면 sda(디스크) sda1(첫번째 파티션), sda2(두번째 파티션)
이런형태의 디바이스 파일이 /dev 아래에 생깁니다.
즉 파티션이 1개만 있는 하드디스크가 10개라면
sda1, sdb1, sdc1, sdd1 ~~ sdj1 이렇게 10개의 디바이스 파일이 생기겠져.
그런데 말씀을 보니까, 연결된채로 컴퓨터를 켜는게 아니라, 추후에 새로 연결될수도 있나보군요.
그렇다면, 예를들어 설명해보자면...
디스크가 연결되지 않은상태일때는 sdc1이 없고, 연결이 되면 sdc1이 생깁니다.
그럼 프로그램 코드상에서, sdc1의 존재여부를 계속해서 확인하면 되겠죠.
어떤 언어로 프로그래밍 하시는지 모르겠지만, c언어로 설명드리자면
for(;;)
{
fd = open("/dev/sdc1", "rw);
if ( fd > 0 )
{
//연결되었을 경우의 소스코드
}
}

하드디스크가 10개라면, 쓰레드를 10개 생성하던지, 프로세스를 10개 생성해서,
각각의 쓰레드or프로세스들은 위의 코드로 맡은 하드디스크들의 연결여부를 확인해야겠죠.
사견을 말씀드리자면,..SATA, IDE 등의 방식은..
USB가 아니라서, 컴퓨터가 켜져있는 상태에서는 케이블을 연결할수 없습니다.
(켜져있는채로 연결하면 컴퓨터가 멈춰버리고, 운이 안좋으면 쇼트로 메인보드 날아갑니다)
즉, SATA 혹은 IDE 하드를, USB로 연결할 방법을 찾으셔야 합니다.
아마 SATA to USB 컨버터가 있을겁니다,그렇다면 2번의 문제를 다시 생각하셔야합니다.
SATA 확장카드가 아닌, USB 확장카드 + 컨버터 이렇게 구비하셔야겠죠.

4. 위의 소스에서 if문안에서 execlp or execv 등의 함수로 포맷하시면 됩니다.

5. 중요치 않습니다, ext2는 구버전 파일시스템이죠.

6. 4번과 같은 방식으로 가능할겁니다.
------------------------------------------------------------------------------------
※ 저도 아직 학생이고,공부하는 입장이라서 정답은 아니구요.
저라면 이렇게 할것이라는 주관적 의견일 뿐입니다.

Iinux의 이미지

=====================
어린이 날인데 답변도 주시고..
감사드립니다.

님말씀대로 포맷이나 데이터 카피는 결국 멀티스레드나 멀티 프로세스로 하면 될 것 같네요

그리고..
(예를 들어) 하드디스크가 100개 있는데 몇개 포맷할때마다 번번히 재부팅 할 수 없으니
착탈이 쉬운 방식인 USB를 사용해야 할 것 같습니다.

이제 구글에서 검색이라도 해볼 수 있을 것 같네요..

감사합니다. ^^

P.S) 하드를 USB에 최대 몇개까지 붙일 수 있을 지 궁금하네요
찾아본 담에 여기에 리플달겠습니당

=====================

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.