BigAdmin System Administration Portal
커뮤니티에서 제출된 기사
Print-friendly VersionPrint-friendly Version
This content is submitted by a BigAdmin user. It has not been reviewed for technical accuracy by Sun Microsystems, though it may have been lightly edited to improve readability. If you find an error or would like to comment on the article, please contact the submitter or use the comment field at the bottom of the article. Community submissions may not follow Sun trademark guidelines. For information on Sun trademarks, please see http://www.sun.com/suntrademarks/.
 
 

Solaris 운영 체제의 "format" 유틸리티

Greg (shoe) Schuweiler, 2004년 11월

많은 사람들에게 하드 디스크는 "블랙 박스"로, 어떤 의미에서는 데이터, 프로그램 및/또는 운영 체제를 저장하는 작은 장치로 간주됩니다. 물론 이 접근 방식이 여러분들이 관심을 가지는 전부인 경우 잘못된 점은 없습니다. 하지만 시스템 관리자로서 여러분들이 고려해야 하는 주된 관심사 중 하나는 데이터 보호이며, 우선 순위가 높은 또 다른 관심사로는 메모리와 물리적 디스크 간의 효율적인 데이터 이동이 있습니다. 이 기사에서는 Solaris OS에서 우리가 사용할 수 있는 기본 유틸리티 중 하나인 format에 대해 알아보도록 하겠습니다.

디스크에서 슬라이스를 관리하기 위해 사용되는 format 유틸리티는 원래 SCSI에서 연결된 디스크를 관리하도록 기록되었으며, 성능은 IDE를 통해 연결된 디스크에 따라 달라질 수 있습니다. 적절한 드라이버를 제대로 설치하고 구성했으면, RAID 엔진에 의해 표시되는 LUN 또는 광 섬유 채널로 연결된 드라이브를 관리할 수 있어야 합니다.

format과 함께 비소거 및 소거인 2가지 유형에 대한 몇 가지 다른 명령에 대해 다뤄 보겠습니다. 소거 명령은 항상 굵은 기울임꼴로 표시하고, 명령 앞에 Warning이라는 단어를 사용하겠습니다. 예를 들어, 루트로 «Warning: cd / ; rm –r * » 을 실행하면 시스템 디스크가 정말로 삭제됩니다.

경고를 위한 또 다른 단어인 비소거 명령은 문자 그대로 비소거이어야 하지만, 시스템에서 이 명령을 실행할 지 여부를 결정하는 것은 여러분의 몫입니다. 소거 명령은 디스크에서 데이터를 삭제합니다. 수행하고 있는 작업에 대해 잘 알고 있는 경우에만 이 명령을 실해하십시오.

이 기사에서 사용한 명령은 format, prtvtoc, dd, od, catfmthard입니다. 이 명령을 사용하기 전에 여기에서 사용하는 몇 가지 디스크 용어는 다음과 같이 정의됩니다.

디스크 레이블
이 특정 영역에는 구조 및 슬라이스와 같은 디스크 정보가 들어있습니다. 볼륨 목차(VTOC)라고도 하며, 디스크 레이블은 디스크에서 첫 번째 512바이트입니다. 대부분의 디스크는 출하 시 이미 레이블이 지정되어 있습니다.

결함 목록
이 목록에서는 기록하거나 읽을 수 없는 디스크 영역을 나열하며, 우리의 눈에 보이는 것처럼 제조업체의 결함 목록과 시간이 지나면서 발생하는 결함 목록이 항상 있습니다.

분할 영역 테이블
디스크 VTOC의 일부이며, 디스크의 슬라이스(분할 영역이라고도 알려짐), 슬라이스 경계 및 슬라이스 크기가 들어 있습니다. 슬라이스는 디스크에서 연속적인 범위의 블록으로 구성됩니다. 디스크를 EFI(Extensible Firmware Interface) 레이블이라고 지정하지 않는 한 디스크에는 슬라이스가 8개[0-7] 있습니다. 좀 더 자세한 내용은 나중에 다루겠습니다. 대부분의 경우에는 전체 디스크를 나타내는 슬라이스 2를 사용하지 않습니다.

다음 사항에 유의하면서 이 기사를 읽어보십시오.

  • 각 디스크 슬라이스에서는 파일 시스템을 하나만 보유할 수 있습니다.
  • 파일 시스템에서는 슬라이스를 여러 개 확장할 수 없습니다(사용 중인 논리적 볼륨 관리자가 없다고 가정).
  • 파일 시스템을 만든 후에는 전체 디스크를 다시 분할하지 않고 크기를 변경할 수 없습니다.
  • 슬라이스에서는 디스크를 여러 개 확장할 수 없습니다. n개의 디스크를 가져와 디스크 한 개로 시스템에 표시하는 RAID 엔진의 경우에는 format 유틸리티가 디스크 하나에만 표시됩니다.

이 기사가 대화식이 될 수 있도록 여러분에게 사용할 수 있는 연결된 디스크가 있는 시스템이 있기를 바랍니다. 먼저 format으로 사용할 디스크를 선택합니다.

r_gps@holstein: format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0.c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
  /pci@1f,4000/scsi@3/sd@0,0
1.c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
  /pci@1f,4000/scsi@3/sd@1,0
2.c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  trashme
  /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number):

'quit'를 입력하여 한 개의 메뉴를 종료 또는 백업하거나, <Ctrl-D>를 사용하여 format 유틸리티를 완전히 종료합니다. 제 경우에는 "AVAILABLE DISK SELECTION 2"를 사용할 예정입니다. 이전에 말씀드린 대로 여러분이 Sun 또는 Sun 장비를 판매하는 타사 공급업체에게서 디스크를 구매하는 경우에는 구입한 디스크에는 이미 Sun 레이블이 있어야 합니다. 하지만 이기종 환경에 있으며, SCSI 디스크를 가지고 이동 중인 경우에는 HP, AIX 또는 Windows 서버의 36GB 드라이브에 인식할 수 없는 디스크 레이블(최소한 Solaris OS에 대한 디스크 레이블)이 있으므로, 레이블을 추가해야 합니다. 따라서 기본 사항으로 시작하여 좀 더 흥미있게 하기 위해 저는 작업 중인 디스크에 디스크 레이블을 삭제하겠습니다.

