Bạn đang cố gắng thay đổi kích thước một hệ thống tập tin đã được tạo trước khi -O 64bit
tùy chọn trở thành mặc định. Có thể nâng cấp hệ thống tập tin mở rộng của bạn lên địa chỉ 64 bit, cho phép nó mở rộng đáng kể (1024 PiB thay vì 16 TiB).
Giả sử thiết bị mục tiêu của bạn được gọi /dev/mapper/target-device
, đây là những gì bạn cần làm:
Điều kiện tiên quyết
- Kích thước âm lượng này phải được hỗ trợ bởi RAID. Lỗi đĩa thông thường sẽ gây hại khác.
- Tuy nhiên, RAID không phải là một bản sao lưu . Bạn phải có giá trị của bạn được lưu trữ ở nơi khác là tốt.
- Đầu tiên thay đổi kích thước và xác minh tất cả các khối lượng xung quanh (bảng phân vùng, mã hóa, lvm).
- Sau khi thay đổi cấu hình RAID phần cứng, linux có thể hoặc không ngay lập tức xác nhận kích thước tối đa mới. Kiểm tra
$ cat /proc/partitions
và khởi động lại nếu cần thiết.
Sử dụng kernel ổn định gần đây và e2fspross
- Đảm bảo (kiểm tra
uname -r
) bạn đang chạy kernel có thể xử lý đúng hệ thống tệp ext4 64 bit - bạn muốn sử dụng 4.4.x
kernel hoặc mới hơn (mặc định Ubuntu 16 trở lên).
Có được e2fspross của ít nhất phiên bản 1.43
Ubuntu 16.04
(2016-04-21) đã được phát hành cùng với e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) là phiên bản đầu tiên có khả năng nâng cấp kích thước địa chỉ extfs.
Ubuntu 18.04
(2018-04-26) tàu có e2fsprogs 1.44.x
(tốt!)
Nếu bạn đang bật 16.04
và không thể nâng cấp lên bản phát hành Ubuntu mới hơn, bạn sẽ phải bật hỗ trợ gói nguồn và cài đặt phiên bản mới hơn theo cách thủ công:
$ resize2fs
# if this prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps
Thay đổi kích thước
Bước 1: Ghép đúng hệ thống tập tin
$ sudo umount /dev/mapper/target-device
Bước 2: Kiểm tra lỗi hệ thống tập tin
$ sudo e2fsck -fn /dev/mapper/target-device
Bước 3: Kích hoạt hỗ trợ 64 bit trong hệ thống tập tin
Tham khảo ý kiến man tune2fs
và man resize2fs
- bạn có thể thay đổi một số cờ hệ thống tập tin.
$ sudo resize2fs -b /dev/mapper/target-device
Trên một RAID HDD thông thường, việc này mất 4 phút tải IO & CPU cao.
Bước 4: Thay đổi kích thước hệ thống tập tin
$ sudo resize2fs -p /dev/mapper/target-device
Nếu bạn không vượt qua kích thước trên dòng lệnh, resize2fs giả định "phát triển đến tất cả không gian có sẵn" - đây thường chính xác là những gì bạn muốn. Các -p
cờ kích hoạt thanh tiến - nhưng những người chỉ hiển thị sau một số bước ban đầu.
Trên một RAID HDD thông thường, việc này mất 4 phút tải IO & CPU cao.
Xác minh lại
Kiểm tra lại hệ thống tập tin
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck của các phiên bản mới hơn có thể đề xuất sửa lỗi dấu thời gian hoặc phạm vi cây mà các phiên bản trước xử lý không tốt. Đây không phải là dấu hiệu của bất kỳ vấn đề nghiêm trọng nào và bạn có thể chọn khắc phục ngay bây giờ hoặc sau này.
Nếu lỗi xảy ra, đừng không hoảng sợ và làm không cố gắng để viết thư cho khối lượng; tham khảo ý kiến một người có kiến thức sâu rộng về hệ thống tập tin, vì các hoạt động tiếp theo có thể sẽ phá hủy dữ liệu!
Nếu không có lỗi xảy ra, hãy nhắc lại thiết bị:
$ sudo mount /dev/mapper/target-device
Sự thành công!
Bạn sẽ không cần bất kỳ phiên bản e2fsposs không phải Ubuntu nào để tiếp tục hoạt động của hệ thống tệp được nâng cấp - hạt nhân hỗ trợ những thứ này khá lâu rồi. Nó chỉ cần thiết để bắt đầu nâng cấp.
Để tham khảo, có một thông báo lỗi tương tự mke2fs sẽ in nếu được yêu cầu tạo một thiết bị khổng lồ với các tùy chọn không phù hợp:
$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.