'hdd'에 해당되는 글 1건

  1. 2015.03.28 [18] HDD & Partition, MBR, fdisk, mkfs, mount, umount

[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount

|


- 2014.12.01



1. HDD & partition


[Partition]


파티션에는 크게 3종류가 있다.


1) Primary partition

        주 파티션 : 최대 4개까지 가능

2) Extended partition

        확장 파티션 : 주 파티션 1개를 빌려와 확장시켜주는 역할. (과일바구니의 바구니 역할)

3) Logical partition

        논리 파티션 : 확장 파티션 안에 구성되는 파티션. 무한개로 생성 가능하다.


ex) 파티션 6개가 필요한 경우

주 파티션 3개를 만들고 나머지 파티션 전체를 확장 파티션으로 만든다. 그 뒤 확장 파티션에 필요한 만큼 논리 파티션으로 만든다.




[HDD Type]


1) IDE(병렬)

        hd + 문자 : hda, hdb, hdc, hdd ...

                                     -----> CD-Rom

2) SCSI(직렬)

        sd + 문자 : sda, sdb, sdc, sdd ...




[Partition Type]


1) IDE(병렬)

        hd + 문자 + 숫자 : hda1, hde4, hdf7 ...


2) SCSI(직렬)

        sd + 문자 + 숫자 : sda3, sde5, sdc6 ...



ex)

sde 1 | 2 | 3 | 4

hdb 1 | 2 | 3 | 4(E) - 5(L)

sdf 1 | 2(E) - 5(L) | 2(E) - 6(L) | 2(E) - 7(L)

※ Logical Partition은 5번부터 시작한다.





2. MBR


모든 파티션에는 BR(Boot Record)가 있어 파티션 내의 정보들을 담고 있다.

특별히 OS 에는 MBR이 있어 파티션이 OS가 없는 파티션의 BR과 정보를 공유하는 역할을 한다.


ex)

USB를 꽂으면 USB 파티션의 BR 이 OS 의 MBR과 정보 교환이 일어나 OS에 있는 프로그램을 이용하여 USB 내의 파일을 읽을 수 있다.


MBR은 512kb 의 용량을 갖고 있으며 grub 로 설정 변경이 가능하다.





3. HDD 추가 및 설정


1) VM 에서 HDD 추가


2) 추가된 HDD 확인


# fdisk -l

=> VM에서 추가한 HDD를 확인한다. 나의 경우에는 sda 이다.


# fdisk /dev/sda

=> sda 하드에 대한 fdisk 메뉴 접근

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition               -> 삭제

   l   list known partition types

   m   print this menu                  -> 도움말

   n   add a new partition              -> 생성

   o   create a new empty DOS partition table

   p   print the partition table        -> 확인

   q   quit without saving changes      -> 저장 하지 않고 종료

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit     -> 저장하고 종료

   x   extra functionality (experts only)


Command (m for help): p


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System


=> 새로 추가된 하드이기 때문에 어떠한 파티션도 나타나지 않는다.




3) 새로운 파티션 생성


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +500M

=> default 값인 1부터 몇개의 실린더를 사용할지 적어도 되지만

   +와 단위를 붙여 사이즈 크기로 잡을 수도 있다.


Command (m for help): p


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

=> 약 500M로 파티션이 나눠진 것을 확인 할 수 있다.


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk -l /dev/sda


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

=> 약 500M의 파티션이 생성된 것 확인




4) 파일 시스템 생성


mkfs : make file system


Cent5.x : # mkfs.ext3 /dev/hda1 (or) mkfs -t ext3 /dev/hda1

Cent6.x : # mkfs.ext4 /dev/sda1 (or) mkfs -t ext4 /dev/sda1




[포맷 실습]


# mkfs.ext4 /dev/sda1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

130560 inodes, 522080 blocks

26104 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67633152

64 block groups

8192 blocks per group, 8192 fragments per group

2040 inodes per group

Superblock backups stored on blocks:

        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409


Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done


This filesystem will be automatically checked every 20 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

=> 3번의 done 이 나오면 포맷 성공





4. 마운트


어떤 파일 시스템을 디렉터리 일부에 넣어서 이용가능하게 하는 작업.