« Warning: echo "adios data" | dd of=/dev/dsk/c2t1d0s2 bs=1 count=512 »

이제 format 명령을 통해 다음이 표시됩니다.

r_gps@holstein: format
Searching for disks...done

c2t1d0: configured with capacity of 33.92GB

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  boot
          /pci@1f,4000/scsi@3/sd@0,0
       1. c0t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>  home
          /pci@1f,4000/scsi@3/sd@1,0
       2. c2t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107>
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number): 2
selecting c2t1d0
[disk formatted]
Disk not labeled. Label it now?

디스크에 레이블을 지정하려는 경우 여기에 'y'를 입력하면 Solaris OS용으로 사용할 수 있게 됩니다. 그런 다음 format 명령을 종료하고 prtvtoc를 사용하여 디스크 구조와 분할 정보를 살펴봅니다.

r_gps@holstein: prtvtoc /dev/dsk/c2t1d0s2                            
* /dev/dsk/c2t1d0s2 partition map
*
* Dimensions:
*       512 bytes/sector
*       107 sectors/track
*         27 tracks/cylinder
*     2889 sectors/cylinder
*   24622 cylinders
*   24620 accessible cylinders
*
* Flags:
*   1: unmountable
*  10: read-only
*
*                          First        Sector       Last
* Partition  Tag  Flags    Sector        Count       Sector     Mount Directory
   0	       2    00	   0		262899	     262898
   1	       3    01	   262899	262899	     525797
   2	       5    01	   0		71127180     71127179
   6	       4    00	   525798	70601382     71127179

format 명령으로부터 동일한 정보 중 일부에 대해 살펴볼 수 있지만, 이 출력으로 4개의 분할 영역이 존재함을 볼 수 있습니다. Tag 열에서는 root(2), swap(3), backup(5) 및 usr(4) 분할 영역이 있음을 보여 주며, Flags 열에서는 읽기 및 쓰기(00)가 있고 마운트할 수 있는 분할 영역 두 개와, 마운트할 수 없는 분할 영역 두 개가 있음을 보여 줍니다. 각 분할 영역의 경우 First Sector 열에서는 분할 영역이 시작하는 위치를, Sector Count에서는 섹터 수를, Last Sector에서는 분할 영역에서의 마지막 섹터 위치를 보여 줍니다. 파일 시스템을 마운트한 경우에는 Mount Directory에 분할 영역이 마운트된 위치가 표시됩니다. 이러한 항목을 분해하여 수정할 수 있도록 좀 더 깊이 진행하기 전에 format 명령이 새로 레이블이 지정된 디스크에 표시하는 정보에 대해 살펴보겠습니다. 다음 명령을 실행합니다.

r_gps@holstein: format /dev/rdsk/c2t1d0s2

format 프롬프트에서 partition을 입력한 다음 분할 영역 메뉴에서 print를 입력합니다. 이렇게 하면 다음 표가 표시됩니다.

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders        Size       Blocks
  0     root	  wm	0 - 90     	128.37MB  (91/0/0)        262899
  1        swap	  wu	91 - 181      	128.37MB  (91/0/0)        262899
  2       backup  wu	0 - 24619       33.92GB	  (24620/0/0)   71127180
  3   unassigned  wm	0      	0       (0/0/0)        	0
  4   unassigned  wm	0      	0       (0/0/0)         0
  5   unassigned  wm	0      	0       (0/0/0)         0
  6          usr  wm	182 - 24619      33.67GB   (24438/0/0)  70601382
  7   unassigned  wm	0      	0       (0/0/0)         0

partition>

prtvtoc 명령에서 나타나는 정보와 동일한 내용이 일부 표시됩니다. 형식은 약간 다르며, 사용되지 않는 분할 영역을 볼 수 있습니다. 사용할 디스크에 대해 format에 알리는 중임을 나타내는 메시지가 표시될 수도 있습니다. 이렇게 하는 이유는 실험 중인 시스템에서 다른 디스크 중 하나로 인해 문제가 우연히 발생하는 것을 방지하기 위함입니다. 디스크 레이블을 보는 또 다른 방법은 dd 명령을 사용하여 덤프하는 것입니다.

r_gps@holstein: dd if=/dev/dsk/c2t1d0s2 of=wart.bin bs=512 count=1  
1+0 records in
1+0 records out

이렇게 하면 od 명령을 사용할 수 있는 이진 파일이 제공됩니다.

r_gps@holstein: od -x wart.bin
0000000 5355 4e33 3647 2063 796c 2032 3436 3230
0000020 2061 6c74 2032 2068 6420 3237 2073 6563
0000040 2031 3037 0000 0000 0000 0000 0000 0000
0000060 0000 0000 0000 0000 0000 0000 0000 0000
*
0000200 0000 0001 0000 0000 0000 0000 0008 0002
0000220 0000 0003 0001 0005 0001 0000 0000 0000
0000240 0000 0000 0000 0004 0000 0000 0000 0000
0000260 0000 0000 0000 0000 0000 0000 600d deee
0000300 0000 0000 0000 0000 0000 0000 0000 0000
*
0000640 0000 0000 2729 602e 0000 0000 0000 0001
0000660 602c 0002 001b 006b 0000 0000 0000 0000
0000700 0004 02f3 0000 005b 0004  02f3  0000 0000
0000720 043d 508c 0000 0000 0000 0000 0000 0000
0000740 0000 0000 0000 0000 0000 0000 0000 00b6
0000760 0435 4aa6 0000 0000 0000 0000 dabe 4297
0001000

