104.2 Bài 1
Chứng chỉ: |
LPIC-1 |
---|---|
Phiên bản: |
5.0 |
Chủ đề: |
104 Thiết bị, Hệ thống tệp Linux, Tiêu chuẩn phân cấp hệ thống Tệp |
Mục tiêu: |
104.2 Duy trì tính toàn vẹn của Hệ thống Tệp |
Bài: |
1 trên 1 |
Giới thiệu
Các hệ thống tệp Linux hiện đại đều có chức năng ghi nhật ký. Điều này có nghĩa là mọi thao tác vận hành đều sẽ được ghi vào nhật ký nội bộ (journal) trước khi được thực thi. Nếu hoạt động bị gián đoạn do lỗi hệ thống (như lỗi hạt nhân, mất điện, v.v.), nó có thể được tái thiết bằng cách kiểm tra nhật ký để tránh việc hư hỏng hệ thống tệp và mất dữ liệu.
Điều này làm giảm đáng kể nhu cầu kiểm tra hệ thống tệp thủ công (dù chúng ta có thể vẫn sẽ cần đến chúng). Sự khác biệt giữa việc hiểu và không hiểu rõ về các công cụ được sử dụng cho tác vụ này (và các thông số tương ứng) cũng giống như việc dùng bữa tối ở nhà với gia đình so với việc thức trắng đêm làm việc trong phòng máy.
Trong bài học này, chúng ta sẽ thảo luận về các công cụ có sẵn để giám sát việc sử dụng hệ thống tệp, tối ưu hóa hoạt động của nó cũng như cách kiểm tra và sửa chữa hư hỏng.
Kiểm tra việc Sử dụng Đĩa
Có hai lệnh có thể được sử dụng để kiểm tra lượng dung lượng đang được sử dụng và còn lại trên hệ thống tệp. Lệnh đầu tiên là du
, viết tắt của “disk usage”.
du
có tính chất đệ quy. Ở dạng cơ bản nhất, lệnh này sẽ chỉ hiển thị số lượng khối 1 Kilobyte đang được sử dụng bởi thư mục hiện tại và tất cả các thư mục con của nó:
$ du 4816 .
Kết quả có vẻ không được hữu ích cho lắm. Vì vậy, chúng ta có thể yêu cầu thêm đầu ra ở dạng “con người có thể đọc được” bằng cách thêm tham số -h
:
$ du -h 4.8M .
Theo mặc định, du
sẽ chỉ hiển thị số lượng sử dụng cho các thư mục (bao gồm tất cả các tệp và thư mục con bên trong nó). Để hiển thị số lượng riêng lẻ cho tất cả các tệp trong thư mục, hãy sử dụng tham số -a
:
$ du -ah 432K ./geminoid.jpg 508K ./Linear_B_Hero.jpg 468K ./LG-G8S-ThinQ-Mirror-White.jpg 656K ./LG-G8S-ThinQ-Range.jpg 60K ./Stranger3_Titulo.png 108K ./Baidu_Banho.jpg 324K ./Xiaomi_Mimoji.png 284K ./Mi_CC_9e.jpg 96K ./Mimoji_Comparativo.jpg 32K ./Xiaomi FCC.jpg 484K ./geminoid2.jpg 108K ./Mimoji_Abre.jpg 88K ./Mi8_Hero.jpg 832K ./Tablet_Linear_B.jpg 332K ./Mimoji_Comparativo.png 4.8M .
Hành vi mặc định sẽ hiển thị mức sử dụng của mọi thư mục con, sau đó là tổng mức sử dụng của thư mục hiện tại bao gồm cả các thư mục con:
$ du -h 4.8M ./Temp 6.0M .
Trong ví dụ trên, chúng ta có thể thấy rằng thư mục con Temp
chiếm 4,8 MB và thư mục hiện tại (bao gồm Temp
) chiếm 6,0 MB. Nhưng các tệp trong thư mục hiện tại chiếm bao nhiêu dung lượng nếu không bao gồm các thư mục con? Để biết được điều này, chúng ta phải sử dụng tham số -S
:
$ du -Sh 4.8M ./Temp 1.3M .
Tip
|
Hãy nhớ rằng các tham số dòng lệnh có phân biệt chữ hoa chữ thường: |
Nếu vẫn muốn tách biệt giữa dung lượng được sử dụng bởi các tệp trong thư mục hiện tại và dung lượng được sử dụng bởi các thư mục con, thêm vào đó là cả số tổng dung lượng ở cuối, ta có thể thêm tham số -c
:
$ du -Shc 4.8M ./Temp 1.3M . 6.0M total
Chúng ta có thể kiểm soát mức độ “sâu” của đầu ra của du
với tham số -d N
, trong đó, N
sẽ mô tả các cấp độ. Ví dụ: nếu ta sử dụng tham số -d 1
, nó sẽ hiển thị thư mục hiện tại và các thư mục con của nó nhưng sẽ không hiển thị các thư mục con của những thư mục đó.
Hãy xem sự khác biệt bên dưới. Khi không có -d
:
$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Và giới hạn độ sâu ở một cấp độ với -d 1
:
$ du -h -d1 224K ./somedir 232K .
Hãy lưu ý rằng ngay cả khi anotherdir
không được hiển thị, kích thước của nó vẫn sẽ được tính đến.
Chúng ta có thể sẽ muốn loại trừ một số loại tệp với --exclude="PATTERN"
, trong đó, PATTERN
là mẫu cần loại trừ. Hãy xem thử thư mục này:
$ du -ah 124K ./ASM68K.EXE 2.0M ./Contra.bin 36K ./fixheadr.exe 4.0K ./README.txt 2.1M ./Contra_NEW.bin 4.0K ./Built.bat 8.0K ./Contra_Main.asm 4.2M .
Bây giờ, chúng ta sẽ sử dụng --exclude
để lọc tất cả các tệp có phần mở rộng .bin
:
$ du -ah --exclude="*.bin" 124K ./ASM68K.EXE 36K ./fixheadr.exe 4.0K ./README.txt 4.0K ./Built.bat 8.0K ./Contra_Main.asm 180K .
Hãy lưu ý rằng tổng số dung lượng bây giờ không còn phản ánh kích thước của các tệp bị loại trừ.
Kiểm tra Dung lượng trống
du
làm việc ở cấp độ tệp. Có một lệnh khác có thể hiển thị mức sử dụng đĩa và dung lượng sẵn có ở cấp hệ thống tệp là df
.
Lệnh df
sẽ cung cấp danh sách tất cả các hệ thống tệp có sẵn (đã được gắn kết) trên hệ thống bao gồm tổng kích thước của chúng, dung lượng đã được sử dụng, dung lượng còn trống, tỷ lệ phần trăm sử dụng và nơi nó được gắn kết:
$ df Filesystem 1K-blocks Used Available Use% Mounted on udev 2943068 0 2943068 0% /dev tmpfs 595892 2496 593396 1% /run /dev/sda1 110722904 25600600 79454800 25% / tmpfs 2979440 951208 2028232 32% /dev/shm tmpfs 5120 0 5120 0% /run/lock tmpfs 2979440 0 2979440 0% /sys/fs/cgroup tmpfs 595888 24 595864 1% /run/user/119 tmpfs 595888 116 595772 1% /run/user/1000 /dev/sdb1 89111 1550 80824 2% /media/carol/part1 /dev/sdb3 83187 1550 75330 3% /media/carol/part3 /dev/sdb2 90827 1921 82045 3% /media/carol/part2 /dev/sdc1 312570036 233740356 78829680 75% /media/carol/Samsung Externo
Tuy nhiên, việc hiển thị kích thước theo khối 1 KB không được thân thiện với người dùng cho lắm. Giống như trên du
, chúng ta có thể thêm các tham số -h
để có được kết quả đầu ra "dễ đọc hơn":
$ df -h Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev tmpfs 582M 2.5M 580M 1% /run /dev/sda1 106G 25G 76G 25% / tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs 582M 24K 582M 1% /run/user/119 tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
Ta cũng có thể sử dụng tham số -i
để hiển thị các nút định danh đã sử dụng/có sẵn thay vì các khối:
$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on udev 737142 547 736595 1% /dev tmpfs 745218 908 744310 1% /run /dev/sda6 6766592 307153 6459439 5% / tmpfs 745218 215 745003 1% /dev/shm tmpfs 745218 4 745214 1% /run/lock tmpfs 745218 18 745200 1% /sys/fs/cgroup /dev/sda1 62464 355 62109 1% /boot tmpfs 745218 43 745175 1% /run/user/1000
Có một tham số hữu ích là -T
. Tham số này cũng sẽ in loại của từng hệ thống tệp:
$ df -hT Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 2.9G 0 2.9G 0% /dev tmpfs tmpfs 582M 2.5M 580M 1% /run /dev/sda1 ext4 106G 25G 76G 25% / tmpfs tmpfs 2.9G 930M 2.0G 32% /dev/shm tmpfs tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs tmpfs 2.9G 0 2.9G 0% /sys/fs/cgroup tmpfs tmpfs 582M 24K 582M 1% /run/user/119 tmpfs tmpfs 582M 116K 582M 1% /run/user/1000 /dev/sdb1 ext4 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 ext4 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 ext4 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 fuseblk 299G 223G 76G 75% /media/carol/Samsung Externo
Khi đã biết loại hệ thống tệp, chúng ta có thể lọc đầu ra. Ta chỉ có thể hiển thị các hệ thống tệp thuộc cùng một loại đã cho bằng -t TYPE
hoặc loại trừ các hệ thống tệp thuộc một loại nhất định bằng -x TYPE
như trong các ví dụ bên dưới đây.
Không bao gồm hệ thống tệp tmpfs
:
$ df -hx tmpfs Filesystem Size Used Avail Use% Mounted on udev 2.9G 0 2.9G 0% /dev /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2 /dev/sdc1 299G 223G 76G 75% /media/carol/Samsung Externo
Chỉ hiển thị hệ thống tệp ext4
:
$ df -ht ext4 Filesystem Size Used Avail Use% Mounted on /dev/sda1 106G 25G 76G 25% / /dev/sdb1 88M 1.6M 79M 2% /media/carol/part1 /dev/sdb3 82M 1.6M 74M 3% /media/carol/part3 /dev/sdb2 89M 1.9M 81M 3% /media/carol/part2
Ta cũng có thể tùy chỉnh đầu ra của df
và chọn nội dung sẽ được hiển thị cũng như theo thứ tự nào bằng cách sử dụng tham số --output=
, theo sau là danh sách các trường được phân tách bằng dấu phẩy cần hiển thị. Một số trường có sẵn là:
source
-
Thiết bị tương ứng với hệ thống tệp.
fstype
-
Loại hệ thống tệp.
size
-
Tổng kích thước của hệ thống tệp.
used
-
Lượng dung lượng đang được sử dụng.
avail
-
Lượng dung lượng có sẵn.
pcent
-
Tỷ lệ sử dụng.
target
-
Nơi hệ thống tệp được gắn kết (điểm gắn kết).
Nếu muốn một đầu ra hiển thị điểm mục tiêu, nguồn, loại và tỷ lệ sử dụng, chúng ta có thể sử dụng:
$ df -h --output=target,source,fstype,pcent Mounted on Filesystem Type Use% /dev udev devtmpfs 0% /run tmpfs tmpfs 1% / /dev/sda1 ext4 25% /dev/shm tmpfs tmpfs 32% /run/lock tmpfs tmpfs 0% /sys/fs/cgroup tmpfs tmpfs 0% /run/user/119 tmpfs tmpfs 1% /run/user/1000 tmpfs tmpfs 1% /media/carol/part1 /dev/sdb1 ext4 2% /media/carol/part3 /dev/sdb3 ext4 3% /media/carol/part2 /dev/sdb2 ext4 3% /media/carol/Samsung Externo /dev/sdc1 fuseblk 75%
df
cũng có thể được sử dụng để kiểm tra thông tin nút định danh bằng cách chuyển các trường sau tới --output=
:
itotal
-
Tổng số nút định danh trong hệ thống tệp.
iused
-
Số lượng nút định danh được sử dụng trong hệ thống tệp.
iavail
-
Số lượng nút định danh có sẵn trong hệ thống tệp.
ipcent
-
Tỷ lệ phần trăm các nút định danh được sử dụng trong hệ thống tệp.
Ví dụ:
$ df --output=source,fstype,itotal,iused,ipcent Filesystem Type Inodes IUsed IUse% udev devtmpfs 735764 593 1% tmpfs tmpfs 744858 1048 1% /dev/sda1 ext4 7069696 318651 5% tmpfs tmpfs 744858 222 1% tmpfs tmpfs 744858 3 1% tmpfs tmpfs 744858 18 1% tmpfs tmpfs 744858 22 1% tmpfs tmpfs 744858 40 1%
Duy trì Hệ thống Tệp ext2, ext3 và ext4
Để kiểm tra lỗi hệ thống tệp (và sửa được chúng), Linux có cung cấp tiện ích fsck
(hãy nghĩ đến “filesystem check” và bạn sẽ không bao giờ quên tên lệnh). Ở dạng cơ bản nhất, chúng ta có thể gọi nó bằng fsck
, theo sau là vị trí của hệ thống tệp cần kiểm tra:
# fsck /dev/sdb1 fsck from util-linux 2.33.1 e2fsck 1.44.6 (5-Mar-2019) DT_2GB: clean, 20/121920 files, 369880/487680 blocks
Warning
|
KHÔNG BAO GIỜ chạy |
Bản thân fsck
sẽ không kiểm tra hệ thống tệp mà sẽ chỉ gọi tiện ích thích hợp cho loại hệ thống tệp để thực hiện việc đó. Trong ví dụ trên, do loại hệ thống tệp không được chỉ định nên fsck
đã giả định hệ thống tệp ext2/3/4 theo mặc định và gọi e2fsck
.
Để chỉ định một hệ thống tệp, hãy sử dụng tùy chọn -t
, theo sau là tên hệ thống tệp (như trong fsck -t vfat /dev/sdc
). Ngoài ra, ta có thể gọi trực tiếp một tiện ích dành riêng cho hệ thống tệp (như fsck.msdos
cho hệ thống tệp FAT).
Tip
|
Nhập |
fsck
có thể nhận một số đối số dòng lệnh. Sau đây là một trong số những đối số phổ biến nhất:
-A
-
Kiểm tra tất cả các hệ thống tệp được liệt kê trong
/etc/fstab
. -C
-
Hiển thị thanh tiến trình khi kiểm tra hệ thống tệp. Hiện tại nó chỉ hoạt động trên hệ thống tệp ext2/3/4.
-N
-
In những gì sẽ được thực hiện và thoát ra mà không thực sự kiểm tra hệ thống tệp.
-R
-
Khi được sử dụng cùng với
-A
, tham số này sẽ bỏ qua việc kiểm tra hệ thống tệp gốc. -V
-
Chế độ chi tiết, in nhiều thông tin hơn bình thường trong quá trình hoạt động. Tham số này rất hữu ích cho việc gỡ lỗi.
Tiện ích cụ thể cho các hệ thống tệp ext2, ext3 và ext4 là e2fsck
hay còn được gọi là fsck.ext2
, fsck.ext3
và fsck.ext4
(ba tiện ích này chỉ đơn thuần là liên kết đến e2fsck
). Theo mặc định, nó sẽ chạy ở chế độ tương tác: khi tìm thấy lỗi hệ thống tệp, nó sẽ dừng lại và hỏi người dùng xem phải làm gì. Người dùng phải nhập y
để khắc phục sự cố, n
để giữ nguyên không sửa hoặc a
để khắc phục sự cố hiện tại và tất cả các sự cố tiếp theo.
Tất nhiên việc ngồi chờ cho e2fsck
hỏi ta phải làm gì không phải là một cách sử dụng thời gian hiệu quả, đặc biệt là khi chúng ta đang xử lý một hệ thống tệp lớn. Vì vậy, e2fsck
có các tùy chọn để chạy ở chế độ không tương tác:
-p
-
Tuỳ chọn này sẽ tự động sửa bất kỳ lỗi nào được tìm thấy. Nếu tìm thấy một lỗi cần tới quản trị viên hệ thống can thiệp,
e2fsck
sẽ cung cấp mô tả về sự cố và thoát. -y
-
Tuỳ chọn này sẽ trả lời
y
(yes) cho tất cả các câu hỏi. -n
-
Ngược lại với
-y
. Ngoài việc trả lờin
(no) cho tất cả các câu hỏi, tuỳ chọn này sẽ khiến hệ thống tệp được gắn kết ở chế độ chỉ đọc nên sẽ không thể bị sửa đổi. -f
-
Buộc
e2fsck
kiểm tra hệ thống tệp ngay cả khi nó được đánh dấu là “clean” (sạch), tức là đã được ngắt gắn kết chính xác.
Tinh chỉnh Hệ thống Tệp ext
Hệ thống tệp ext2, ext3 và ext4 có một số tham số có thể được quản trị viên hệ thống điều chỉnh hoặc "tinh chỉnh" (tune) để phù hợp hơn với nhu cầu của hệ thống. Tiện ích được sử dụng để hiển thị hoặc sửa đổi các tham số này được gọi là tune2fs
.
Để xem xét các tham số hiện tại cho bất kỳ hệ thống tệp cụ thể nào, hãy sử dụng tham số -l
, theo sau là thiết bị đại diện cho phân vùng. Ví dụ bên dưới sẽ hiển thị đầu ra của lệnh này trên phân vùng đầu tiên của đĩa đầu tiên (/dev/sda1
) của máy:
# tune2fs -l /dev/sda1 tune2fs 1.44.6 (5-Mar-2019) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: 6e2c12e3-472d-4bac-a257-c49ac07f3761 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 7069696 Block count: 28255605 Reserved block count: 1412780 Free blocks: 23007462 Free inodes: 6801648 First block: 0 Block size: 4096 Fragment size: 4096 Group descriptor size: 64 Reserved GDT blocks: 1024 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 8192 Inode blocks per group: 512 Flex block group size: 16 Filesystem created: Mon Jun 17 13:49:59 2019 Last mount time: Fri Jun 28 21:14:38 2019 Last write time: Mon Jun 17 13:53:39 2019 Mount count: 8 Maximum mount count: -1 Last checked: Mon Jun 17 13:49:59 2019 Check interval: 0 (<none>) Lifetime writes: 20 GB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 32 Desired extra isize: 32 Journal inode: 8 First orphan inode: 5117383 Default directory hash: half_md4 Directory Hash Seed: fa95a22a-a119-4667-a73e-78f77af6172f Journal backup: inode blocks Checksum type: crc32c Checksum: 0xe084fe23
Hệ thống tệp ext có chức năng đếm số lượng gắn kết. Số lượng sẽ được tăng thêm 1 mỗi lần hệ thống tệp được gắn kết và khi đạt đến giá trị ngưỡng (số lượng gắn kết tối đa), hệ thống sẽ tự động được kiểm tra bằng e2fsck
trong lần khởi động tiếp theo.
Số lượng gắn kết tối đa có thể được đặt bằng tham số -c N
, trong đó, N
là số lần hệ thống tệp có thể được gắn kết mà không bị kiểm tra. Tham số -C N
sẽ đặt số lần hệ thống được gắn kết vào giá trị N
. Hãy lưu ý rằng các tham số dòng lệnh có phân biệt chữ hoa và chữ thường, vì thế nên -c
sẽ khác với -C
.
Chúng ta cũng có thể xác định khoảng thời gian giữa các lần kiểm tra với tham số -i
, theo sau là một số và các chữ cái d
cho ngày, m
cho tháng và y
cho năm. Ví dụ: -i 10d
sẽ kiểm tra hệ thống tệp ở lần khởi động lại tiếp theo sau mỗi 10 ngày. Ta có thể sử dụng giá trị 0 để tắt tính năng này.
-L
có thể được sử dụng để đặt nhãn cho hệ thống tệp. Nhãn này có thể có tối đa 16 ký tự. Tham số -U
sẽ đặt UUID (số thập lục phân 128 bit) cho hệ thống tệp. Trong ví dụ trên, UUID của hệ thống tệp là 6e2c12e3-472d-4bac-a257-c49ac07f3761
. Cả nhãn và UUID đều có thể được sử dụng thay cho tên thiết bị (như /dev/sda1
) để gắn kết hệ thống tệp.
Tùy chọn -e BEHAVIOUR
sẽ xác định hành vi của hạt nhân khi tìm thấy lỗi hệ thống tệp. Có ba hành vi có thể xảy ra:
continue
-
Sẽ tiếp tục thực thi bình thường.
remount-ro
-
Sẽ gắn kết lại hệ thống tệp dưới dạng chỉ đọc.
panic
-
Sẽ gây ra lỗi rối loạn hạt nhân.
Hành vi mặc định sẽ là continue
(tiếp tục). remount-ro
có thể sẽ hữu ích trong các ứng dụng nhạy cảm với dữ liệu vì nó sẽ ngay lập tức ngừng ghi vào đĩa để tránh nhiều lỗi tiềm ẩn.
Hệ thống tệp ext3 về cơ bản là hệ thống tệp ext2 nhưng có thêm nhật ký. Khi sử dụng tune2fs
, ta có thể thêm nhật ký vào hệ thống tệp ext2 và từ đó chuyển đổi nó thành ext3. Quy trình này rất đơn giản, ta chỉ cần truyền tham số -j
cho tune2fs
, theo sau là thiết bị chứa hệ thống tệp:
# tune2fs -j /dev/sda1
Sau đó, khi gắn kết hệ thống tệp đã chuyển đổi, đừng quên đặt loại thành ext3
để có thể sử dụng nhật ký.
Khi xử lý các hệ thống tệp được ghi nhật ký, tham số -J
cho phép ta sử dụng các tham số bổ sung để đặt một số tùy chọn nhật ký như -J size=
(để đặt kích thước nhật ký, tính bằng megabyte), -J location=
(để chỉ định vị trí nhật ký phải được lưu trữ, có thể là một khối cụ thể hoặc một vị trí cụ thể trên đĩa có hậu tố như M
hoặc G
) và -J device=
(để đặt nhật ký trên một thiết bị ngoại vi).
Ta có thể chỉ định nhiều tham số cùng một lúc bằng cách phân tách chúng bằng dấu phẩy. Ví dụ: -J size=10,location=100M,device=/dev/sdb1
sẽ tạo Nhật ký 10 MB ở vị trí 100 MB trên thiết bị /dev/sdb1
.
Warning
|
|
Duy trì Hệ thống Tệp XFS
Đối với hệ thống tệp XFS, xfs_repair
chính là công cụ tương đương với fsck
. Nếu còn nghi ngờ có điều gì đó không ổn với hệ thống tệp, điều đầu tiên chúng ta cần làm là quét hệ thống tệp để tìm ra lỗi.
Tác vụ này có thể được thực hiện bằng cách truyền tham số -n
cho xfs_repair
, theo sau là thiết bị chứa hệ thống tệp. Tham số -n
có nghĩa là "no modify" (không sửa đổi): hệ thống tệp sẽ được kiểm tra, lỗi sẽ được báo cáo nhưng sẽ không có sửa chữa nào được thực hiện:
# xfs_repair -n /dev/sdb1 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan (but do not clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 1 - agno = 3 - agno = 0 - agno = 2 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... - traversal finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting.
Nếu tìm thấy lỗi, ta có thể tiến hành sửa chữa mà không cần tham số -n
như sau: xfs_repair /dev/sdb1
.
xfs_repair
có chấp nhận một số tùy chọn dòng lệnh. Trong số đó:
-l LOGDEV
và-r RTDEV
-
Những tuỳ chọn này sẽ cần thiết nếu hệ thống tệp có các phần nhật ký và thời gian thực bên ngoài. Trong trường hợp này, hãy thay thế
LOGDEV
vàRTDEV
bằng các thiết bị tương ứng. -m N
-
Được sử dụng để giới hạn mức sử dụng bộ nhớ của
xfs_repair
ở mứcN
megabyte, điều này có thể sẽ hữu ích trong cài đặt máy chủ. Theo như trang hướng dẫn,xfs_repair
sẽ chia tỷ lệ sử dụng bộ nhớ khi cần theo mặc định. Nó có thể lên tới 75% RAM vật lý của hệ thống. -d
-
Chế độ “nguy hiểm” (dangerous) sẽ cho phép ta sửa chữa các hệ thống tệp được gắn kết ở chế độ chỉ đọc.
-v
-
Rất dễ đoán: đây chính là chế độ chi tiết. Mỗi lần tham số này được sử dụng, "mức độ chi tiết" sẽ được tăng lên (ví dụ:
-v -v
sẽ in nhiều thông tin hơn so với-v
).
Hãy lưu ý rằng xfs_repair
không thể sửa chữa hệ thống tệp có nhật ký “xấu”. Ta có thể “xóa bỏ” một nhật ký xấu với tham số -L
, nhưng hãy nhớ rằng đây là một hạ sách vì nó có thể dẫn đến hỏng hệ thống tệp và mất dữ liệu.
Để gỡ lỗi hệ thống tệp XFS, ta có thể sử dụng tiện ích xfs_db
(như trong xfs_db /dev/sdb1
). Lệnh này chủ yếu được sử dụng để kiểm tra các thành phần và thông số khác nhau của hệ thống tệp.
Tiện ích này có lời nhắc tương tác (giống như parted
) với nhiều lệnh nội bộ. Một hệ thống trợ giúp cũng có sẵn: hãy gõ help
để xem danh sách tất cả các lệnh và help
theo sau là tên lệnh để xem thêm thông tin về lệnh.
Một tiện ích hữu ích khác là xfs_fsr
có thể được sử dụng để sắp xếp lại ("chống phân mảnh") một hệ thống tệp XFS. Khi được thực thi mà không có bất kỳ đối số bổ sung nào, nó sẽ chạy trong hai giờ và cố gắng chống phân mảnh tất cả các hệ thống tệp XFS được gắn kết và có thể ghi được liệt kê trong tệp /etc/mtab/
. Chúng ta có thể sẽ cần cài đặt tiện ích này bằng trình quản lý gói dành cho bản phân phối Linux của mình vì nó có thể không phải là một phần của bản cài đặt mặc định. Để biết thêm thông tin, hãy tham khảo trang hướng dẫn tương ứng.
Bài tập Hướng dẫn
-
Bằng cách sử dụng
du
, làm cách nào để có thể kiểm tra xem các tệp trong thư mục hiện tại đang sử dụng bao nhiêu dung lượng? -
Bằng cách sử dụng
df
, hãy liệt kê thông tin cho mọi hệ thống tệp ext4 với đầu ra bao gồm các trường và theo thứ tự sau: thiết bị, điểm gắn kết, tổng số nút định danh, số nút định danh có sẵn, phần trăm dung lượng trống. -
Lệnh để chạy
e2fsck
trên/dev/sdc1
ở chế độ không tương tác trong khi vẫn cố tự động sửa hầu hết các lỗi là gì? -
Giả sử
/dev/sdb1
là một hệ thống tệp ext2. Làm cách để có thể chuyển đổi nó thành ext3, đồng thời đặt lại số lần gắn kết của nó và thay đổi nhãn của nó thànhUserData
? -
Làm cách nào để có thể kiểm tra lỗi trên hệ thống tệp XFS mà không sửa chữa bất kỳ lỗi nào được tìm thấy?
Bài tập Mở rộng
-
Giả sử bạn có hệ thống tệp ext4 trên
/dev/sda1
với các tham số sau thu được bằngtune2fs
:Mount count: 8 Maximum mount count: -1
Điều gì sẽ xảy ra ở lần khởi động tiếp theo nếu lệnh
tune2fs -c 9 /dev/sda1
được gọi? -
Hãy xem xét đầu ra sau của
du -h
:$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Có bao nhiêu dung lượng bị chiếm bởi các tệp trong thư mục hiện tại? Làm cách nào để có thể viết lại lệnh để hiển thị thông tin này rõ ràng hơn?
-
Điều gì sẽ xảy ra với hệ thống tệp ext2
/dev/sdb1
nếu lệnh bên dưới được gọi?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
-
Làm cách nào để có thể kiểm tra lỗi trên hệ thống tệp XFS ở
/dev/sda1
có phần nhật ký trên/dev/sdc1
mà không thực sự thực hiện bất kỳ sửa chữa nào? -
Sự khác biệt giữa tham số
-T
và-t
cho lệnhdf
là gì?
Tóm tắt
Trong bài học này, chúng ta đã học về:
-
Cách kiểm tra dung lượng đã sử dụng và dung lượng trống trên hệ thống tệp.
-
Cách điều chỉnh đầu ra của
df
cho phù hợp với nhu cầu của người dùng. -
Cách kiểm tra tính toàn vẹn và sửa chữa hệ thống tệp bằng
fsck
vàe2fsck
. -
Cách tinh chỉnh hệ thống tệp ext bằng
tune2fs
. -
Cách kiểm tra và sửa chữa hệ thống tệp XFS bằng
xfs_repair
.
Các lệnh sau đã được thảo luận trong bài học này:
du
-
Xem dung lượng đĩa đang được sử dụng trên hệ thống tệp.
df
-
Xem dung lượng đĩa có sẵn trên hệ thống tệp.
fsck
-
Tiện ích sửa chữa kiểm tra hệ thống tệp.
e2fsck
-
Tiện ích sửa chữa kiểm tra hệ thống tệp dành riêng cho các hệ thống tệp ext (ext2/3/4).
tune2fs
-
Sửa đổi các tham số hệ thống tệp trên hệ thống tệp mở rộng (ext2/3/4).
xfs_repair
-
Tương đương với
fsck
cho các hệ thống tệp XFS. xfs_db
-
Tiện ích này được sử dụng để xem các tham số khác nhau của hệ thống tệp XFS.
Đáp án Bài tập Hướng dẫn
-
Bằng cách sử dụng
du
, làm cách nào để có thể kiểm tra xem các tệp trong thư mục hiện tại đang sử dụng bao nhiêu dung lượng?Đầu tiên, sử dụng tham số
-S
để tách đầu ra của thư mục hiện tại khỏi các thư mục con của nó. Sau đó, sử dụng-d 0
để giới hạn độ sâu đầu ra về 0, nghĩa là "không thư mục con". Đừng quên tham số-h
để nhận đầu ra ở định dạng "con người có thể đọc được`":$ du -S -h -d 0
hoặc
$ du -Shd 0
-
Bằng cách sử dụng
df
, hãy liệt kê thông tin cho mọi hệ thống tệp ext4 với đầu ra bao gồm các trường và theo thứ tự sau: thiết bị, điểm gắn kết, tổng số nút định danh, số nút định danh có sẵn, phần trăm dung lượng trống.Bạn có thể lọc các hệ thống tệp bằng tùy chọn
-t
, theo sau là tên hệ thống tệp. Để có được đầu ra cần thiết, hãy sử dụng--output=source,target,itotal,iavail,pcent
. Vì vậy, câu trả lời sẽ là:$ df -t ext4 --output=source,target,itotal,iavail,pcent
-
Lệnh để chạy
e2fsck
trên/dev/sdc1
ở chế độ không tương tác trong khi vẫn cố tự động sửa hầu hết các lỗi là gì?Tham số để tự động sửa hầu hết các lỗi là
-p
. Vì vậy, câu trả lời sẽ là:# e2fsck -p /dev/sdc1
-
Giả sử
/dev/sdb1
là một hệ thống tệp ext2. Làm cách để có thể chuyển đổi nó thành ext3, đồng thời đặt lại số lần gắn kết của nó và thay đổi nhãn của nó thànhUserData
?Hãy nhớ rằng việc chuyển đổi một hệ thống tệp ext2 thành ext3 chỉ đơn thuần là ghi thêm nhật ký. Việc này có thể được thực hiện với tham số
-j
. Để đặt lại số lần gắn kết, hãy sử dụng-C 0
. Để thay đổi nhãn, hãy sử dụng-L UserData
. Câu trả lời đúng sẽ là:# tune2fs -j -C 0 -L UserData /dev/sdb1
-
Làm cách nào để có thể kiểm tra lỗi trên hệ thống tệp XFS mà không sửa chữa bất kỳ lỗi nào được tìm thấy?
Sử dụng tham số
-n
(giống như trongxfs -n
), theo sau là thiết bị tương ứng.
Đáp án Bài tập Mở rộng
-
Giả sử bạn có hệ thống tệp ext4 trên
/dev/sda1
với các tham số sau thu được bằngtune2fs
:Mount count: 8 Maximum mount count: -1
Điều gì sẽ xảy ra ở lần khởi động tiếp theo nếu lệnh
tune2fs -c 9 /dev/sda1
được gọi?Lệnh sẽ đặt số lần gắn kết tối đa cho hệ thống tệp là 9. Vì số lần gắn kết hiện tại là 8 nên lần khởi động hệ thống tiếp theo sẽ tiến hành kiểm tra hệ thống tệp.
-
Hãy xem xét đầu ra sau của
du -h
:$ du -h 216K ./somedir/anotherdir 224K ./somedir 232K .
Có bao nhiêu dung lượng bị chiếm bởi các tệp trong thư mục hiện tại? Làm cách nào để có thể viết lại lệnh để hiển thị thông tin này rõ ràng hơn?
Trong tổng số 232K đã sử dụng, có 224K được sử dụng bởi thư mục con
somedir
và các thư mục con của nó. Vì vậy, khi loại trừ những thư mục đó, chúng ta còn 8K được sử dụng bởi các tệp trong thư mục hiện tại. Thông tin này có thể được hiển thị rõ ràng hơn bằng cách sử dụng tham số-S
. Tham số này sẽ giúp phân tách thư mục hiện tại và thư mục somedir để xác định dung lượng của các tệp trong thư mục hiện tại (trong lượt kiểm tra này) -
Điều gì sẽ xảy ra với hệ thống tệp ext2
/dev/sdb1
nếu lệnh bên dưới được gọi?# tune2fs -j /dev/sdb1 -J device=/dev/sdc1 -i 30d
Một nhật ký sẽ được thêm vào
/dev/sdb1
để chuyển đổi nó thành ext3. Nhật ký sẽ được lưu trữ trên thiết bị/dev/sdc1
và hệ thống tệp sẽ được kiểm tra sau mỗi 30 ngày. -
Làm cách nào để có thể kiểm tra lỗi trên hệ thống tệp XFS ở
/dev/sda1
có phần nhật ký trên/dev/sdc1
mà không thực sự thực hiện bất kỳ sửa chữa nào?Sử dụng
xfs_repair
, theo sau là-l /dev/sdc1
để biểu thị thiết bị chứa phần nhật ký và-n
để tránh thực hiện bất kỳ một thay đổi nào.# xfs_repair -l /dev/sdc1 -n
-
Sự khác biệt giữa tham số
-T
và-t
cho lệnhdf
là gì?Tham số
-T
sẽ bao gồm cả loại của từng hệ thống tệp trong đầu ra củadf
.-t
là một bộ lọc và sẽ chỉ hiển thị các hệ thống tệp thuộc một loại nhất định ở đầu ra và loại trừ tất cả các hệ thống khác.