Bạn có thể tạo một hệ thống tệp ảo trên không gian có sẵn của các hệ thống tệp hiện có không?


3

Tôi hiện có 4 đĩa ext4 trong PC. Họ cùng nhau có khoảng 4TB không gian có sẵn. Tôi muốn lưu trữ hình ảnh 3 TB chỉ trong một ngày. Có thể tạo một fs ảo tạm thời trên không gian có sẵn của các đĩa.

Tôi có thể di chuyển các tệp xung quanh để lấy dung lượng trên một ổ đĩa. Tôi chỉ tự hỏi nếu có một giải pháp hiện tại cho một cái gì đó như thế này.


Tôi cho rằng không có định dạng nên được tham gia? Có bất kỳ đĩa nào trong số này có lưu trữ không liên kết?
Maciej Asembler

Không. Không có không gian không liên kết. Tôi đã nghĩ đến việc tạo một tệp trên mỗi ổ đĩa bằng dd và sau đó tạo một dải đột kích trên chúng, nhưng đó chỉ là suy nghĩ cho đến bây giờ, chưa được thử.
Dax

2
Trong tình huống của bạn, tôi sẽ chỉ sử dụng phương pháp zip-and-split. Nếu bạn có bộ nhớ 3TB không liên kết, bạn có thể tạo một khối LVM 3TB từ cấu hình đó kết nối nó thành khối lượng logic LVM duy nhất.
Maciej Asembler

Tôi thích ý tưởng của @MaciejAsembler về một hình ảnh vừa được nén & amp; chia nhỏ, nhưng tôi không biết các lệnh để chia nó thành các phần có thể quản lý chúng có trải rộng trên 4 phân vùng khác nhau không ... có thể tạo một số khối, tạm dừng thủ công, di chuyển khối, tiếp tục, lặp lại?
Xen2050

Câu trả lời:


4

Vâng, có thể với dmsetup.

Chuẩn bị các tập tin trống

fallocate -l $((800*1024*1024*1024)) /mnt/disk1/file1
fallocate -l $((1200*1024*1024*1024)) /mnt/disk2/file2
fallocate -l $((1100*1024*1024*1024)) /mnt/disk3/file3
fallocate -l $((200*1024*1024*1024)) /mnt/disk4/file4

Ví dụ này cho 800 GiB, 1200 GiB, 1100 GiB200 GiB trong bốn tệp - 3300 GiB Tổng cộng.

Chuẩn bị các thiết bị vòng lặp

sudo losetup -f /mnt/disk1/file1
sudo losetup -f /mnt/disk2/file2
sudo losetup -f /mnt/disk3/file3
sudo losetup -f /mnt/disk4/file4

Kiểm tra với sudo losetup -a thiết bị lặp nào được liên kết với các tập tin của bạn. Ví dụ của tôi cho rằng họ là /dev/loop0, /dev/loop1, /dev/loop2/dev/loop3 tương ứng.

Tạo thiết bị logic

EDIT: xem câu trả lời của Xen2050. Nó cho một cách đơn giản hơn từ thời điểm này.
Cách ban đầu, phức tạp hơn của tôi là như sau:

Trước tiên, bạn phải biết các tệp của bạn lớn như thế nào 512 B đơn vị. Trong ví dụ của tôi những con số này là 800*1024*1024*2, 1200*1024*1024*2, 1100*1024*1024*2200*1024*1024*2; I E. 1677721600, 2516582400, 2306867200419430400.

Bạn cũng sẽ cần tổng của ...
số không (tầm thường): 0,
một số (tầm thường): 1677721600,
hai số: 1677721600 + 2516582400 = 4194304000,
ba số: 1677721600 + 2516582400 + 2306867200 = 6501171200.

Tôi hy vọng tôi đã làm toán đúng. :)

Gọi:

sudo dmsetup create my_device

Bây giờ đưa ra một bảng thích hợp (bản đồ):

0 1677721600 linear /dev/loop0 0
1677721600 2516582400 linear /dev/loop1 0
4194304000 2306867200 linear /dev/loop2 0
6501171200 419430400 linear /dev/loop3 0

(Mỗi dòng bắt đầu bằng một tổng được tính theo sau là kích thước được tính.)

nhấn Ctrl + D kêt thuc.

Tạo hệ thống tập tin

sudo mkfs.ext4 /dev/mapper/my_device

Núi

sudo mkdir /mnt/my_device
sudo mount -o rw /dev/mapper/my_device /mnt/my_device

Lưu ý rằng có ít hơn 3300 GiB không gian trống trên my_device vì nhu cầu hệ thống tập tin Điều chỉnh kích thước tệp của bạn trước, tùy thuộc vào không gian trống có sẵn trên phân vùng và kích thước hình ảnh của bạn.


Khi công việc của bạn kết thúc:

Hoàn nguyên

sudo umount /mnt/my_device
sudo dmsetup remove my_device
sudo losetup -d /dev/loop0 /dev/loop1 /dev/loop2 /dev/loop3
rm /mnt/disk1/file1 /mnt/disk2/file2 /mnt/disk3/file3 /mnt/disk4/file4

2