하나의 파티션을 하위 디렉터리처럼 쓰는 것을 마운트라 한다.


# mount /dev/sda1 /m.p(mount point)

# unmout /dev/sda1 or /m.p




[실습]


# mkdir /mnt/cdrom/ /linuxtest/

/mnt/cdrom/ 에는 testfile1 을, /linuxtest/ 에는 testfile2 를 생성

# touch /mnt/cdrom/testfile1 /linuxtest/testfile2


VMware 프로그램에서 CD-ROM에 이미지 삽입

# ls -l /dev/hd*

ls: cannot access /dev/hd*: 그런 파일이나 디렉터리가 없습니다

=> 원래는 hd3 가 cdrom 전용 하드였는데 CentOS 6 으로 올라오면서 hd 는 없어졌다.


# ls -l /dev/cdrom

lrwxrwxrwx 1 root root 3 2014-12-01 13:38 /dev/cdrom -> sr0

=> /dev/cdrom 에 보니 sr0 으로 심볼릭 링크 되어있는 것 확인할 수 있다.


# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

=> #mount /dev/sr0 과 같은 명령어이며 /mnt/cdrom 디렉터리에 읽기 전용으로 마운트 되었다.




- 교재 108p, 마운트 되어 있는 상태 보여주는 명령어


# mount

/dev/sdb7 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sdb1 on /boot type ext4 (rw)

/dev/sdb6 on /home type ext4 (rw)

/dev/sdb2 on /usr type ext4 (rw)

/dev/sdb5 on /var type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

/dev/sr0 on /mnt/cdrom type iso9660 (ro)

=> 하지만 보기 불편하다.


보기 좋은 다른 명령어

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sr0        3.8G  3.8G     0 100% /mnt/cdrom



# ls -l /mnt/cdrom

합계 562

-r--r--r-- 2 root root     14 2014-10-24 22:59 CentOS_BuildTag

-r--r--r-- 2 root root    212 2013-11-27 18:36 EULA

-r--r--r-- 2 root root  18009 2013-11-27 18:36 GPL

dr-xr-xr-x 2 root root 534528 2014-10-24 23:16 Packages

-r--r--r-- 2 root root   1354 2014-10-20 00:59 RELEASE-NOTES-en-US.html

-r--r--r-- 2 root root   1706 2013-11-27 18:36 RPM-GPG-KEY-CentOS-6

-r--r--r-- 2 root root   1730 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Debug-6

-r--r--r-- 2 root root   1730 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Security-6

-r--r--r-- 2 root root   1734 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Testing-6

-r--r--r-- 1 root root   3165 2014-10-24 23:17 TRANS.TBL

dr-xr-xr-x 3 root root   2048 2014-10-24 23:17 images

dr-xr-xr-x 2 root root   2048 2014-10-24 23:12 isolinux

dr-xr-xr-x 2 root root   4096 2014-10-24 23:17 repodata

=> 마운트 했기 때문에 아까 생성한 testfile1 이 보이질 않는다. 언마운트 하면 다시 보인다.



# umount /dev/sr0

=> 혹은 # umount /mnt/cdrom


# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

# ll /mnt/cdrom

합계 0

-rw-r--r-- 1 root root 0 2014-12-01 14:17 testfile1

=> 언마운트 하니 다시 tesetfile1 이 보여지는 것을 확인할 수 있다.




[실습]


내가 만든 파티션을 /mnt/cdrom에 마운트


# fdisk -l /dev/sda

Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux


# mount /dev/sda1 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom


/mnt/cdrom/ 에 testfile3 를 생성한뒤 언마운트 하여 이 파일이 정확히 어디에 생성되는지 확인

# touch /mnt/cdrom/testfile3

# umount /dev/sda1

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

=> 언마운트 된 것 확인


해당 파티션을 /linuxtest 에 재 마운트 시켜 testfile3 의 존재를 확인

# ll /linuxtest

합계 0

-rw-r--r-- 1 root root 0 2014-12-01 14:17 testfile2

# mount /dev/sda1 /linuxtest

# ll /linuxtest/

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3

=> 파티션에 testfile3 에 있는걸 확인가능



동시에 2곳에 마운트 시키기

# mount /dev/sda1 /mnt/cdrom