8진 덤프에는 많은 정보가 있으며, 아주 훌륭한 Sun 문서에서 이를 다룹니다. 해당 정보는 중복하여 다루지 않겠습니다. SunSolve에서 문서 ID 74047을 검색합니다. 체크섬 전에는 해당 od가 항상 반복 행(*)을 건너뛰고, VTOC_SANE은 오프셋 0xbc에서 항상 0x600ddeee이며, DKL_MAGIC은 오프셋 0x1fc에서 항상 0xdabe임에 주의하십시오. 이제 디스크의 레이블을 지정했습니다. 이를 통해 수행할 수 있는 작업(및 format 명령)은 무엇입니까? 첫 번째로 아래에 나열된 메뉴를 살펴봅니다. 먼저 volname 옵션을 제외한 비소거 format 메뉴 옵션을 살펴보겠습니다. 이 옵션은 아래에 굵은 텍스트로 표시됩니다.

r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

FORMAT MENU:
        disk       	- select a disk
        type       	- select (define) a disk type
        partition  	- select (define) a partition table
        current    	- describe the current disk
        format     	- format and analyze the disk
        repair     	- repair a defective sector
        label      	- write label to the disk
        analyze    	- surface analysis
        defect     	- defect list management
        backup     	- search for backup labels
        verify     	- read and display labels
        save       	- save new disk/partition definitions
        inquiry    	- show vendor, product and revision
        volname    	- set 8-character volume name
        !<cmd>     	- execute <cmd>, then return
        quit
format>

항상 각 디스크에 볼륨 이름을 지정하는 것이 좋습니다. 이렇게 하면 시스템이 좀 더 간결해 보입니다. 또한 동일한 디스크 드라이브를 살펴보는 둘 이상의 시스템이 있는 경우에도 도움이 되며, 이는 고가용성 클러스터에서 발생할 수 있습니다. RAID 엔진 쌍으로 표시되는 120개 이상의 디스크가 VERITAS 클러스터의 15개 시스템에서 모두 표시됨을 확인했습니다. 각 디스크에 볼륨 이름을 지정하면 이미 사용한 디스크를 식별하는 데 도움이 됩니다. 볼륨 이름이 없는 디스크는 사용되지 않습니다. 다음 예에서와 같이 volname 메뉴 옵션을 사용하는 경우 주의해야 할 점이 있습니다.

format> volname
Enter 8-character volume name (remember quotes)[""]:"pigsnot"
Ready to label disk, continue? y

format>

디스크 레이블에 대해 volname 옵션을 기록합니다. 저는 마운트된 파일 시스템과 이 시스템의 유효한 데이터를 사용하여 디스크에서 이 작업을 수행했습니다. 처음 이 작업을 수행한 것은 우연이었습니다. 삶은 계속되었고, 지구는 여전히 돌고 있었습니다. 그래서 저는 마운트된 파일 시스템이 있는 디스크와 마운트되지 않은 파일 시스템이 있는 디스크에서 볼륨 이름을 변경하여 디스크 드라이브에서 일부 테스트를 수행했습니다. 레이블이 변경되었지만 데이터는 전혀 손상되지 않았습니다. 물론 표준 보증 부인에서는 "사용 중인 마일리지는 달라질 수 있습니다. 여러분이 책임을 지고 진행되며, 규약 및 기타 등등에 대해 책임지지 않습니다"라는 규정이 적용됩니다.

disk 옵션을 사용하면 format 유틸리티에서 디스크를 변경할 수 있지만, 작업할 디스크를 선택했으므로 해당 디스크는 표시되기만 합니다.

format> disk

AVAILABLE DISK SELECTIONS:
       0. /dev/rdsk/c2t1d0s2 <SUN36G cyl 24620 alt 2 hd 27 sec 107> pigsnot
          /pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0
Specify disk (enter its number)[0]:

current 옵션을 사용하면 format 명령을 시작한 후 선택한 현재 디스크가 제공됩니다. 이 기사에서는 디스크 2로 작업 중이며, current 옵션으로 표시되는 옵션은 다음과 같습니다.

Current Disk = c2t1d0: pigsnot
<SUN36G cyl 24620 alt 2 hd 27 sec 107>
/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0

current 옵션을 사용하면 마지막 행에 물리적 디스크 위치가 제공됩니다. 물리적 위치 앞에 /devices를 표시해야 하며, 분할 영역 번호를 나타내는 문자가 있습니다.

r_gps@holstein: ls /devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0*

/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:a,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:b,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:c,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:d,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:e,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:f,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:g,raw
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h
/devices/pci@1f,4000/pci@5/SUNW,isptwo@4/sd@1,0:h,raw

단어 "raw"가 있는 물리적 장치 이름은 문자 장치이며, 그밖에 다른 장치는 블록 장치를 말합니다. 문자 'a'는 분할 영역 0을, 문자 'b'는 분할 영역 1 등을 나타냅니다.

defect 옵션을 사용하면 디스크가 공장에서 출하되었을 때 디스크에서 보유한 결함 수를 표시하기 위해 사용할 수 있는 결함 메뉴가 열립니다. 이를 확인하려면 기본 옵션을 사용하십시오. 제 데스크탑에서 보유하고 있는 3개의 디스크의 기본 결함 수의 범위는 72에서 2922까지 입니다. 하지만 grown 옵션에 좀 더 흥미를 가지게 됩니다. 디스크의 "grown" 결함은 시간이 흐르면서 증가할 수 있습니다. 우리가 관심을 가질 부분은 증가율입니다. 이 결함이 빠르게 증가하는 경우에는 보류 중인 디스크 오류를 확실히 볼 수 있습니다.

print 옵션을 사용하면 디스크의 결함과 결함 위치 목록이 제공됩니다. 또한 디스크의 결함 목록을 파일에 덤프(저장)할 수도 있습니다. 의심되는 디스크에서 단기간에 이 작업을 수행했습니다.

