Hướng dẫn quản lý phân vùng đĩa cứng trên Linux
BÀI VIẾT

Hướng dẫn quản lý phân vùng đĩa cứng trên Linux

29.1K
author Tuấn Ngọc Nguyễn - 2021-11-20 10:11:27 (GMT+7)

Giới thiệu

Phân vùng đĩa cứng là chia nhỏ ổ đĩa trên máy tính để phục vụ một nhu cầu cụ thể. Ví dụ: Ổ phân vùng C:\ thường được sử dụng để chứa các file của hệ điều hành. Các phân vùng còn lại dùng cho mục đích khác như chứa thông tin cá nhân, công việc. Việc phân vùng đĩa cứng (hay còn gọi là ổ cứng) có nhiều lợi ích như dễ tổ chức, cài nhiều hệ điều hành và sao lưu dễ dàng hơn.

Dưới đây là một số khái niệm bạn cần nắm trước khi thực hiện thao tác phân vùng đĩa cứng.

File System là gì?

File System là một tập hợp logic của các files nằm trên một phân vùng hoặc trên đĩa. Hệ điều hành sử dụng File System để lưu trữ và truy xuất dữu liệu. Nếu không có File System thì dữ liệu được lưu trữ thành một khối chung mà không có cách nào biết nó bắt đầu hay kết thúc ở đâu.

Đối với hệ điều hành Windows thì file system chủ yếu ở format FAT32NTFS. Còn đối với Linux thì ta có nhiều format hơn như ext2, ext3, ext4, xfs, vfat, swap , ZFSGlusterFS.

File System Windows Ngoài ra các bạn sẽ va phải các khái niệm sau:

  • Primary Partition (Phân vùng Primary): Là phân vùng chứa 1 file system

  • Extended Partition (Phân vùng Extended): Là phân vùng chứa một hoặc nhiều phân vùng Logical.

  • Logical Partition (Phân vùng Logical): Là phân vùng có thể được format để lưu trữ dữ liệu nhưng không thể dùng để host một hệ điều hành.

Master Boot Record (MBR) là gì?

Master Boot Record (MBR) là một boot sector đặc biệt chứa thông tin về Hệ điều hành và tải vào bộ nhớ chính hoặc RAM . MBR nằm ở đầu ổ đĩa và còn đươc gọi là partition sector hoặc master partition table bởi nó bao gồm một bảng chứa vị trí từng phân vùng mà đĩa cứng đã được định dạng. MBR tuy được sử dụng rộng rãi nhưng hiện đã cũ. MBR làm việc với các ổ đĩa có kích thước chỉ 2TB trở xuống, Ngoài ra, nó chỉ hỗ trợ 4 phân vùng chính. Nếu muốn nhiều phân vùng hơn, bạn cần thực hiện chuyển đổi phân vùng chính thành "extended partition" và tạo phân vùng trong đó

GUID Partition Table (GPT) là gì?

Đây là một chuẩn mới hơn để bố trí các bảng phân vùng của thiết bị lưu trữ vật lý (ổ cứng, ổ đĩa). GPT tạo thành một phần của UEFI (thay thế EFI cho BIOS PC), UEFI có giao diện người dùng hiện đại và dễ sử dụng. GPT có điểm vượt trội chính là cho phép không giới hạn các phân vùng, hệ điều hành sẽ giới hạn điều đó.

GPT Partition Table

Quản lý phân vùng đĩa cứng bằng fdisk

fdisk là một tiện ích command-line để phân vùng đĩa cứng. fdisk có chức năng phân chia, thay đổi, thêm hoặc xoá các phân vùng. Điểm cộng của fdisk chính là tính năng nhanh, gọn, lẹ của mình. Hầu hết các hệ điều hành đều tích hợp sẵn tiện ích này.

Nếu bạn muốn thay đổi phân vùng trên ổ đĩa hiện tại thì nên backup dữ liệu trước, vì fdisk có thể sẽ xoá dữ liệu của bạn trên phân vùng.

Lưu ý: fdisk không thể sử dụng đối với bảng phân vùng GUID(GPT) và nó không hoạt động phân vùng lớn hơn 2TB.

Xem tất cả các phân vùng trên Linux

Trước khi bạn thực hiện bất kì hoạt động phân vùng thì bạn cần phải biết danh sách những phân vùng đang có trên thiết bị. Để liệt kê tất cả các thông tin chi tiết các phân vùng đang có sẵn trong hệ thống bạn sử dụng lệnh fdisk -l

