2.4 2006-02-16
Giới thiệu Block Device Thiết bị khối - Block Device

Hãy tìm hiểu các quan niệm về đĩa của Gentoo Linux và Linux nói chung, bao gồm các loại hệ tập tin Linux, phân vùng và block device. Khi bạn đã quen với đĩa và hệ tập tin, bạn sẽ được hướng dẫn cách thiết lập phân vùng và hệ tập tin cho Gentoo Linux.

Để bắt đầu, chúng tôi sẽ giới thiệu block device. Block device nổi tiếng nhất có lẽ là những cái đại diện cho ổ đĩa IDE thứ nhất trong hệ thống, tên là /dev/hda. Nếu bạn dùng ổ đĩa SCSI hoặc SATA thì ổ đĩa đầu tiên là /dev/sda.

Các block device kể trên được dùng để giao tiếp với đĩa. Các chương trình có thể dùng các block device này để thao tác với đĩa mà không cần biết đĩa bạn là IDE, SCSI hay cái gì khác. Chương trình chỉ cần xem đĩa như một loạt các khối liên tục,mỗi khối 512 byte, có thể truy cập ngẫu nhiên.

Phân vùng (Partition)

Mặc dù theo lý thuyết chúng ta có thể sử dụng toàn bộ đĩa cứng làm một vùng để chứa hệ thống Linux, Tuy nhiên trong thực tế thì không bao giờ sử dụng như vậy, thay vào đó, ổ đĩa cứng sẽ được chia thành các thiết bị khối nhỏ hơn, dễ quản lý hơn. Trên hệ thống x86, chúng được gọi là các phân vùng - partition.

Thiết kế mô hình phân vùng Mô hình phân vùng mặc định

Nếu bạn không thích tự xác định mô hình phân vùng cho hệ thống của mình, bạn có thể dùng mô hình phân vùng chúng tôi dùng trong tài liệu này:

/dev/hda1/dev/hda1(Không áp dụng)(Không áp dụng)(Partition Map)32kApple_partition_map/dev/hda2(Không áp dụng)(Không áp dụng)(Không áp dụng)(bootstrap)800kApple_Bootstrap(Không áp dụng)(Không áp dụng)(Không áp dụng)/dev/sda1(PReP Boot)800kLoại 0x41(Không áp dụng)/dev/hda2 (Nếu dùng quik)/dev/hda1(Không cần)ext232MBPhân vùng khỏi động/dev/hda3/dev/hda2(/dev/hda3 nếu dùng quik)/dev/hda2/dev/sda2(swap)512MPhân vùng Swap, Loại 0x82/dev/hda4/dev/hda3(/dev/hda4 nếu dùng quik)/dev/hda3/dev/sda3ext3, xfsPhần đĩa còn lạiPhân vùng gốc, Loại 0x83
Phân vùng NewWorld Phân vùng OldWorld Phân vùng Pegasos Phân vùng RS/6000 Hệ tập tin Kích thước Mô tả
Những phân vùng được đặt tên như sau: Apple_Driver43, Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, Apple_Patches. Nếu bạn không định dùng MacOS 9, bạn có thể xóa nó, vì MacOS X và Linux không cần chúng. Bạn có thể phải dùng parted để xóa chúng hoặc xoá toàn bộ đĩa bằng cách khởi động lại bảng phân vùng. parted còn có thể thay đổi kích thước phân vùng. Trên CD Cài đặt, có những patch để thay đổi kích thước hệ tập tin HFS+. Không may là không thể thay đổi kích thước hệ tập tin HFS+ kèm journal, ngay cả khi tắt journal trên Mac OS X. Mọi thứ bạn làm để thay đổi kích thước phân vùng bằng parted, bạn phải tự chịu rủi ro! Nhớ sao lưu dữ liệu!

Nếu bạn muốn biết một phân vùng to cỡ nào, hoặc thậm chí cần bao nhiêu phân vùng, hãy đọc tiếp. Nếu không hãy tiếp tục với Mặc định: Dùng mac-fdisk (Apple/IBM) để phân vùng đĩa hoặc Thay thế: Dùng parted (đặc biệt là Pegasos) để phân vùng đĩa.

Bao nhiêu và bao lớn?

