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
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.
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
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
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:
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ọi đĩa trong SGI đều cần một
Sau đây là một ví dụ về
# fdisk /dev/sda Command (m for help): x Expert command (m for help): m Command action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g create an IRIX (SGI) partition table h change number of heads m print this menu p print the partition table q quit without saving changes r return to main menu s change number of sectors/track v verify the partition table w write table to disk and exit Expert command (m for help): g Building a new SGI disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content will be irrecoverably lost. Expert command (m for help): r Command (m for help): p Disk /dev/sda (SGI disk label): 64 heads, 32 sectors, 17482 cylinders Units = cylinders of 2048 * 512 bytes ----- partitions ----- Pt# Device Info Start End Sectors Id System 9: /dev/sda1 0 4 10240 0 SGI volhdr 11: /dev/sda2 0 17481 35803136 6 SGI volume ----- Bootinfo ----- Bootfile: /unix ----- Directory Entries ----- Command (m for help):
Giờ SGI Disklabel đã được tạo, bạn có thể tạo các phân vùng. Trong ví
dụ trên, chúng ta đã có hai phân vùng. Chúng là những phân vùng đặc
biệt như đã đề cập và không nên đụng đến chúng. Ruy nhiên, để cài đăt
Gentoo, chúng ta sẽ cần nạp bootloader, và có thể nhiều kernel image
trực tiếp từ volume header, vì vẫn chưa có hỗ trợ SGI Bootloader trong
Portage. Volume header tự nó có thể chứa
Tiến trình mở rộng volume header không thật dễ hiểu lắm - - cần dùng vài mẹo để thực hiện. Bạn không thể đơn giản xóa đi rồi thêm lại volume header vì fdisk sẽ ứng xử rất kỳ lạ. Trong ví dụ bên dưới, chúng ta sẽ tạo Volume header 50MB kèm với phân vùng /boot 50MB. Mô hình của bạn có thể khác. Mô hình này chỉ mang tính chất minh họa thôi.
Command (m for help): n Partition number (1-16): 1 First cylinder (5-8682, default 5): 51 Last cylinder (51-8682, default 8682): 101(Chú ý fdisk chỉ cho phép phân vùng #1 được tạo lại, bắt đầu tại cylinder tối thiểu là 5) (Nếu bạn đã thử xóa và tạo lại SGI Volume theo cách này, bạn sẽ gặp vấn đề tương tự.) (Trong ví dụ, chúng ta muốn có /boot 50MB, vì vậy chúng ta sẽ bắt đầu tại cylinder 51 (Volume Header cần bắt đầu tại cylinder 0, nhớ không?), và kết thúc tại cylinder 101, coi như được 50MB (+/- 1-5MB)) Command (m for help): d Partition number (1-16): 9(Xóa phân vùng #9 (SGI Volume Header)) Command (m for help): n Partition number (1-16): 9 First cylinder (0-50, default 0): 0 Last cylinder (0-50, default 50): 50(Tạo lại phân vùng #9, kết thúc ngay trước phân vùng #1)
Nếu bạn không chắc cách dùng
Khi đã xong, bạn có thể tạo các phân vùng của bạn an toàn. Sau khi đã
bố trí xong mọi phân vùng, bảo đảm đặt ID phần vùng swap là
Giờ các phân vùng đã được tạo, hãy tiếp tục với
Với máy Cobalt, BOOTRPM cần thấy MS-DOS MBR, vì thế phân vùng ổ cứng
khá dễ hiểu -- thật ra, nó hoàn toàn giống cách phân vùng trên máy
x86.
Vì lý do này, chúng tôi đề nghị tạo phân vùng
Giả định bạn đã tạo
Vậy hãy tiếp tục.. Để tạo phân vùng, bạn dùng gõ
# fdisk /dev/hda The number of cylinders for this disk is set to 19870. 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)(Bắt đầu bằng cách xoá các phân vùng hiện có) Command (m for help): o Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 19870. 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) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)(Giờ kiểm tra bảng phân vùng đã sạch chưa) Command (m for help): p Disk /dev/hda: 10.2 GB, 10254827520 bytes 16 heads, 63 sectors/track, 19870 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System(Tạo phân vùng /boot) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1(Nhấn ENTER để chấp nhận mặc định) First cylinder (1-19870, default 1): Last cylinder or +size or +sizeM or +sizeK (1-19870, default 19870): +20M(và giờ nếu gõ 'p' lần nữa, chúng ta sẽ thấy phân vùng mới) Command (m for help): p Disk /dev/hda: 10.2 GB, 10254827520 bytes 16 heads, 63 sectors/track, 19870 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks Id System /dev/hda1 1 40 20128+ 83 Linux(Phần còn lại dùng để tạo phân vùng mở rộng) Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 2(Một lần nữa, nhấn ENTER là đủ) First cylinder (41-19870, default 41): Using default value 41(Chúng ta muốn dùng toàn bộ đĩa, vì thế nhấn ENTER lần nữa) Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): Using default value 19870(Giờ, phân vùng / -- Tôi dùng phân vùng riêng cho /usr, /var, ... để / đủ nhỏ. Hãy điều chỉnh theo ý thích của bạn.) Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (41-19870, default 41):<Press ENTER> Using default value 41 Last cylinder or +size or +sizeM or +sizeK (41-19870, default 19870): +500M(... và tương tự cho những phân vùng khác ...) (Cuối cùng, swap. Đề nghị ít nhất 250MB swap, thông thường 1GB) Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (17294-19870, default 17294): <Press ENTER> Using default value 17294 Last cylinder or +size or +sizeM or +sizeK (1011-19870, default 19870): <Press ENTER> Using default value 19870(Giờ nếu bạn kiểm tra bảng phân vùng, mọi thứ sẽ ổn trừ một việc...) Command (m for help): p Disk /dev/hda: 10.2 GB, 10254827520 bytes 16 heads, 63 sectors/track, 19870 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks ID System /dev/hda1 1 21 10552+ 83 Linux /dev/hda2 22 19870 10003896 5 Extended /dev/hda5 22 1037 512032+ 83 Linux /dev/hda6 1038 5101 2048224+ 83 Linux /dev/hda7 5102 9165 2048224+ 83 Linux /dev/hda8 9166 13229 2048224+ 83 Linux /dev/hda9 13230 17293 2048224+ 83 Linux /dev/hda10 17294 19870 1298776+ 83 Linux(Chú ý #10, phân vùng swap vẫn là 83?) Command (m for help): t Partition number (1-10): 10 Hex code (type L to list codes): 82 Changed system type of partition 10 to 82 (Linux swap)(Cần sửa nó... để chắc chắn...) Command (m for help): p Disk /dev/hda: 10.2 GB, 10254827520 bytes 16 heads, 63 sectors/track, 19870 cylinders Units = cylinders of 1008 * 512 = 516096 bytes Device Boot Start End Blocks ID System /dev/hda1 1 21 10552+ 83 Linux /dev/hda2 22 19870 10003896 5 Extended /dev/hda5 22 1037 512032+ 83 Linux /dev/hda6 1038 5101 2048224+ 83 Linux /dev/hda7 5102 9165 2048224+ 83 Linux /dev/hda8 9166 13229 2048224+ 83 Linux /dev/hda9 13230 17293 2048224+ 83 Linux /dev/hda10 17294 19870 1298776+ 82 Linux Swap(Giờ ghi bảng phân vùng vào đĩa) Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. #
Tất cả là thế. Bạn có thể tiếp tục với bước kế:
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
Linux kernel hỗ trợ nhiều loại hệ tập tin khác nhau. ReiserFS, Ext2 và ext3 hoạt động ổn định trên MIPS. Những loại khác vẫn còn đang thử nghiệm.
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
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.
JFS hệ tập tin hiệu suất cao hỗ trợ journal của IBM. Không có đủ các báo cáo tích cực cũng như tiêu cực về tính ổn định của nó vào thời điểm này.
Để 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:
Hệ tập tin | Lệnh tạo |
---|---|
Ví dụ, để định dạng phân vùng boot (
# mke2fs /dev/sda1 # mke2fs -j /dev/sda3
Bây giờ tạo hệ tập tin cho những phân vùng của bạn.
# mkswap /dev/sda2
Để kích hoạt sử dụng phân vùng swap, dùng
# swapon /dev/sda2
Giờ hãy tạo và kích hoạt phân vùng swap của bạn bằng những lệnh trên.
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 /dev/sda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/sda1 /mnt/gentoo/boot
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
Hãy tiếp tục với