bash (root)
fdisk -l

Ta được kết quả:

Kết quả
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: ABC
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x3ae7a788

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   1050623   1048576  512M  b W95 FAT32
/dev/sda2       1052670 104855551 103802882 49.5G  5 Extended
/dev/sda5       1052672 104855551 103802880 49.5G 83 Linux

Theo như ví dụ tên, chúng ta đang có 1 disk model ABC dung lượng 50 Gib và 3 devices sda1, sda2, sda5

Thông tin: Để xem một partition table cụ thể ta có thể thêm địa chỉ của nó vào phía sau code. Ví dụ: fdisk -l /dev/sdb

Vào chế độ chỉnh sửa phân vùng của ổ đĩa

Ta có thể sử dụng lệnh fdisk [address] với address là địa chỉ bạn muốn vào chế độ chỉnh sửa. Ở ví dụ dưới mình đang vào chế độ chỉnh sửa cho ổ đĩa /dev/sda

bash (root)
fdisk /dev/sda
Kết quả
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.
Command (m for help):

Sau khi xuất hiện thông báo "Welcome to fdisk....Command (m) for help:". Các bạn nhập vào m thì menu lệnh sẽ hiện ra.

bash
m
Kết quả
Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

Tạo một phân vùng mới

Để tạo một phân vùng mới bạn cần vào chế độ chỉnh sửa . Ví dụ dụ ở dưới đây mình sẽ thao tác với ổ đĩa là /dev/sda.

Sau khi dùng lệnh fdisk /dev/sda, hệ thống sẽ đưa bạn vào chế độ thao tác với các phân vùng trên ổ đĩa /dev/sda.

bash (root)
fdisk /dev/sda
Kết quả
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

Đây là trước khi tạo một phân vùng mới.

Kết quả
Device        Boot Start   End Sectors  Size Id Type
Command (m for help):           

Bạn thực hiện điền lệnh là n để tạo mới phân vùng.

bash
n
Kết quả
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Lúc này bạn có hai lựa chọn cho loại phân vùng mà mình tạo:

  • Chọn p để tạo phân vùng loại Primary

  • Hoặc chọn e để tạo phân vùng loại Extended

Trong ví dụ này, mình chọn phân vùng là Primary bằng cách chọn p.

bash
p

Thông tin: Bạn nên chọn loại phân vùng là Primary nếu phân vùng này chứa hệ điều hành hoặc thiết bị này có ít hơn 4 phân vùng. Bạn nên chọn loại phân vùng là extended nếu bạn muốn tạo nhiều hơn 4 phân vùng cho thiết bị.

Khi chọn loại phân vùng xong, fdisk sẽ yêu cần bạn nhập vào hai thông số là First sectorLast sector.

  • First sector là vị trí sector đầu của phân vùng.

  • Last sector là vị trí sector cuối của phân vùng.

Từ hai vị trí này sẽ tính ra được dung lượng của phân vùng. Ở đây mình chọn First Sector mặc định là 2048 còn Last Sector+5000 tức 2048+5000=7048. Ngoài ra bạn cũng có thể chỉ định size như +5G hay +512MB.

First sector (2048-1048575, default 2048):  2048
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1048575, default 1048575): +5000

Cuối cùng bạn bấm phím w để lưu. Bạn cần chờ ít phút để hệ thống tạo phân vùng. Như vậy chúng ta đã tạo mới 1 phân vùng rồi, ta cùng quan sát kết quả nhé:

Kết quả
Device        Boot Start   End Sectors  Size Id Type
/dev/sda1  p1       2048  7048    5001  2.5M  5 Extended

Command (m for help):           

Xóa một phân vùng

Xoá phân vùng thực hiện cũng tương tự như tạo, đầu tiên bạn truy cập vào chế độ chỉnh sửa bằng fdisk [address] sau đó bấm phím d để vào Menu xoá phân vùng

bash (root)
fdisk /dev/sda
Kết quả
Welcome to fdisk (util-linux 2.4).
Changes will remain in memory only until you decide to write them.
Be careful before using the write command.
Command (m for help):
bash
d
Kết quả
Partition number (1,3, default 3): 3

Bạn nhập số thứ tự phân vùng bạn muốn xoá (Mình chọn phân vùng số 3). Sau khi thông báo xoá thành công, bạn bấm phím w để lưu. Đây là kết quả trước khi mình xoá phân vùng số 3:

Kết quả
Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   1050623   1048576  512M  b W95 FAT32
/dev/sda2       1052670 104855551 103802882 49.5G  5 Extended
/dev/sda3       1052672 104855551 103802880 49.5G 83 Linux

Và sau khi xoá nó:

Kết quả
Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *       2048   1050623   1048576  512M  b W95 FAT32
/dev/sda2       1052670 104855551 103802882 49.5G  5 Extended

Format một phân vùng

Format phân vùng hay còn gọi là định dạng phân vùng. Thao tác này sẽ đưa các phân vùng chưa định dạng về một định dạng file system nhất định (ví dụ ext4). Trong ví dụ này chúng ta dùng mkfs.ext4 để định dạng phân vùng /dev/sda1 sang dùng file system ext4.

bash (root)
mkfs.ext4 /dev/sda1

Ta được kết quả

Kết quả
Device        Boot Start   End Sectors  Size Id Type
/dev/sda1  p1       2048  7048    5001  2.5M  5 ext4

Command (m for help):           

Lưu ý: Sau khi format thì dữ liệu trên phân vùng sẽ bị xoá, vì vậy bạn hãy cẩn thận chọn đúng phân vùng để format.

Quản lý phân vùng đĩa cứng bằng parted

Parted là gì và cách cài đặt

Parted là một công cụ command-line vô cùng nổi tiếng nhằm mục đích quản lý các phân vùng. Các chức năng chính của Parted bao gồm: Tạo, Xoá, Thu nhỏ, Mở rộng phân vùng. Khác với Fdisk, thì Parted có thể sử dụng trên GPT.

Để cài đặt Parted trên Ubuntu bạn chạy dòng lệnh:

bash (non-root)
sudo apt install parted

Thông tin: Bạn nên cập nhật ATP package tới bản mới nhất bằng lệnh sudo apt update

Đối với CentOS/RHEL 7: yum install parted -y

Đối với Fedora 22+: dnf install parted

Để sử dụng các tính năng của Parted, bạn cần khởi chạy nó bằng lệnh parted

bash (root)
parted 

Xem tất cả các phân vùng

Thông tin: Mặc định Parted chọn ổ đĩa đầu tiên được liệt kê trong hệ thống

Ta sử dụng lệnh print để liệt kê thông tin ổ cứng hiện tại.

bash
print
Kết quả
Model: ABC
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  538MB   537MB   primary   fat32        boot
 2      539MB   53.7GB  53.1GB  extended
 5      539MB   53.7GB  53.1GB  logical   ext4

Nếu muốn đổi sang phân vùng khác bạn có thể sử dụng select [address]. Ví dụ muốn đổi từ ổ đĩa hiện tại là /dev/sda sang ổ đĩa mới là /dev/sdb ta nhập như sau:

bash
select /dev/sdb

Ta sử dụng lệnh print để xem hiện tại đang ở đâu nhé:

(parted) select /dev/sdb
Using /dev/sdb
(parted) print
Model: ABC
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
 1 0.00B 32.2GB 32.2GB ext4
Number  Start   End     Size    Type      File system  Flags
 1      0kB  32.2MB   32.2MB   logical   fat32        

Tạo một phân vùng mới

CHÚ Ý: Bạn nên sử dụng lệnh print trước khi thực hiện bất cứ lệnh nào khác tránh việc nhầm lẫn phân vùng/ ổ đĩa và gây ra hậu quả không đáng có

Để tạo một phân vùng mới thì Parted sử dụng mklablemkpart. Được rồi, chúng ta bắt đầu từng bước nhé:

  • Bước 1: Chọn lable cho phân vùng bằng mklabel [label-type].

LABEL-TYPE bao gồm: aix, amiga, bsd, dvh, gpt, mac, msdos, pc98, sun, atari, loop. Mình sẽ không đi sâu về mỗi loại là gì, ở đây các bạn có thể xài mặc định là msdos như mình.

bash
mklabel msdos
  • Bước 2: Tạo phân vùng mới bằng mkpart. Ở đây mình sẽ tạo phân vùng Primary bắt đầu từ 1 tới 10000 (10GB)
bash
mkpart
Partition type?  primary/extended? primary
File system type?  [ext2]?
Start? 1
End? 10000
  • Bước 3: Tiếp theo, thoát từng phần bằng lệnh exit. Chúng ta sẽ định dạng phân vùng mới của mình trong hệ thống tệp ext4 bằng mkfs. Để thực hiện điều này, hãy chạy lệnh sau:
bash (root)
mkfs.ext4 /dev/sdb1

Ta sẽ được kết quả sau:

Kết quả
Model: ABC
Disk /dev/sdb: 34.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number        Start       End       Size          Туре    File system   Flags   
1            1049KB     10.0GB     9999MB        primary    ext4

Xóa một phân vùng

Để xóa một phân vùng. Bạn cần vào chế độ thao tác với ổ đĩa bằng lệnh parted theo hướng dẫn trên. Ở đây mình sẽ xóa một phân vùng trên ổ đĩa /dev/sda nên mình sẽ dùng lệnh select /dev/sda

Tiếp theo dùng lệnh print để liệt kê danh sách các phân vùng kèm số thứ tự của nó.

bash
print
Model: ABC
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system  Flags
 1      0.0B  53.7GB   53.7GB   primary   fat32       

Lệnh rm [number] là một lệnh dùng để xoá phân vùng số number. Khi thực hiện lệnh thì sẽ không có thông báo gì nên các bạn phải chú ý ! Đây là trước khi mình xoá phân vùng số 1.

Thực hiện xóa phân vùng số 1 bằng lệnh :

bash
rm 1

Ta thu được kết quả:

Kết quả
(parted) print
Model: ABC
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size File system Flags

Như vậy đã xóa thành công. Phân vùng số 1 đã mất.

Thay đổi kích thước phân vùng

Trong Parted, có khá nhiều công cụ để thay đổi kích thước nhưng có lẽ resizepart là nổi tiếng và dễ sử dụng nhất. Ví dụ như muốn thay đổi một phân vùng số 1 thì ta làm như sau:

bash
resizepart 
Partition number? 1
End?  [10.0GB]? 15000

Trong đó, khi hệ thống hỏi:

  • Partition number?: Bạn điền thứ tự phân vùng mình cần thay đổi kích thước. Ở đây mình điền 1 để thay đổi kích thước phân vùng số 1.

  • End? 10.0GB]?: Dung lượng bạn muốn thay đổi (đơn vị là MB). Ở đây mình điền 15000, tương đương với 15GB để thay đổi kích thước phân vùng từ 10GB sang 15GB.

Như vậy ta đã thay đổi size của phân vùng số 1 từ 10GB lên 15GB.

Rescue một phân vùng

Rescue là một lệnh để ứng cứu phân vùng. Nếu bạn lỡ như xoá hay vì một lý do nào đó mà phân vùng bị mất thì đây là một lệnh cứu cánh cực kì hiệu quả. Chỉ cần phân vùng nằm trong StartEnd thì lệnh rescue sẽ cố gắng phục hồi nó. Ví dụ:

bash
rescue
Start? 1
End? 53700
(parted) print
Model: ABC
Disk /dev/sda: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number Start End Size File system Flags
1 0.00B 53.7GB 53.7GB ext4

Thay đổi flag của phân vùng

Trong bảng phân vùng, bạn sẽ thấy một trường tên là Flag. Flag là để boot loader xác định phân vùng nào để boot. Có tổng cộng 11 flags:

boot, root, swap, hidden, raid, lvm, lba, legacy_boot, irst, esp, palo

Để đặt flag cho một phần vùng ta sử dụng 2 logic onoff bằng lệnh sau:

bash
set [number] [flag][on/off]

Ví dụ mình đặt flag boot cho phân vùng số 2 thì mình thực hiện lệnh sau:

bash
set 2 boot on
Kết quả
(parted) print
Model: ABC
Disk /dev/sdb: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number  Start   End     Size    Type      File system  Flags
1      1049kB  538MB   537MB   primary    fat32
2      539MB   53.7GB  53.1GB  extended               boot

Tổng kết

Quản lý phân vùng là kỹ năng cơ bản dành cho người sử dụng hệ điều hành Linux. Vì vậy bạn nên nắm rõ lý thuyết và thao tác thành thạo các công cụ phân vùng đĩa cứng. Việc phân vùng cũng ảnh hưởng đến dữ liệu trên đĩa cứng nên hãy thao tác cẩn thận và chính xác tuyệt đối nhé. Chúc bạn thành công!


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh xác định vị trí của tệp hoặc thư mục trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh kiểm tra nhiều cổng port đang mở của một tên miền trên Linux
Lệnh tạo một dãy số tăng dần trên Linux
Lệnh tạo một dãy số tăng dần trên Linux

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
Bình luận

Tính năng đang được phát triển

Đang tải bình luận