Số lượng phân vùng phụ thuộc nhiều vào môi trường của bạn. Ví dụ, nếu bạn có rất nhiều người dùng, bạn sẽ muốn dùng một phân vùng riêng cho /home để tăng cường an ninh và dễ sao lưu. Nếu bạn cài đặt Gentoo làm mail server, bạn nên dùng phân vùng riêng cho /var vì thư từ được lưu trong /var. Một lựa chọn hệ tập tin đúng sẽ tăng cường hiệu năng của hệ thống. Game server thường dùng phân vùng riêng cho /opt vì hầu hết các game server được cài vào đây. Lý do tách riêng phân vùng cũng tương tự như với /home: an toàn và sao lưu. Bạn chắc chắn sẽ cần một /usr to: nó không chỉ chứa một lượng lớn các ứng dụng, cây Portage chiếm gần 500 MB, không tính mà nguồn cũng được lưu trong đó.

Như bạn thấy, nó phụ thuộc rất nhiều vào mục đích của bạn. Phân vùng/volume rời có những ưu điểm sau:

  • Bạn có thể chọn loại hệ tập tin thích hợp nhất cho phân vùng/volume của bạn
  • Toàn hệ thống không thể nào hết vùng lưu trữ nếu như một công cụ hư hỏng nào đó cứ liên tục ghi vào phân vùng/volume
  • Nếu cần thiết, có thể tiết kiệm thời gian khi kiểm tra hệ tập tin, vì nhiều hệ tập tin có thể được kiểm tra đồng thời (mặc dù đây là ưu điểm khi có nhiều đĩa hơn là khi dùng nhiều phân vùng)
  • Tăng cường an ninh bằng cách gắn kết các phân vùng dạng chỉ-đọc, nosuid (bỏ qua bit setuid), noexec (không thực thi).

Tuy nhiên, dùng nhiều phân vùng có một bất lợi lớn: nếu cấu hình không đúng, bạn có thể có một hệ thống quá dư đĩa ở một phân vùng và thiếu đĩa trên phân vùng khác. Ngoài ra còn có giới hạn 15 phân vùng trên SCSI và SATA.

Mặc định: Dùng mac-fdisk (Apple) để phân vùng đĩa

Ta sẽ tạo phân vùng dùng mac-fdisk:

# mac-fdisk /dev/hda

Trước hết hãy xóa những phân vùng cũ để có chỗ trống cho các phân vùng Linux. Dùng d trong mac-fdisk để xóa những phân vùng đó. Nó sẽ hỏi bạn số phân vùng cần xóa. Thường phân vùng đầu tiên trên máy Apple (Apple_partition_map) không thể bị xóa.

Trên máy NewWorld, hãy tạo phân vùng Apple_Bootstrap bằng lệnh b. Nó se hỏi bắt đầu ở khối nào. Nhập vào số phân vùng rỗng đầu tiên, theo sau bởi p. Trong ví dụ là 2p.

Phân vùng này không phải là phân vùng "khởi động". Nó không hề được dùng bởi Linux; bạn không cần đặt bất kỳ hệ tập tin nào vào đó và bạn không bao giờ mount nó. Người dùng Apple không cần phân vùng bổ sung cho /boot.

Giờ để tạo phân vùng swap, nhấn c. Một lần nữa mac-fdisk sẽ hỏi bắt đầu phân vùng ở khối nào. Vì chúng ta đã dùng 2 trước đó để tạo phân vùng Apple_Bootstrap, chúng ta sẽ phải nhập 3p. Khi bạn được hỏi kích thước, hãy nhập 512M (hoặc bất kỳ kích thước nào bạn muốn -- 512M chỉ là ví dụ). Khi được hỏi tên, hãy nhập swap (bắt buộc).

Để tạo phân vùng gốc, nhập c, sau đó là 4p để chọn khối bắt đầu phân vùng gốc. Khi được hỏi kích thước, nhập lại 4p. mac-fdisk sẽ hiểu nó là "Dùng mọi không gian còn trống". Khi được hỏi tên, hãy nhập root (bắt buộc).

Để hoàn tất, hãy ghi phân vùng vào bằng wq để thoát mac-fdisk.

Để chắc chắn mọi thứ đều ổn, bạn nên chạy mac-fdisk một lần nữa và kiểm tra xem mọi phân vùng có chưa. Nếu bạn không thấy bất kỳ phân vùng nào bạn tạo, hoặc những thay đổi bạn đã tạo ra, bạn nên khởi động lại phân vùng bằng cách nhấn "i" trong mac-fdisk. Chú ý rằng nó sẽ tạo lại partition map và xóa mọi phân vùng hiện có.

