การติดตั้งไฟล์ img หลายไฟล์เป็นอุปกรณ์ลูปเดียว


19

มีวิธีในการใช้ไฟล์ดิสก์ img ที่แบ่งออกเป็นส่วน ๆ และติดตั้งเป็นอุปกรณ์ลูปเดียวหรือไม่?


1
มันหักได้อย่างไร? มันคือรูปแบบอะไร? อาจมีเวทมนตร์ฟิวส์สำหรับเรื่องนี้ถ้ามันเป็นรูปแบบพิเศษ แต่ฉันสงสัยว่าคำตอบคือการรวมพวกมันเข้าด้วยกัน!
Caleb

ฉันถูก จำกัด โดยรูปแบบของอุปกรณ์ไปยังไฟล์ที่น้อยกว่า 4 กิ๊ก ฉันมีสิทธิ์เข้าถึงรูทผ่านอุปกรณ์ มีบางสิ่งที่ฉันสามารถทำได้ด้วย LVM
MageProspero

คำตอบ:


16

ฉันไม่คิดว่าคุณสามารถทำได้ แต่ถ้าคุณมีพื้นที่เพียงพอควรทำงาน:

# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k

# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01

# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1

# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>

# Mount the new filesystem
mount /dev/md0 /mnt

คุณไม่สามารถสร้างอาร์เรย์ RAID จากไฟล์ดั้งเดิมได้เพียงเพราะดิสก์ RAID มีส่วนหัวเฉพาะซึ่งเก็บจำนวนดิสก์ระดับ RAID ฯลฯ หากคุณทำเช่นนั้นส่วนหนึ่งของไฟล์ต้นฉบับของคุณจะถูกเขียนทับ

คุณสามารถใช้mdadm --buildเพื่อสร้างอาร์เรย์โดยไม่มีข้อมูลเมตา แต่คุณควรทำการสำรองข้อมูลก่อน หรือถ้าการเมานต์อ่านอย่างเดียวก็เพียงพอแล้ว:

losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt

ทำไมคุณถึงต้องการทำเช่นนี้? หากระบบไฟล์ของคุณไม่สามารถจัดการ> ไฟล์ 4GB คุณควรเปลี่ยนไปใช้ไฟล์ที่มีสติ


อาจจะสามารถทำมันได้ด้วย mapper อุปกรณ์ด้วย แต่ข้างต้นง่าย
Wodin

ขออภัยที่ใช้เวลานานในการตอบรับคำตอบที่ดีมากฉันจะไม่ทำสิ่งนี้ภายใต้สถานการณ์ปกติมันเป็นคำถามเกี่ยวกับโหมดผจญภัย
MageProspero

2
คุณอาจต้องการที่จะใช้truncateแทนddเพราะมันเร็วกว่ามาก (มันไม่ได้ทำการเขียนไปยัง FS จริง แต่เพียงแค่จัดสรร inodes และทำเครื่องหมายไฟล์เป็นเพียงแค่มีรู)
Maciej Piechotka

ดี ฉันไม่รู้
stribika

จากประสบการณ์ถ้าคุณใช้การสำรองข้อมูลบนคลาวด์หรือโซลูชั่นการซิงค์เช่น CrashPlan หรือ Google Drive แบบชำระเงินเป็นความคิดที่ดีมากที่จะใช้ไฟล์แยกขนาดเล็กแทนไฟล์ขนาดใหญ่ไฟล์เดียว ในกรณีที่การดาวน์โหลดไฟล์ล้มเหลวคุณจะต้องดาวน์โหลดใหม่อีกครั้งพูด 1 GB แทนที่จะเป็น 100 GB ทั้งรายการ
RAKK

3

หากต้องการเมานต์อิมเมจดิสก์แยก (หรืออิมเมจพาร์ติชัน) คุณควรใช้affuseจาก afftools ซึ่งปัจจุบันได้รับการบำรุงรักษาที่นี่: https://github.com/sshock/AFFLIBv3

ดังนั้นหากคุณมีไฟล์ให้แบ่งออกเป็นหลายไฟล์ย่อย test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009

จากนั้นคุณสามารถเข้าร่วมได้ด้วย affuse

# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw

(สิ่งนี้จะรวมไฟล์ทั้งหมดเข้าด้วยกันโดยเริ่มต้นด้วยไฟล์ 000 จากนั้น 001, 002, …)

แล้วเมานต์อิมเมจ

mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test

การใช้งานที่มีการอธิบายไว้ที่นี่และตัวอย่างบางส่วนที่นี่ manpage ยังเป็นหลังจากที่มีการรวบรวมและการติดตั้งหรือนี่

PS: สำหรับฉันaffuseใช้งานได้ก็ต่อเมื่อไฟล์แยกมีขนาดซึ่งมีหลาย 512 ไบต์


4
ฉันลองวิธีนี้ มันมีข้อแม้ที่สำคัญมันจะช่วยให้คุณสามารถเมานต์ภาพของคุณเป็นแบบอ่านอย่างเดียว
RAKK