verify 옵션을 사용하면 prtvtoc 명령으로 전에 표시했거나 format 명령으로 분할 영역을 표시하는 많은 정보가 제공됩니다.

format> verify

Primary label contents:

Volume name 	= < pigsnot>
ASCII name  	= <SUN36G cyl 24620 alt 2 hd 27 sec 107>
pcyl        	= 24622
ncyl        	= 24620
acyl        	=    2
nhead       	=   27
nsect       	=  107
Part   Tag   	 Flag   Cylinders       Size       	Blocks
  0        root  wm	0 - 90        128.37MB	 (91/0/0)         262899
  1        swap  wu	91 - 181      128.37MB	 (91/0/0)         262899
  2      backup  wu	0 - 24619      33.92GB	 (24620/0/0) 	71127180
  3  unassigned  wm	0      	0     (0/0/0)    0
  4  unassigned  wm	0      	0     (0/0/0)    0
  5  unassigned  wm	0      	0     (0/0/0)    0
  6         usr  wm	182 - 24619    33.67GB   (24438/0/0)    70601382
  7   unassigned wm	0      	0     (0/0/0)    0

save 옵션은 format.dat 파일(또는 여러분이 지정하는 이름)을 기록합니다. 이 dat 파일은 드라이브 구성을 위해 format 명령에서 사용할 수 있는 정보입니다. 이 파일에 대한 자세한 내용은 man -s4 format.dat를 참조하십시오. 한 개의 창에서 새로 만든 format.dat 파일에 대해 cat을 수행하고, 또 다른 창에서 verify 명령을 사용하는 경우에는 여러 동일한 정보가 여러 가지 형식이나 어느 정도 좀 더 읽기 쉬운 형식으로 표시됩니다. save 옵션을 사용하여 만든 format.dat 파일에서 하나 이상의 정보 즉, 디스크의 rpm을 발견하게 됩니다.

#
# New disk/partition type  saved on Fri Aug  6 06:34:05 2004
#
disk_type = "SUN36G" \
         : ctlr = SCSI : ncyl = 24620 : acyl = 2 : pcyl = 24622 \
         : nhead = 27 : nsect = 107 : rpm = 10025
...

마지막으로 디스크 정보를 수집하기 위해 사용한 옵션 목록에는 inquiry 옵션이 있습니다. 이 옵션을 사용하면 아래에 명시된 대로 기본 정보가 제공됩니다.

format> inq
Vendor:   FUJITSU 
Product:  MAN3367M SUN36G 
Revision: 1502
format>

주의해야 할 점은 개정 레벨입니다. 펌웨어 업데이트는 디스크 드라이브에서 나타납니다. 이 옵션을 사용하면 디스크 공급업체에서 사용할 수 있는 레벨과 비교하여 디스크에서 보유한 개정 레벨을 비교할 수 있습니다. 저의 경우에는 공급업체가 대형 RAID 배열에서 디스크의 드라이브 펌웨어를 업데이트하도록 했으나 공급업체는 즉석에서 업데이트를 수행합니다. 저는 오래 전에 SCSI 디스크에서 펌웨어를 한두 번 업데이트했습니다. 오늘날 환경에 맞는 수많은 디스크와 필요한 작동 중지 용량으로 인해 더 이상 걱정이 없습니다. 때로는 오래된 격언인 "긁어 부스럼 만들지 말아라"라는 말이 이치에 맞습니다. 작동 중지 없이 업그레이드하는 방법은 아직 살펴보지 않았습니다.

format 명령의 좋은 점 중 하나는 명령 파일에서 공급할 수 있다는 점입니다. 예를 들어, 다음 명령 파일을 사용하여 파일에 결함 목록을 덤프할 수 있습니다.

defect
both
dump /disks/c2t1d0-defect.dat

r_gps@holstein: format -f c2t1d0.cmd /dev/rdsk/c2t1d0s2

하지만 디스크에서 분할 영역을 마운트한 경우에는 format 명령의 소거력으로 인해 이 명령을 명령 파일로 전달할 수 없습니다. 이 명령이 유용하다고 생각되는 경우에는 Perl 및 Expect를 사용하여 이 정보를 가져오는 것이 좋습니다.

경고: format 메뉴를 재현했습니다. 남은 옵션을 살펴보는 경우에는 이 옵션으로 인해 디스크에서 데이터가 삭제될 수 있습니다. 삭제되는 데이터는 여러분의 고유 데이터이므로 작업 시 주의해야 합니다.

r_gps@holstein: format /dev/rdsk/c2t1d0s2
selecting /dev/rdsk/c2t1d0s2
[disk formatted]

FORMAT MENU:
        disk       	- select a disk
        type       	- select (define) a disk type
        partition  	- select (define) a partition table
        current    	- describe the current disk
        format     	- format and analyze the disk
        repair     	- repair a defective sector
        label      	- write label to the disk
        analyze    	- surface analysis
        defect     	- defect list management
        backup     	- search for backup labels
        verify     	- read and display labels
        save       	- save new disk/partition definitions
        inquiry    	- show vendor, product and revision
        volname    	- set 8-character volume name
        !<cmd>     	- execute <cmd>, then return
        quit
format>

type 옵션은 요즘에는 거의 사용되지 않습니다. 이 옵션은 일부 디스크(주로 비 SCSI 디스크)가 보드에서 디스크 정보를 전달하지 않는 경우에 많이 사용되었습니다. 오래된 시스템 관리자는 실린더 수, 대체 실린더, 물리적 실린더, 헤드 수, 물리적 헤드 수, 데이터 섹터/트랙 수 및 기타 항목 호스트와 같은 정보를 입력해야 합니다. 대부분의 정보에 대해 정보를 찾을 수 없다는 이유로 기본값을 가져왔었습니다. 디스크 공급업체(이전에는 훨씬 많았음)는 그들의 독점 정보에 대해 매우 방어적이어서 때로는 정보가 제대로 수정될 때까지 값을 테스트했습니다. 이렇게 작업할 수 있지만 작업을 수행하기 전에 먼저 위에서 수집한 디스크 정보를 모두 저장해야 합니다. 물론 이 정보는 디스크에서 일종의 읽기 전용 장치여야 하지만, 이른 아침까지 작업하는 것 보다 안전한 편이 훨씬 낫습니다. 특히 이 기사를 훑어볼 때 이전 디스크를 사용 중인 경우에는 디스크 매개 변수를 다시 올바른 값으로 설정해야 할 수도 있습니다.