Bây giờ bạn đã tạo xong phân vùng, hãy tiếp tục với Tạo các hệ tập tin.

Thay thế: Dùng parted (hầu hết với Pegasos) để phân vùng đĩa

parted, Partition Editor, có thể xử lý các phân vùng HFS+ của Mac OS và Mac OS X. Với công cụ này, bạn có thể thay đổi kích thước phân vùng Mac của bạn và tạo khoảng trống cho các phân vùng Linux. Tuy nhiên, ví dụ bên dưới mô tả cách phân vùng chỉ cho Pegasos.

Để bắt đầu, hãy khởi động parted:

# parted /dev/hda

Nếu ổ đĩa chưa được phân vùng, hãy chạy mklabel amiga để tạo disklabel cho đĩa.

Bạn có thể gõ print mọi lúc trong parted để xem bảng phân vùng hiện tại. Nếu lúc nào đó bạn thay đổi ý định hoặc phạm sai lầm, bạn có thể nhấn Ctrl-c để ngừng parted.

Nếu bạn còn định cài đặt MorphOS trên Pegasos, hãy tạo hệ tập tin affs1 tên "BI0" (BI không) ở đầu đĩa. 32MB là quá đủ để chứa kernel MorphOS. Nếu bạn có Pegasos I hoặc định dùng reiserfs hoặc xfs, bạn sẽ cần chứa Linux kernel trên phân vùng này (Pegasos II có thể khởi động từ ext2/ext3 hoặc affs1). Để tạo phân vùng, chạy mkpart primary affs1 START END trong đó STARTEND được thay bằng vùng megabyte (vd 0 32 tạo phân vùng 32 MB bắt đầu tại 0MB và kết thúc ở 325MB).

Bạn cần tạo hai phân vùng Linux, một phân vùng gốc cho mọi chương trình, và một phân vùng swap. Để tạo phân vùng gốc, bạn phải quyết định phân vùng cần dùng. Các tùy chọn có thể là ext2, ext3, reiserfs và xfs. Trừ khi bạn biết bạn làm gì, còn không thì dùng ext3. Hãy chạy mkpart primary ext3 START END để tạo phân vùng ext3. Cũng vậy, hãy thay STARTEND bắt điểm bắt đầu và kết thúc phân vùng, tính theo Megabyte.

Bạn nên tạo phân vùng swap có kích thước tương đương hai lần lượng RAM trên máy tính của bạn. Bạn có thể sẽ gặp rắc rối với phân vùng swap nhỏ hơn trừ khi bạn định chạy nhiều ứng dụng cùng lúc (mặc dù ít nhất là 512MB). Để tạo phân vùng swap, chạy mkpart primary linux-swap START END.

Hãy ghi ra số minor của partition vì bạn sẽ cần nó trong quá trình cài đặt. Để hiển thị số minor, chạy print. Các ổ đĩa được truy cập thông qua /dev/hdaX trong đó X thay bằng số minor của partition.

Khi hoàn tất, gõ quit để thoát parted.

Tạo các hệ tập tin Giới thiệu

Sau khi đã tạo phân vùng, bạn cần cài hệ tập tin lên đó. Nếu bạn không quan tâm loại hệ tập tin cần chọn và sẵn sàng dùng loại hệ tập tin mặc định như trong sách này thì bạn có thể tiếp tục với Cài hệ tập tin lên phân vùng. Nếu không hãy đọc tiếp để tìm hiểu về những loại phân vùng được hỗ trợ...

Loại hệ tập tin?

Có nhiều hệ tập tin. Ext2, ext3, ReiserFS và XFS hoạt động ổn định trên PPC.

ext2 là hệ tập tin cho Linux, nhưng nó không có metadata journaling, nghĩa là việc kiểm tra hệ tập tin lúc khởi động có thể tốn nhiều thời gian. Có nhiều hệ tập tin mới hơn với tính năng journal để chọn lựa, tốn ít thời gian kiểm tra hơn so với những loại không có tính năng journal. Các hệ tập tin journal giúp tránh đợi lâu lúc khởi động khi hệ tập tin bạn không ổn định.

