Friday, April 18, 2014

Định dạng, format ổ cứng trên Linux



1. Sử dụng lệnh trên Linux 
Trên Linux, sử dụng lệnh fdisk để phân chia partition của ổ cứng, mkfs để format, mount để gắn một partition đã format vào một mount point, chỉnh sửa fstab để Linux có thể tự động mount khi boot.
Khi thêm một ổ cứng với vào hệ thống, cần dùng lệnh fdisk -l để kiểm tra xem Linux gán cho ổ cứng mới device nào.
# fdisk -l

Disk /dev/hda: 80.0 GB, 80060424192 bytes
255 heads, 63 sectors/track, 9733 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1         262     2104483+  82  Linux swap / Solaris
/dev/hda2   *         263        2873    20972857+  83  Linux
/dev/hda3            2874        9733    55102950   83  Linux

Disk /dev/sda: 40.0 GB, 40007761920 bytes
64 heads, 32 sectors/track, 38154 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
#
Trong ví dụ trên, có thể thấy trên máy đang có một harddisk 80GB được gán vào /dev/hda và chia thành 3 partition hda1, hda2, hda3. Harddisk thứ 2 40GB được gán vào /dev/sda, và harddisk này chưa được định dạng.
Cần chú ý rằng với một số Hệ điều hành Linux, sẽ quy định khe IDE0 tương ứng với /dev/hda, khe IDE1 tương ứng với /dev/hdb,... Các ổ cứng SCSI, hay USB sẽ được gán vào /dev/sda, /dev/sdb,...
Với /dev/sda mới chưa được định dạng nói trên, trước hết tao dùng lệnh fdisk
# fdisk /dev/sda

The number of cylinders for this disk is set to 38154.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 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):
Sau khi dùng lệnh fdisk /dev/sda, sẽ xuất hiện chế độ gõ lệnh của fdisk, ấn 'm' để đưa ra các hướng dẫn về lệnh của fdisk. Trong ví dụ này, chọn 'n' để thêm một partition mới.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-38154, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-38154, default 38154): 20480

Command (m for help):
Sau khi chọn 'n', xuất hiện các lựa chọn: lựa chọn 'p' để tạo primary partition – phân vùng có thể boot được, lựa chọn 'e' để tạo một phân vùng extended. Bước này chọn 'p'. Sau khi chọn 'p', chương trình sẽ hỏi Partition number (1-4), gõ số 1. Chương trình sẽ cho phép bạn thay đổi First cylinder và Last cylinder. Chọn First cylinder = 1 và Last cylinder =20480. Fdisk sẽ quay trở lại chế độ gõ lệnh chính của nó.
Tại chế đô gõ lệnh chính, dùng 'w' để ghi lại các thông tin nói trên.
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
#
Sau khi chọn 'w', các thông tin sẽ được fdisk ghi lại trên harddisk và fdisk tự động thoát, quay trở lại chế độ gõ lệnh của Linux. Tại đây, gõ lệnh fdisk -l để kiểm tra các thay đổi.
# fdisk -l

Disk /dev/hda: 80.0 GB, 80060424192 bytes
255 heads, 63 sectors/track, 9733 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1         262     2104483+  82  Linux swap / Solaris
/dev/hda2   *         263        2873    20972857+  83  Linux
/dev/hda3            2874        9733    55102950   83  Linux

Disk /dev/sda: 40.0 GB, 40007761920 bytes
64 heads, 32 sectors/track, 38154 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       20480    20971504   83  Linux
#
Sau khi gõ lệnh fdisk -l, có thể nhận thấy một partition /dev/sda1 mới được tạo.

Để format partition này, sử dụng lệnh mkfs
# mkfs.ext3 /dev/sda1
mke2fs 1.38 (30-Jun-2005)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2621440 inodes, 5242876 blocks
262143 blocks (5.00%) reserved for the super user
First data block=0
160 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#
Tuỳ vào dự định của bạn tạo dạng hệ thống file cho /dev/sda1 là ext2, ext3 hay một định dạng khác mà tao sẽ dùng tham số thích hợp. Trong ví dụ trên, ta format /dev/sda1 với ext3.
Sau khi format, để sử dụng được /dev/sda1, cần phải mount nó vào một mount point, giả sử mount vào mount point /media/data, ta dùng lệnh sau:
# mount /dev/sda1 /media/data
Để Linux tự động mount /dev/sda1 vào mount point nói trên, cần phải thêm vào file /etc/fstab dòng sau: /dev/sda1 /media/data ext3 defaults 0 0. Ví dụ file /etc/fstab

# /etc/fstab
/dev/hda2 / reiserfs acl,user_xattr 1 1
/dev/hda3 /home reiserfs acl,user_xattr 1 2
/dev/hda1 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
192.168.0.1:/home/centos4 /home/centos4_200 nfs defaults 0 0
/dev/sda1 /media/data ext3 defaults 0 0
Để kiểm tra partition nào được mount vào mount point nào dùng lênh df
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda2             20972152   8155616  12816536  39% /
udev                    517332       164    517168   1% /dev
/dev/hda3             55101224  33054028  22047196  60% /home
/dev/sda1             20642412    131232  19462608   1% /media/data