Sử dụng mdadm để thiết lập RAID là một tùy chọn khác, tương tự như câu trả lời của Kamil nhưng hy vọng không có tất cả các phép toán.

Khi đã có một tệp lớn trong mỗi phân vùng ( fallocate có vẻ tốt) và các thiết bị lặp được thiết lập, sau đó theo hướng dẫn tại https://ston.wiki.kernel.org/index.php/RAID_setup (thay thế ví dụ /dev/sdbN thiết bị với /dev/loopN thiết bị, và --raid-devices=2 với số lượng thiết bị (trong trường hợp của bạn là 4):

  1. Đầu tiên - Cài đặt mdadm
    • Debian, Ubuntu: apt-get cài đặt mdadm
    • Gentoo: emerge mdadm
    • Mũ đỏ: yum install mdadm

Chế độ tuyến tính

Ok, vì vậy bạn có hai hoặc nhiều phân vùng không nhất thiết phải có cùng kích thước (nhưng tất nhiên là có thể), mà bạn muốn thêm vào mỗi phân vùng   khác

Đĩa dự phòng không được hỗ trợ ở đây. Nếu một đĩa chết, mảng chết   với nó. Không có thông tin để đặt vào một đĩa dự phòng.

Sử dụng mdadm, một lệnh như

mdadm --create --verbose /dev/md0 --level=linear --raid-devices=2 /dev/sdb6 /dev/sdc5

nên tạo mảng. Các thông số nói cho chính họ. Các   đầu ra có thể trông như thế này

mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.

Có một cái nhìn trong / Proc / mdstat . Bạn sẽ thấy rằng mảng là   đang chạy.

Bây giờ, bạn có thể tạo một hệ thống tập tin, giống như bạn làm trên bất kỳ hệ thống tập tin nào khác   thiết bị, gắn kết nó, bao gồm nó trong / etc / fstab của bạn và vv.

RAID-0

Bạn có hai thiết bị trở lên, có cùng kích thước và bạn muốn kết hợp dung lượng lưu trữ của chúng và cũng kết hợp chúng   hiệu suất bằng cách truy cập chúng song song.

mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb6 /dev/sdc5

Giống như trong chế độ tuyến tính, các đĩa dự phòng cũng không được hỗ trợ ở đây. RAID-0   không có dự phòng, vì vậy khi một đĩa chết, mảng sẽ đi cùng với nó.

Sau khi chạy mdadm, bạn đã khởi tạo các siêu khóa và bắt đầu   thiết bị đột kích. Có một cái nhìn trong / Proc / mdstat để xem những gì đang xảy ra.   Bạn sẽ thấy rằng thiết bị của bạn hiện đang chạy.

/ dev / md0 hiện đã sẵn sàng để được định dạng, gắn kết, sử dụng và lạm dụng.

Tôi không nghĩ rằng bạn muốn RAID-0 vì trong trường hợp của bạn, mọi phần đều nằm trên cùng một ổ đĩa và có thể nó sẽ chậm truy cập với việc đọc không cần thiết từ mỗi phần cùng một lúc. Nhưng dường như một câu trả lời đầy đủ hơn để bao gồm nó.

  • Nó cũng có vẻ quan trọng đối với Lưu cấu hình RAID quá, với lệnh dưới đây. Nhìn vào đầu ra (hoặc trong tệp mdadm.conf) để thấy UUID của RAID.

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Một số lệnh hữu ích khác (xem man mdadm ):

  • mdadm --query /dev/md0 - Kiểm tra một thiết bị (mảng hoặc thiết bị thành phần cũ. / Dev / loop1) để xem (1) nếu đó là thiết bị md và (2) nếu đó là thành phần của mảng md)
  • mdadm --examine /dev/loop1 - In nội dung của siêu dữ liệu được lưu trữ trên thiết bị
  • mdadm --detail /dev/md0 - Thông tin mảng chi tiết, UUID
  • mdadm --stop /dev/md0 - Dừng một mảng
  • mdadm --assemble --scan - Lắp ráp và bắt đầu tất cả các mảng được liệt kê trong tệp cấu hình tiêu chuẩn (/etc/mdadm/mdadm.conf trên Ubuntu, Debian? Nếu cấu hình được lưu như trên).
    • Cũng sẽ bắt đầu tất cả các mảng trong /etc/mdadm/mdadm.conf
  • mdadm --scan --assemble --uuid=a26bf396:31389f83:0df1722d:f404fe4c - Chỉ lắp ráp các mảng với UUID đã cho.
  • mdadm --assemble /dev/md0 /dev/loop1 /dev/loop2 [all devices] - Lắp ráp & amp; bắt đầu, một cách khó khăn

LVM cũng có thể làm việc, nhưng đọc https://www.centos.org/docs/5/html/Cluster_Logical_Volume_Manager/index.html http://linoxide.com/linux-how-to/lvm-configuration-linux/ man lvm nó có thể không đơn giản như RAID ở trên. Rõ ràng (?) Các lệnh lvm dường như nhìn vào mỗi thiết bị được gắn vào máy tính của bạn, vì vậy tôi có thể thấy tiềm năng bao gồm các thiết bị sai do nhầm lẫn ... Có thể có một lệnh một vài nơi để đi xung quanh ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.