이를 수행해야 하기 위해 사용한 드라이브는 IPI와 SMD 드라이브였습니다. 구글에서 'ipi smd 디스크' 드라이브를 사용하여 약간의 이력을 검색하고 관심이 있는 경우에는 이러한 드라이브 유형을 구매할 수 있는 위치를 찾아 보십시오.

partition 옵션은 format 유틸리티에서 가장 많이 사용되는 옵션일 수 있습니다. 이 옵션을 선택하면 분할 영역 메뉴가 시작되고 여기에서 디스크의 분할 영역을 수정할 수 있습니다. 백업 분할 영역이라고 하는 두 번째 분할 영역(분할 영역 번호 2)이 전체 디스크임에 주의하십시오. 백업 분할 영역은 수정하지 않겠습니다. 하지만 백업 분할 영역에서 파일 시스템을 만들어 이것만(보통 데이터베이스가 있는 시스템) 마운트하는 드문 경우가 있습니다. 하지만 이것은 좋은 방법이 아닙니다. 디스크의 분할 영역에 소프트웨어를 연결하는 소프트웨어를 사용 중인 경우에는 문제가 발생할 수도 있습니다. 이를 수행한 응용 프로그램을 하나 작업해 보았지만 유지 보수, 업그레이드 등에 필요한 작업은 악몽과 같았습니다. 공급업체가 주의하지 않으면 제품에서 슬라이스 2를 사용해야 하는 경우 소프트웨어는 VTOC를 지울 수 있습니다.

제가 Sun의 방침에 강하게 동의하지 않는 영역에 대해서는 이제 나타납니다. 예를 들어 Sun 및 제가 알고 있는 Sun 시스템 엔지니어(SE)는 시스템 디스크에서 루트 분할 영역 하나와 다른 모든 것에 대한 또 다른 분할 영역 하나를 사용할 것을 권장하고 있습니다. 이는 가당치 않습니다! 디스크에서 각 슬라이스는 OS별로 구분된 디스크로 표시됩니다. 따라서 테스트 디스크를 분할하기 전에 이 부분에서 제가 Sun의 제안에 동의하지 않는 이유에 대해 살펴보겠습니다. 여러분이 저의 의견에 동의하지 않을 수도 있습니다. 이 경우 여러분께서 직접 기사를 작성해 주십시오.

응용 프로그램이 고장 난다는 이유로 / (root)에서 채우면 어떻게 됩니까(차례로 /var/tmp 채우기)? 이 경우 OS는 손상되지 않고, 위반 응용 프로그램도 손상되지 않을 수 있습니다. 하지만 그 후에는 다시 위반 응용 프로그램이 수정될 때까지 모든 항목에서 추가 프로세스를 수행을 중지할 수도 있습니다. 따라서 파일 시스템을 구축하고 /를 마운트하려면 분할 영역이 필요합니다. Sun과 제가 여기에서 동의하는 것은 분할 영역 한 개 입니다. 하지만 개별 파일 시스템에서 해당 /var를 가져와야 합니다. 따라서 /var용으로 또 다른 분할 영역이 필요합니다. 분할 영역은 두 개가 됩니다. 개별 분할 영역에 /usr도 넣습니다. /usr 파일 시스템에는 실행 파일과 ASCII 파일만 있어야 합니다. 분할 영역은 세 개가 됩니다. /opt에 넣은 항목은 시스템 실행에 필요하지 않으므로 이것도 개별 파일 시스템으로 만듭니다. 분할 영역은 네 개가 됩니다. 시스템에서 생성한 임시 파일만 있어야 하는 /tmp용 파일 시스템도 만듭니다. 분할 영역은 다섯 개가 됩니다. 이는 시스템 디스크이므로 스왑 분할 영역이 필요합니다. 분할 영역은 여섯 개가 됩니다. 이 경우 어떤 분할 영역이든 사용 가능한 분할 영역 한 개가 남습니다. 보안상의 이유로 시스템을 중단 상태로 잠그는 경우에는 /tmp/var/tmp를 제외한 파일 시스템을 모두 읽기 전용으로 만듭니다.

운영 체제는 각 분할 영역을 개별 파일 시스템으로 표시합니다. 즉 운영 체제는 이러한 파일 시스템 각각에 대해 캐시와 버퍼를 만듭니다. 추가 캐시와 버퍼는 I/O 로드를 작은 조각으로 분해합니다. 물론 여러분은 백업, 상호 연결 속도 및 디스크 제어기로 인해 제한을 받습니다. 하지만 I/O가 과중한 경우에는 문제가 발생할 가능성이 줄어듭니다.

이제 저의 의견에서 벗어나 분할 영역 메뉴를 계속 진행하겠습니다. 이 메뉴는 다음과 같은 또 다른 메뉴를 엽니다.

PARTITION MENU:
        0	- change `0' partition
        1	- change `1' partition
        2	- change `2' partition
        3	- change `3' partition
        4	- change `4' partition
        5	- change `5' partition
        6	- change `6' partition
        7	- change `7' partition
        select	- select a predefined table
        modify	- modify a predefined partition table
        name	- name the current table
        print	- display the current table
        label	- write partition map and label to the disk
        !<cmd>	- execute <cmd>, then return
        quit