ใช้งานได้ดีตราบใดที่คุณมีไฟล์เป็นร้อยและไม่พันไฟล์ อาจดีกว่าการใช้ mdadm เพื่อสร้างพาร์ทิชันการโจมตีเชิงเส้น: unix.stackexchange.com/a/98779/22709
Jay Taylor

1

คุณสามารถเขียนส่วนขยายอุปกรณ์เก็บข้อมูลบล็อกของคุณเอง (คิดว่าเป็นส่วนขยายคล้ายฟิวส์) และดำเนินการค้นหาตามที่อยู่ที่กำหนด

คุณสามารถดูตัวอย่างวิธีใช้ฟิวส์ได้ที่นี่ https://github.com/libfuse/python-fuse/blob/master/example/hello.py


ขอบคุณฉันควรห่อหัวของฉันรอบเมตาดาต้าเวียนของวันหนึ่ง
MageProspero

0

สิ่งที่ฉันรู้มากที่สุดในการแก้ไขคือการสร้าง VMware VM คุณเริ่มต้นใช้งานลินุกซ์ไลฟ์ซีดีเช่น Rescatux หรือ Knoppix คุณสร้างโฟลเดอร์ที่ใช้ร่วมกันของ SMB บนโฮสต์คอมพิวเตอร์ของคุณติดตั้ง SMB ที่แชร์บน VM ของคุณจากนั้นคุณddสร้างอิมเมจเป็น HD เสมือนจริง โดยค่าเริ่มต้น VMware จะบันทึกอิมเมจของดิสก์เป็นไฟล์แยกดังนั้นนี่คือสิ่งที่ใกล้เคียงที่สุดที่จะอ่านอิมเมจของดิสก์ที่แบ่งออกเป็นหลายไฟล์โดยตรง

หลังจากนั้นหากคุณต้องการเข้าถึงไฟล์จากโฮสต์คอมพิวเตอร์ของคุณคุณสามารถลองเพิ่ม HD เสมือนจริงที่สองให้กับรูปภาพและคัดลอกไฟล์ที่นั่น จากนั้นคุณตั้งค่าโฟลเดอร์แชร์ของ SMB บน VM และเชื่อมต่อกับโฟลเดอร์นั้นจากโฮสต์ของคุณ ตัวอย่างเช่นวิธีนี้คุณสามารถละเมิดขีด ​​จำกัด ของไฟล์ FAT32 ขนาด 4 GB ในกรณีที่คุณใช้ iPod Classic (ซึ่งมีเฉพาะ fat32) หรือการ์ด SD ของสมาร์ทโฟนของคุณ (โดยปกติคุณจะต้องติดตั้ง ROM แบบกำหนดเองตามลำดับ ในการใช้ Ext3 หรือ NTFS ในที่จัดเก็บข้อมูลภายนอกคุณจำเป็นต้องมีโทรศัพท์จากผู้ผลิตที่ได้รับความนิยมเช่น Samsung หรือ Motorola ดังนั้นหากคุณมีสมาร์ทโฟนจีนที่คุณนิ่งงันอยู่)

มันเป็นที่ยอมรับไม่ใช่วิธีแก้ปัญหาที่มีประสิทธิภาพ แต่เนื่องจากฉันถูก จำกัด โดยไม่สามารถใช้ FS อื่น ๆ นอกเหนือจาก fat32 ใน iPod Classic หรือสมาร์ทโฟน Samsung ของฉันที่มี ROM หุ้นฉันจึงขัดจังหวะอินเทอร์เน็ตทั้งหมดใน ในอดีตและยังไม่สามารถหาทางออกที่มีประสิทธิภาพสำหรับเรื่องนี้ ฉันอาจต้องเขียนเอง

PS: ลืมที่จะพูดถึงว่าถ้าคุณใช้ Windows นี่อาจเป็นวิธีเดียวที่จะทำได้


มันเป็นช่วงเวลาที่ฉันได้เยี่ยมชมปัญหานี้ ฉันยังมีอยู่ นอกจากนี้ฉันมีเหตุผลเดียวกับที่คุณทำ ฉันสงสัยว่าคุณสามารถนำกระบวนการที่มีระบบไฟล์ของตัวเองขึ้นมาได้หรือไม่ ฉันรู้ว่าฉันสามารถทำได้ในโหนด ฉันประสบความสำเร็จในการนำล่ามขึ้นมาอย่างสมบูรณ์ ฉันไม่รู้ว่าวิธีนี้ช่วยแก้ปัญหาของคุณได้หรือไม่ถ้าฉันทำ ในกาแลคซีซัมซุงของฉันบนฮาร์ดแวร์นี่ก็ใช้ได้ บอกฉันว่าคุณต้องการที่จะทำงานกับบางสิ่งบางอย่างสำหรับปัญหานี้ด้วยกัน
MageProspero

-1

ภายใต้ BSD คุณสามารถใช้ตัวเลือกการรวมเพื่อติดตั้ง ภายใต้ Linux คุณสามารถลอง unionFS ได้


2
สิ่งนี้ดูไม่เกี่ยวข้องจากระยะไกล คุณอ่านคำถามผิดหรือเปล่า?
Gilles 'หยุดชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.