Hướng Dẫn Quản Lý Phân Vùng đĩa Cứng Trên Linux - 123HOST

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 FAT32 và NTFS. Còn đối với Linux thì ta có nhiều format hơn như ext2, ext3, ext4, xfs, vfat, swap , ZFS và GlusterFS.

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.

bashm _ 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.

bashn _ 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.

bashp _

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 là +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): bashd _ 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.

bashprint _ 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:

bashselect /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 mklable và mkpart. Đượ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.

bashmklabel 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)
bashmkpart 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ó.

bashprint 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 :

bashrm 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:

bashresizepart 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 Start và End thì lệnh rescue sẽ cố gắng phục hồi nó. Ví dụ:

bashrescue 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:

bashset [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:

bashset 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!

Từ khóa » Cách Chia ổ đĩa Trong Ubuntu