분할 작업을 위해 제가 찾은 가장 쉬운 방법으로는 분할 영역 메뉴에서 간단히 print 옵션을 위한 'P' 키를 누르는 것입니다. 이를 통해 시작되는 작업을 볼 수 있으며, 위에서도 살펴본 다음 출력이 제공됩니다.

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part    Tag     Flag     Cylinders     Size       	Blocks
  0        root	wm	0 - 90     128.37MB	(91/0/0)      	  262899
  1        swap	wu	91 - 181   128.37MB 	(91/0/0)     	  262899
  2      backup	wu	0 - 24619   33.92GB	(24620/0/0) 	71127180
  3  unassigned	wm	0     0    (0/0/0)        0
  4  unassigned	wm	0     0    (0/0/0)        0
  5  unassigned	wm	0     0    (0/0/0)        0
  6         usr	wm	182 - 24619 33.67GB	(24438/0/0) 	70601382
  7  unassigned	wm	0     0    (0/0/0)        0

이 표는 기본 분할 영역 테이블로, 겹친 분할 영역을 한정적으로 원하지 않는다고 생각되면 이를 변경해야 합니다. 분할 영역을 수정하는 가장 안전한 방법은 modify 옵션을 사용하는 것입니다. 이는 Free Hog Slice라는 것과 연관되며, 분할 영역 옵션을 수용할 수 있도록 "자동" 확장하고 축소하는 임시 분할 영역입니다. Free Hog Slice는 format 유틸리티를 실행하는 경우에만 존재합니다.

modify를 입력하면 기본 분할 영역을 선택하는 옵션이 부여되고, 현재 분할 영역 또는 All Free Hog 분할 영역을 수정할 수 있습니다.

partition> modify
Select partitioning base:
        0. Current partition table (original)
        1. All Free Hog
Choose base (enter number) [0]?

기본적으로 현재 분할 영역을 수정하고, 이렇게 하는 것이 좋습니다. 실제로 여러분이 작업을 수행할 때에는 큰 차이가 없습니다. Current partition table을 선택하면 format 유틸리티가 먼저 현재 분할을 표시합니다. All Free Hog를 선택하면 공간을 할당한 분할 영역만 백업 분할 영역으로 표시됩니다. modify 옵션을 사용하면 백업 분할 영역을 제외한 모든 분할 영역을 수정할 수 있습니다. modify 옵션에서 제가 맘에 들지 않는 부분은 내가 만든 분할 영역에 태그를 지정할 수 없고, 플래그를 설정할 수 없다는 점입니다. 나중에 각 분할 영역을 개별적으로 선택하여 이 작업을 수행할 수는 있지만 제게는 중복된 작업으로 느껴집니다.

modify 옵션을 사용하지 않도록 선택하면 각 분할 영역을 개별적으로 변경할 수 있습니다. 제 경우에는 36GB 드라이브에서 작업 중이므로 루트 분할 영역을 약간 크게 만들 수도 있습니다. 수정할 분할 영역을 선택하고, 이 분할 영역에 대한 사용 권한을 설정하고, 시작 시 실린더와 끝으로 크기를 지정하여 시작합니다.

partition> 0
Part      Tag    Flag     Cylinders         Size      		Blocks
  0       root    wm       0 -    90      128.37MB    (91/0/0)      262899

Enter partition id tag[root]: 
Enter partition permission flags[wm]: 
Enter new starting cyl[0]: 
Enter partition size [262899b, 91c, 90e, 128.37mb, 0.13gb]: 256mb

분할 영역 태그와 사용 권한 플래그 질문에 '?'를 입력하고 허용 가능한 응답을 가져올 수 있습니다. 'P' 키를 다시 누르면 수정해야 할 문제가 있음이 표시될 수 있습니다.

Part      Tag   Flag     Cylinders      Size          		Blocks
  0      root	wm	0 - 181      	256.74MB	(182/0/0)   525798
  1      swap	wu	91 - 181      	128.37MB	(91/0/0)    262899
		...

분할 영역 0이 분할 영역 1과 겹칩니다. 분할 영역 만들기를 진행할 때 만드는 분할 영역이 겹치지 않는지 확인해야 합니다. 만든 분할 영역의 수와 크기는 실제로 사이트, 필요, 경험 등에 따라 달라집니다. 저의 경우에는 작업을 마치고 나서 다음이 표시되었습니다.

Current partition table (original):
Total disk cylinders available: 24620 + 2 (reserved cylinders)

Part      Tag   Flag     Cylinders         Size    		Blocks
  0        root	wm	0 -  181      	56.74MB		(182/0/0)        525798
  1        swap	wu	182 - 272      128.37MB		(1452/0/0)     	4194828
  2      backup	wu	0 - 24619      	33.92GB		(24620/0/0)    71127180
  3  unassigned	wm	3540 - 4265      1.00GB   	(726/0/0)      	2097414
  4  unassigned	wm	0      0    	(0/0/0)   	0
  5  unassigned	wm	4266 - 4991      1.00GB   	(726/0/0)      	2097414
  6         usr	wm	273 - 2087     	 2.50GB		(1815/0/0) 	5243535
  7         var	wm	2088 -	3539     2.00GB   	(1452/0/0)   	4194828

분할 영역 테이블을 기록해야 합니다. 이 작업은 label을 입력하고 연속된 질문에 'Y'로 대답하기만 하면 수행됩니다. /home의 위치에 대해 궁금할 수도 있습니다. 시스템 디스크에는 거의 사용자 항목을 입력하지 않습니다. 이러면 OS 레벨 간 좀 더 쉽게 이동할 수 있게 됩니다.