# ll /mnt/cdrom

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3


새로운 testfile4 생성

# touch /mnt/cdrom/testfile4

# ll /linuxtest/

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3

-rw-r--r-- 1 root root     0 2014-12-01 14:40 testfile4

=> /mnt/cdrom/ 에 만든 파일이 /linuxtest/ 에도 있다. 같은 파티션을 다른 곳에 마운트 시키면 공유된다.

   하지만 잘 사용하지 않는다.




[실습]


Extened partition 및 logical partition 만들기


# fdisk /dev/sda

...

Command (m for help): p

...

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

Partition number (1-4): 2

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130): +300M


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (66-104, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-104, default 104):

=> 남은 용량을 모두 쓸 맨 마지막 파티션은 사이즈를 적지 말고 그냥 엔터를 누른다.

Using default value 104


Command (m for help):w

The partition table has been altered!


Calling ioctl() to re-read partition table.


WARNING: Re-reading the partition table failed with error 16: 장치나 자원이 동작 중.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

=> The new table will be used at the next reboot : 재시작 해야 적용됨

=> 이 메세지가 나오면 재시작 필요.


포맷 명령어가 안되는 것을 확인할 수 있다.

# mkfs.ext4 /dev/sda5

mke2fs 1.41.12 (17-May-2010)

Could not stat /dev/sda5 --- 그런 파일이나 디렉터리가 없습니다

The device apparently does not exist; did you specify it correctly?


재부팅

# init 6


# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  176M  1.7G  10% /var

=> 마운트 된 것이 없어졌다. 즉 mount 명령어를 통한 마운트는 필요할 때 잠깐 쓰는 방법.


# mount /dev/sda1 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom


# mount /dev/sda5 /linuxtest/

mount: you must specify the filesystem type

=> sda1은 마운트 되지만 sda5는 운트 안됨. 포맷 되지 않았다(filesystem type을 결정하라)는 에러


# mkfs.ext4 /dev/sda5

...

# mount /dev/sda5 /linuxtest/

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom

/dev/sda5       289M  2.1M  271M   1% /linuxtest

=> 정상적으로 마운트 된 것을 확인할 수 있다.




* mount시 유의사항


1. mount point 는 임의의 디렉터리여야 한다.

사용자 및 시스템과 관련된 디렉터리를 mount point로 지정해서는 절대 안된다.

2. umount 명령 시 경로는 현재 마운트된 디렉터리만 아니면 어떤 곳이든 상관 없다.

3. 한개의 파티션은 반드시 한개의 mount point 만 사용한다.

4. 마운트시 작업할 대상은 반드시 파티션(Primary, Logical)만 대상이 된다.

하드디스크와 확장파티션(Extended)은 작업대상이 될 수 없다.


ex 2)

# cd /mnt/cdrom

# umount /mnt/cdrom

umount: /mnt/cdrom: device is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

=> 마운트된 디렉터리에선 umount가 되지 않는다.




[문제]


기존에 작업했던 mp 및 하드를 제거하고

새롭게 ide 하드와 mp를 만들어서

방금 전에 했던 작업을 해보세요

primary 500M -> /linuxtext

logical 200M -> /mnt/cdrom



시스템 종료, 기존 하드디스크 삭제 및 새로운 하드디스크 추가

부팅


현재 마운트 된 것이 없는 것 확인

# df -h


새롭게 잘 추가 되었나 확인

# fdisk -l


# fdisk /dev/sda

...

Command (m for help): p

...

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +500M

=> Primary partition 생성 완료


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

Partition number (1-4): 2

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130):

Using default value 130

=> 2번에 남은 용량 모두를 Extended partition으로 생성 완료


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130): +200M

=> Extended partition 중 200M를 Logical partition으로 생성 완료


Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

/dev/sda2              66         130      522112+   5  Extended

/dev/sda5              66          91      208813+  83  Linux


Command (m for help): w

The partition table has been altered!


# mkfs.ext4 /dev/sda1

# mkfs.ext4 /dev/sda5

# mount /dev/sda1 /linuxtest

# mount /dev/sda5 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /linuxtest

/dev/sda5       194M  1.8M  182M   1% /mnt/cdrom




And


prev | 1 | next