ext3 là phiên bản ext2 với tính năng journal, giúp phục hồi nhanh kèm theo những đặc điểm khác của tính năng journal như full data, ordered data journaling. ext3 là một lựa chọn tốt và an toàn. Nó còn có tùy chọn hashed b-tree index giúp tăng hiệu năng trong hầu hết trường hợp. Bạn có thể bật index bằng cách thêm -O dir_index vào lệnh mke2fs. Nói tóm lại, ext3 là một lựa chọn xuất sắc.

ReiserFS là hệ tập tin dựa trên B*-tree có hiệu năng tốt và vượt xa cả ext2 và ext3 khi xử lý các tập tin nhỏ (nhỏ hơn 4k), thường vượt gấp 10-15 lần. ReiserFS còn hoạt động tốt trong nhiều điều kiện khác nhau và hỗ trợ metada journal. Với các kernel 2.4.18 trở đi, ReiserFS là lựa chọn tốt để sử dụng hằng ngày cũng như những trường hợp cực kỳ như các hệ tập tin lớn, hệ tập tin chứa nhiều tập tin nhỏ, những tập tin cực lớn và thư mục chứa hàng ngàn tập tin.

XFS là hệ tập tin hỗ trợ metadata journal và một tập tin năng mạnh mẽ, được tối ưu để thích hợp với nhiều điều kiện khác nhau. Chúng tôi chỉ khuyến khích dùng loại hệ tập tin này trên Linux với hệ thống SCSI và/hoặc fibre channel kèm bộ nguồn bảo đảm không bị ngắt. Vì XFS cache in-transit data trong bộ nhớ một cách đáng kể, những chương trình không được thiết kế phù hợp (những chương trình không để ý các phòng ngừa khi ghi tập tin vào đĩa - có vài chương trình như vậy) có thể làm mất một lượng dữ liệu lớn nếu hệ thống bị ngừng đột ngột.

Cài hệ tập tin lên phân vùng

Để tạo hệ tập tin trên phân vùng hoặc volume, cần có các công cụ cho mỗi loại hệ tập tin:

ext2mkfs.ext2ext3mkfs.ext2 -jreiserfsmkfs.reiserfsxfsmkfs.xfs
Hệ tập tin Lệnh tạo

Ví dụ, để định dạng phân vùng gốc (/dev/hda4 trong ví dụ này) dùng loại ext3 (như trong ví dụ), bạn dùng:

# mkfs.ext2 -j /dev/hda4

Bây giờ tạo hệ tập tin cho những phân vùng của bạn (hoặc các logical volume).

Trên máy PegasosII, phân vùng chứa kernel phải là ext2 hoặc ext3. Máy NewWorld có thể khởi động từ ext2, ext3, XFS, ReiserFS và thậm chí HFS/HFS+. Máy OldWorld khởi động với BootX, kernel phải đặt trong phân vùng HFS, sẽ được thực hiện khi cấu hình bootloader.
Kích hoạt phân vùng Swap

mkswap là lệnh để khởi tạo phân vùng swap:

# mkswap /dev/hda3

Để kích hoạt sử dụng phân vùng swap, dùng swapon:

# swapon /dev/hda3

Giờ hãy tạo và kích hoạt phân vùng swap của bạn.

Mount (Gắn kết)

Các phân vùng của bạn đã được tạo và định dạng xong. Giờ là lúc để gắn các phân vùng này vào hệ thống. Hãy dùng lệnh mount. Đừng quên tạo những thư mục mount cần thiết trước khi mount các phân vùng bạn đã tạo vào. Như trong ví dụ, chúng tôi sẽ mount phân vùng gốc và phân vùng boot:

# mkdir /mnt/gentoo
# mount /dev/hda4 /mnt/gentoo
Nếu bạn muốn /tmp nằm trên một phân vùng riêng, hãy đảm bảo quyền truy cập của nó sau khi mount: chmod 1777 /mnt/gentoo/tmp. Điều này cũng cần được thực hiện với /var/tmp.

Chúng ta cũng sẽ mount hệ tập tin proc (một hệ tập tin ảo để giao tiếp với kernel) vào /proc. Nhưng trước hết hãy cho các tập tin vào phân vùng.

Hãy tiếp tục với Cài đặt các tập tin cài đặt Gentoo.