Sun의 디스크를 구입한 경우에는 실제로 format 옵션을 사용할 필요가 없습니다. 사용된 디스크를 구입하거나, 다른 OS의 디스크를 이동하거나, 높은 결함 목록이 있는 경우에는 format 옵션을 사용하여 Solaris OS용 디스크를 준비하십시오. 높은 결함 목록의 경우에는 디스크가 일부 정리될 수 있습니다. 이 옵션을 사용하는 한 가지 이유로는 만들어진 LUN을 나타낼 수 있을 만큼 "영리하지" 않은 RAID 엔진에 시스템이 연결되는 경우 Solaris OS에서 이를 알아챌 수 있기 때문입니다. 이러한 하드웨어가 있는 경우 새 장비를 검색해야 할 수도 있으며, 크기에 따라 업무를 마치기 전이나 업무를 시작할 때 디스크 포맷을 시작할 수도 있습니다. Ultra Enterprise 워크스테이션(UE-60)에 있는 36GB 드라이브는 완료하는 데 대략 332분이 걸립니다.

repair 옵션을 사용하여 디스크에서 결함있는 블록을 수정할 수 있습니다. 이 작업은 몇 년 동안 사용해본 적이 없습니다. 사실 이 기사를 작성하기 전까지 이 옵션에 대해 잊고 있었습니다. 요즘 디스크 드라이브의 가격이 낮으므로 디스크를 가지고 빈둥거리면서 여기저기에 있는 블록을 복구하는 데 시간을 보내기 보다는 디스크를 교체하는 것이 안전하고, 아마도 가격이 저렴할 수 있습니다. 그리 재미있지는 않지만 더 안전할 수 있음을 잘 알아두십시오.

이전에 label 옵션에 대해 충분히 자세하게 썼으므로 바로 analyze 옵션을 계속 진행하겠습니다. 결함 옵션과 같이 analyze 옵션은 또 다른 메뉴에서 열립니다. 제 경우에는 시간을 때우거나 기사를 작성하는 경우가 아니라면 analyze 옵션을 거의 사용하지 않습니다. 디스크를 분석하기 위해 분석 메뉴의 항목을 사용할 수도 있습니다. 일부 선택 항목에서 데이터가 손상됨을 알리는 알림을 받게 됩니다.

backup 옵션은 백업 레이블을 검색합니다. 그럼에도 불구하고 처음에는 기본 레이블을 확인하고, 하나가 발견되면 format에서 작업을 계속 진행할지 묻는 메시지가 표시됩니다. 계속 진행하면 이로 인해 backup 옵션이 기본 레이블을 찾은 백업 레이블로 교체합니다. 저는 이 작업이 필요한 적이 없었으므로 어떻게 사용할 수 있는지 잘 알지 못합니다. 제가 아는 한 기본 레이블이 없이는 format 명령에서 backup 옵션을 사용할 수 없습니다. Sun 지원 센터에서 여러분에게 dd 명령을 사용하여 디스크에서 백업 레이블을 기본 레이블 위치로 이동하는 방법을 알려줄 수 있을 거라고 생각합니다. 하지만 이는 단지 제 생각입니다.

이제까지 재미있으셨습니까? 여러 개의 디스크에서 분할 영역을 포맷하고 설정하는 작업은 문제도 아닙니다. 조금만 입력하기만 하면 되며, 이는 참을 만합니다. 하지만 대형 RAID 배열에 연결하여 10개, 심지어는 200개의 디스크를 동일하게 구성해야 하는 경우에는 어떻게 합니까? 대형 이미징 프로젝트용으로 이 작업을 수행해야 했던 친구가 있습니다. 그녀는 fmthard와 약간의 스크립팅을 사용하여 단번에 처리했습니다.

man -s1m fmthard를 사용하면 언제나 좀 더 많은 정보가 제공되지만 nutshell에서 fmthard를 사용하는 방법은 다음과 같습니다. 먼저 대상 디스크에서 분할 영역을 설정하는 방법에 대해 fmthard에 알려주는 ASCII 데이터 파일이 필요합니다. 여러분이 선호하는 편집기나 fmthard 명령 자체를 사용하여 하나를 만들 수 있습니다. 텍스트 파일을 살펴보면 각 디스크의 각 분할 영역에 대해 첫 번째 섹터와 섹터 수에 무엇을 지정해야 하는지 알 수 있습니다. 이전의 내용을 생각해 볼 때 분할 영역이 겹치지 않아야 합니다.

* Partition    Tag     		Flag   		First Sector  Sector Count
  0		2		00		4194828		1048707
  1		7		00		5243535		4145715
  2		5		00		0		71127180
  3		3		01		0		4194828
  4		0		00		9389250		2097414
  5		0		00		11486664	8389656
  6		4		00		19876320	6292242

따라서 format 유틸리티를 사용하여 필요한 구성을 위해 디스크 중 하나를 분할한 다음 fmthard 명령을 사용하여 남은 디스크를 분할하는 데 사용할 수 있는 데이터 파일을 만드는 것이 가장 좋습니다.

fmthard -i -n "" /dev/rdsk/c2t1d0s2 > ./mypartition.dat
 

앞의 명령이 mypartition.dat 파일에 c2t1d0의 디스크 분할 영역을 기록합니다. 그런 다음 같은 방식으로 분할할 모든 디스크에 대해 fmthard 명령에 '공급'할 수 있도록 이 dat 파일을 사용합니다.

« fmthard -s mypartition.dat -n "volumename" /dev/rdsk/cxtydzs2 »

fmthard 명령의 안 좋은 점은 VTOC가 업데이트된다는 점입니다. 따라서 디스크에 시작할 수 있는 유효한 레이블이 없는 경우에는 fmthard가 작동하지 않습니다. fmthard 명령을 사용하여 볼륨 이름을 사용하거나 설정하려는 경우 스크립트의 행은 200개 까지(또는 수정할 디스크 수) 가능합니다. 하지만 format 유틸리티를 통해 디스크 모음에서 분할 영역을 느리게 설정하는 것이 더 좋습니다.

이제 format을 위한 매뉴얼 페이지를 실제로 읽고 나면 다음과 같은 내용을 확인할 수 있습니다.

-e    Enable SCSI expert  menu.  Note  this  option  is  not
      recommended for casual use.

실제로 저는 여러분들에 대한 정보가 없습니다. 단지 제 경우에는 이 옵션을 사용해야 했습니다. format 유틸리티를 시작하면 여러분은 메뉴에서 다음과 같은 2개의 추가 행을 볼 수 있습니다.

scsi	- independent SCSI mode selects
cache	- enable, disable or query SCSI disk cache

scsi 옵션을 입력하면 간단한 경고 구문이 나타납니다. 모든 실제 상황에서 여러분이 SCSI 프로토콜에 대한 기술이 없는 경우에는 SCSI 프로토콜(특히 format 유틸리티의 scsi 옵션에서 변경할 수 있는 모드 선택)에 대해 설명하는 좋은 서적이 필요할 수도 있습니다. 저는 Friedhelm Schmidt가 쓴 The SCSI Bus and IDE Interface: Protocols, Applications, and Programming이란 책을 권장합니다. 저는 이 책으로 일부 작업을 수행했지만 저의 서투른 기술을 프로덕션 서버에 적용하지는 않았습니다. 때로는 변경되지 않은 채로 유지하는 것이 가장 좋습니다.

scsi 옵션 영역에서 수행하는 경우에는 주의해야 할 경고 명령이 있습니다. 즉 로깅 옵션(-l c2t1d0. og)으로 form t 유틸리티를 먼저 시작한 다음 format 유틸리티의 각 디스플레이를 진행하십시오. 이렇게 하면 모든 내용이 로그 파일에 저장됩니다. 또한 scsi 옵션에서의 포맷 선택 사항은 한 단계 높은 메뉴의 포맷 옵션과 같지 않습니다.

이제 캐시 옵션이 디스크 읽기 및 쓰기 캐시용으로 메뉴에 제공됩니다. 캐시는 일부 SCSI 디스크에 있으며, 캐시가 있는 디스크 중에서 일부 디스크를 사용하여 해당 캐시 옵션을 변경할 수 있습니다. 이 캐시는 디스크에 있는 소량의 메모리로, 시스템 메모리와는 상관이 전혀 없습니다. 즉 각 디스크는 약간 다를 수 있으며, 이러한 디스크로 작업하는 경우 약간씩 다르게 작동할 수 있습니다. 저는 보통 읽기 캐시가 설정되어 있음을 발견했습니다. 이것은 읽기 작업 중에 전원이 중단되더라도 아무 것도 손상되지 않음을 생각해보면 이해할 수 있습니다. 디스크에는 데이터가 있으면 안 됩니다. 이와 마찬가지로 저는 쓰기 캐시가 항상 설정 해제되어 있음을 발견했습니다. 이것은 전원이 중단되면 쓰기 캐시에 있는 모든 것도 잃어버린다는 점을 생각해보면 말이 됩니다. 쓰기 캐시를 설정하고 IOzone을 사용하여 I/O 로드와 비교했을 때 쓰기 작업의 범위가 아주 작은 범위에서 상당히 개선되었습니다. 이러한 개선 사항은 디스크 모델 간, 공급업체 간 달라질 수 있습니다.

-e 옵션을 사용하는 format 유틸리티를 사용 중이므로 여기서 살펴봐야 할 항목이 하나 더 있습니다. label을 입력하면 다음 응답이 표시됩니다.


format> label
[0] SMI Label
[1] EFI Label
Specify Label type[0]:

제 생각으로는 SMI는 Sun Microsystems를 의미합니다. 이는 기본 옵션으로, -e 옵션을 사용하지 않고 format 유틸리티를 입력하는 경우에 표시됩니다. SMI 옵션을 사용하면 백업 분할 영역인 분할 영역 2를 비롯하여 8개의 분할 영역의 표준 분할을 구성할 수 있습니다.

EFI(Extensible Firmware Interface) 레이블을 선택하는 경우에는 아래에 표시된 대로 또 다른 분할 영역을 얻을 수 있습니다.


ascii name  = <FUJITSU  MAN3367M SUN36G  1502 43d671f>
bytes/sector    =  512
sectors = 71132958
accessible sectors = 71132925
Part      Tag    Flag     First Sector        Size            Last Sector
  0	   root    wm               34     128.35MB         	  262898    
  1	   swap    wu           262899     128.37MB         	  525797    
  2  unassigned    wm                0         0                     0  
  3  unassigned    wm                0         0                     0    
  4  unassigned    wm                0         0                     0    
  5  unassigned    wm                0         0                     0    
  6         usr    wm           525798      33.66GB         	71116540    
  7  unassigned    wm                0         0                     0   
  8    reserved    wm         71116541       8.00MB         	71132924    

format>

Intel 웹 사이트의 Extensible Firmware Interface 페이지에서 EFI에 대한 좀 더 자세한 내용을 참조할 수 있습니다.

이제 이러한 설명을 통해 우리가 얻은 것은 무엇입니까? 여러분들이 format 유틸리티를 사용하여 수행할 수 있는 몇 가지 작업과, 여러분들을 위해 format 유틸리티에서 수행하는 작업에 대해 제가 명백하게 설명했기를 바랍니다.

저자 정보

Greg (shoe) Schuweiler는 20년간 컨설턴트, 임베디드 소프트웨어 디자이너, Oracle DBA 및 기타 낯선 분야의 호스트로 미국 중서부 지방에서 근무하고 있으며, 지난 8년간 훌륭한 전문인인 UNIX SA로 종사하고 있습니다. 연락처는 gshoe [at] xadd.org입니다.

The information and links on this page have been provided by a BigAdmin user. The submitter is solely responsible for such information and links. Sun is not responsible for the availability of external sites or resources, and does not endorse and is not responsible or liable for any content, advertising, products, or other materials on or available from such sites or resources. Sun will not be responsible or liable, directly or indirectly, for any actual or alleged damage or loss caused by or in connection with use of or reliance on the information posted here, or goods or services available on or through any external site or resource.
 
 

Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin