คำถามติดแท็ก block-device

อุปกรณ์จัดเก็บข้อมูลที่สนับสนุนการอ่าน / เขียนข้อมูลในบล็อกขนาดคงที่เซกเตอร์หรือกลุ่ม

3
ตั้งค่า blockdev แบบต่อเนื่องอ่านล่วงหน้า
ฉันได้ติดตั้ง SSD บางตัวแล้ว/dev/sda1และ/dev/sdb1บนเซิร์ฟเวอร์ SLES 11 SP2 และฉันสามารถปรับแต่งค่าการอ่านล่วงหน้าได้ด้วยblockdev --setra: sudo blockdev --setra 4096 /dev/sda sudo blockdev --setra 4096 /dev/sdb sudo blockdev --getra /dev/sda 4096 sudo blockdev --getra /dev/sdb 4096 ฉันจะยืนยันการตั้งค่านี้ในการบู๊ตได้อย่างไร โดยเฉพาะมีการตั้งค่าที่สอดคล้องกันsysctl.confหรือฉันจะต้องชำระสคริปต์ rc เพื่อให้เกิดสิ่งนี้หรือไม่
14 block-device  ssd  sles 

1
GNU / Linux: อุปกรณ์บล็อกซ้อนทับ / อุปกรณ์บล็อกซ้อนได้
GNU / Linux มียูเนี่ยนเมาท์ที่ซ้อนทับ dirs ดังนั้นคุณสามารถเมานต์ dir แบบเขียนได้ด้านบนของ dir แบบอ่านอย่างเดียว เมื่อ dir แบบเขียนได้ถูกถอดออกแล้ว dir แบบอ่านอย่างเดียวจะไม่ถูกแตะต้อง ฉันกำลังมองหาฟังก์ชั่นเดียวกันสำหรับอุปกรณ์บล็อก - ควรมีส่วนที่เขียนได้เก็บไว้ในไฟล์ ดังนั้นฉันต้องการเรียกใช้บางสิ่งเช่น: device-setup /dev/newdevice /dev/read-only-device overlayfile ถ้าฉันเขียนถึง / dev / newdevice การเปลี่ยนแปลงควรถูกเก็บไว้ใน overlayfile ถ้าฉันอ่านเซกเตอร์ที่เขียนไปฉันควรได้รับข้อมูลจากโอเวอร์เลย์ไฟล์ ถ้าฉันอ่านส่วนที่ไม่ได้เขียนฉันควรได้รับข้อมูลจาก / dev / read-only-device เครื่องมือดังกล่าวมีอยู่จริงหรือไม่?

3
วิธีการอ่านตารางพาร์ทิชันในหน่วยความจำ (เคอร์เนล) ของ / dev / sda?
ฉันเขียนทับตารางพาร์ติชัน / dev / sda ของฉันโดยไม่ได้ตั้งใจด้วย GParted ( เรื่องเต็มใน AskUbuntu ) เนื่องจากฉันยังไม่ได้บูตเครื่องใหม่และระบบไฟล์ของฉันยังใช้งานได้อย่างสมบูรณ์แบบฉันจึงได้รับแจ้งว่าฉันอาจกู้คืนตารางพาร์ติชันจากหน่วยความจำในเคอร์เนลได้ เป็นไปได้ไหม ถ้าเป็นเช่นนั้นฉันจะกู้คืนและคืนค่าได้อย่างไร

2
วิธีรับชื่ออุปกรณ์บล็อกจากชื่ออุปกรณ์พาร์ทิชัน?
ฉันกำลังมองหาวิธีพกพาที่จะได้รับชื่ออุปกรณ์บล็อกแม่ (เช่น/dev/sda) ให้ชื่ออุปกรณ์พาร์ทิชัน (เช่น/dev/sda1) ฉันรู้ว่าฉันสามารถทิ้งอักขระตัวสุดท้ายได้ แต่นั่นอาจไม่ได้ผลในบางกรณี: โดยทั่วไปแล้วเครื่องอ่านการ์ด MMC จะมีชื่อเหมือน/dev/mmcblk0ในขณะที่พาร์ทิชันของพวกเขามีชื่อเช่น/dev/mmcblk0p1(สังเกตเห็นพิเศษp) ทางเลือก: อุปกรณ์บล็อกบางตัวไม่มีตารางพาร์ติชั่นเลยและมีการจัดรูปแบบเป็นพาร์ติชันเดียว ในกรณีนี้อุปกรณ์พาร์ทิชันและอุปกรณ์บล็อกหลักเหมือนกัน ปริมาตร LVM เป็นปลาที่แตกต่างกันอย่างสิ้นเชิง ฉันไม่ต้องการสนับสนุนพวกเขาในตอนนี้ แต่ถ้าคำนึงถึงพวกเขาต้องการความพยายามเพิ่มเล็กน้อยฉันก็ไม่รังเกียจ

2
การควบคุม IO แบบบล็อกตามน้ำหนักสำหรับ VMs
ฉันใช้ KVM เพื่อจัดการเครื่องเสมือนของฉัน ฉันพยายาม จำกัด ทรัพยากรที่มีให้สำหรับ VMs ฉันสามารถ จำกัด CPU และหน่วยความจำที่จัดสรรสำหรับ VMs โดยใช้ libvirt / cgroups ตอนนี้ฉันต้องการควบคุมเวลาดิสก์ที่จัดสรรให้กับ VM แต่ละเครื่องโดยใช้น้ำหนักบางอย่าง ฉันดูการควบคุม blkio จากกลุ่ม cg เนื่องจาก VM เป็นเพียงกระบวนการลีนุกซ์ฉันจะสามารถใช้กลุ่ม cg ได้ แต่ฉันไม่แน่ใจว่ามันจะทำงานกับ IO แบบอะซิงโครนัสหรือไม่ ถ้าไม่มีใครสามารถแนะนำทางเลือกที่ดีได้หรือไม่?

6
การเปรียบเทียบอุปกรณ์บล็อกดิบ
มียูทิลิตี้ (หรือเวทย์มนตร์เชลล์) ที่ทำให้ฉันสามารถเปรียบเทียบอุปกรณ์บล็อกสองอันได้หรือไม่? รายละเอียด: ฉันมีอุปกรณ์ RAID ขนาดใหญ่ (0.5 TB) ที่ฉันสำรองข้อมูลไปยังอุปกรณ์ SATA ที่ใหญ่กว่าเล็กน้อยโดยใช้ dd อุปกรณ์มีหลายพาร์ติชัน แต่ฉันคัดลอกจากอุปกรณ์ 'parent' ไม่ใช่โหนดอุปกรณ์ที่แบ่งพาร์ติชัน (เช่นฉันคัดลอก / dev / hda และไม่ใช่ / dev / hda1 เป็นต้น) ฉันต้องการตรวจสอบว่าการสำรองข้อมูลดี / ถูกต้อง ฉันคิดเกี่ยวกับการใช้ md5sum ในแต่ละอุปกรณ์ แต่นั่นจะไม่ให้ผลลัพธ์ที่ถูกต้องกับฉันเนื่องจากอุปกรณ์ที่สองมีขนาดใหญ่กว่าครั้งแรกเล็กน้อยดังนั้นไบต์พิเศษจะเปลี่ยนแฮช

5
ป้องกันไม่ให้ฮาร์ดไดรฟ์ภายนอก USB เข้าสู่โหมดสลีป
ไม่มีใครรู้ว่ามีวิธีที่สวยงามที่จะบอกไดรฟ์ usb ภายนอกที่จะไม่หมุนลงหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่งหรือไม่? ฉันได้เห็นโซลูชันที่ใช้ cron ที่เขียนไฟล์ทุกนาที แต่ไม่มีอะไรที่มีกลิ่นของความสง่างามของยูนิกซ์ที่ดี จะต้องมีคำสั่ง hdparm หรือคำสั่ง scsi ที่ฉันสามารถออกได้ (ไดรฟ์ usb เข้าถึงได้ผ่านทางไดรเวอร์ sd ใน OpenBSD) ไปยังไดรฟ์เพื่อบอกให้ไม่นอน ฉันกลัวว่านี่อาจเป็นคุณสมบัติที่ติดตั้งไว้ในคอนโทรลเลอร์ในกล่องหุ้มและสิ่งนี้ไม่สามารถเปลี่ยนแปลงได้นอกเหนือจากการฉีกไดรฟ์ออกจากกล่องหุ้มและลอกมันเข้าไปในเครื่องโดยตรง แต่ฉันคิดว่าฉันจะถาม เมื่อมีโอกาส เป็นการดีที่ฉันกำลังมองหาวิธีแก้ปัญหา OpenBSD แต่ฉันรู้ว่ามีคนอื่น ๆ ที่นั่นด้วยปัญหาเดียวกันดังนั้นคำตอบใด ๆ จะได้รับการพิจารณาสำหรับคำตอบ

2
bcache บน md หรือ md บน bcache
bcache ช่วยให้หนึ่งหรือดิสก์ไดรฟ์ได้อย่างรวดเร็วมากขึ้นเช่นแฟลชไดรฟ์ตามสถานะของแข็ง (SSDs) เพื่อทำหน้าที่เป็นแคชสำหรับหนึ่งหรือดิสก์ไดรฟ์มากขึ้นช้าลงอย่างหนัก ถ้าฉันเข้าใจถูกต้อง SSD *อาจจะกำหนดให้แคช HDDs สนับสนุนหลายแล้วอุปกรณ์ที่เก็บไว้ชั่วคราวที่เกิดขึ้นอาจจะมีการบุกเข้าไปในกับ mdadm หรือ HDD หลายตัวอาจถูกโจมตีเข้าไปในอุปกรณ์สำรอง md เดียวและ SSD ที่กำหนดให้กับแคชนั้น ฉันสงสัยว่าวิธีการของ saner คืออะไร มันเกิดขึ้นกับฉันว่าการเพิ่ม RAID5 / 6 นั้นอาจจะง่ายกว่าด้วยเทคนิคอย่างใดอย่างหนึ่ง แต่ฉันไม่แน่ใจว่าอันไหน! มีเหตุผลที่ดี (เช่นการเพิ่มที่เก็บข้อมูลสำรองหรือสิ่งอื่นใด) เพื่อเลือกวิธีหนึ่งเหนืออีกระบบหนึ่ง (สำหรับระบบไฟล์ที่ไม่ใช่รูทขนาดใหญ่ที่มีไฟล์สำรอง VM) * โดย "an SSD" ฉันหมายถึงอุปกรณ์ SSD ที่ซ้ำซ้อนบางชนิดเช่น RAID1 ของฟิสิคัล SSD สองตัว

3
`dd 'จะถูกนำมาใช้เพื่อบล็อกขวาเปลี่ยนข้อมูลได้อย่างไร?
พิจารณาอุปกรณ์บล็อกดิบ 100MB เป็นตัวอย่างง่ายๆ นั่นคือ 204800 บล็อก 512 ไบต์แต่ละรายการรวมเป็น 102760448 ไบต์ ความท้าทายคือการเปลี่ยน 98MB แรก (200704 บล็อก) ดังนั้นจึงมีช่องว่าง 2MB (4096 บล็อก) ที่ด้านหน้า เมื่อต้องการทำสิ่งนี้ในสถานที่นั้นจะต้องไม่มีสิ่งใดถูกเขียนไปยังเซกเตอร์ที่ยังไม่ได้อ่าน วิธีหนึ่งในการบรรลุเป้าหมายนี้คือการแนะนำบัฟเฟอร์: $ dd if=/dev/sdj2 count=200704 | mbuffer -s 512 -b 4096 -P 100 | dd of=/dev/sdj2 seek=4096 ความคาดหวังคือmbufferจะเก็บบล็อก 4096 ก่อนส่งผ่านสิ่งใดไปยังผู้เขียนดังนั้นให้แน่ใจว่าไม่มีสิ่งใดถูกเขียนไปยังพื้นที่ที่ไม่ได้ถูกอ่านและผู้เขียนล่าช้าผู้อ่านตามขนาดของบัฟเฟอร์ บัฟเฟอร์ควรอนุญาตให้ตัวอ่านและตัวเขียนทำงานเร็วที่สุดเท่าที่จะเป็นไปได้ภายในกลุ่มค่าเหล่านั้น อย่างไรก็ตามดูเหมือนว่าจะไม่สามารถทำงานได้อย่างน่าเชื่อถือ ฉันได้ลองใช้อุปกรณ์จริง แต่มันก็ไม่สามารถใช้งานได้ในขณะที่การทดสอบกับไฟล์ทำงานบนกล่อง 64- บิตของฉัน แต่ไม่ได้อยู่ในกล่อง 32- บิตของฉัน …
10 dd  block-device 

1
ค้นหาว่าอุปกรณ์เฉพาะนั้นเป็นที่เก็บข้อมูลขนาดใหญ่ USB หรือไม่
บริบท ฉันกำลังถ่ายภาพ SD การ์ดโดยอัตโนมัติจากddภาพโรงงานที่มีอยู่ การ์ด SD มีการเชื่อมต่อเสมอผ่านเครื่องอ่านการ์ด USB /dev/sd*ภายนอกและทำให้ปรากฏขึ้นในระบบเป็นอุปกรณ์ป้องกัน ปัจจุบันไวยากรณ์ของคำสั่งของฉันคือ: write-image DEVICEที่ไหนDEVICEคืออุปกรณ์บล็อกการ์ด SD เช่น /dev/sdd. ปัญหา ฉันได้ทำการตรวจสอบขั้นพื้นฐานDEVICEเพื่อยืนยันว่าเป็นของฟอร์ม/dev/sd*แต่ยังไม่เพียงพอ: ฉันกลัวว่าผู้ใช้ (คนที่ไม่ได้ใช้กับ Linux) ทำสิ่งที่ผิดพลาดและระบุอุปกรณ์อื่นที่ดูเหมือนจะใช้ได้เช่น /dev/sda. คุณสามารถเห็นความหายนะที่กำลังเกิดขึ้นโดยเฉพาะอย่างยิ่งเมื่อสคริปต์การถ่ายภาพของฉันต้องการสิทธิ์รูท (ไม่ต้องเขียนภาพเองคุณต้องใส่ใจ แต่ต้องแก้ไขการ์ด SD หลังจากนั้นรวมถึงการปรับขนาดพาร์ติชันขึ้นอยู่กับขนาดจริงของการ์ด SD) ... คำถาม ฉันต้องการตรวจสอบว่าอุปกรณ์ที่ระบุจริง ๆ แล้วเป็นที่เก็บข้อมูล USB จำนวนมาก (หรืออย่างน้อยที่สุดก็เป็นอุปกรณ์ถอดได้) เพื่อให้ฉันสามารถป้องกันดิสก์ระบบไม่ให้ถูกทิ้งในถังขยะโดยไม่ได้ตั้งใจ ฉันจะทำสิ่งนั้นได้อย่างไร ฉันพบว่าไม่มีอะไรเกี่ยวข้องใน/procหรือบนเว็บตอนนี้ฉันค่อนข้างจะสูญเสีย

1
ไดร์เวอร์ตัวใดที่อยู่ด้านหลังไฟล์อุปกรณ์บางตัว?
รับไฟล์อุปกรณ์แล้วบอกว่า/dev/sdbเป็นไปได้หรือไม่ที่จะกำหนดว่าไดรเวอร์ใดที่อยู่ด้านหลัง โดยเฉพาะฉันต้องการตรวจสอบไดรเวอร์อุปกรณ์เก็บข้อมูลที่ใช้ fdisk -lแสดงรายการอุปกรณ์ 2: และ/dev/sda /dev/sdbหนึ่งคือฮาร์ดไดรฟ์ SATA และอีกอันคืออุปกรณ์ USB Mass Storage - จริงๆแล้วเป็นการ์ด SD ฉันจะกำหนดโดยทางโปรแกรมได้อย่างไร ฉันกำลังเขียนซอฟต์แวร์หนึ่งชิ้นและฉันต้องการปกป้องผู้เริ่มต้นจากการกำจัดฮาร์ดไดรฟ์ของพวกเขาในขณะที่ให้พวกเขากำจัดการ์ด SD ของพวกเขา

2
วิธีการค้นหาอย่างง่าย ๆ ว่าอุปกรณ์บล็อก (หรือส่วนหนึ่งของมัน) ติดตั้งอย่างใด
ฉันต้องการทราบว่าวิธีที่ง่ายที่สุดคือการกำหนด (โดยไม่มีสิทธิ์รูท) ไม่ว่าจะเป็นอุปกรณ์บล็อก (พูดsdb) หรือส่วนใดส่วนหนึ่งของอุปกรณ์นั้นถูกเมาท์ (และส่วนใดของมัน) การตรวจสอบ/proc/mountssdb ไม่เพียงพอเนื่องจากsdbอาจใช้หนึ่งในพาร์ติชันของ LVM คุณสามารถตรวจสอบ/sys/block/sdb/sdb*/holders/แต่คุณได้รับdm-xรายการที่ต้องมีมติให้ชื่อที่อยู่ในการสั่งซื้อเพื่อตรวจสอบ/dev/mapper /proc/mountsเป็นไปได้ แต่ถ้ามีวิธีแก้ปัญหาที่ง่ายกว่า ... (ซึ่งไม่ควรต้องใช้สิทธิ์รูท)

3
คีย์ USB จะมีชื่อเหมือนกันทุกครั้งที่ฉันติดตั้งหรือไม่
ฉันมีคีย์ USB ซึ่งจะใช้ในการบันทึกข้อมูลทุกวันผ่านสคริปต์ทุบตี ฉันจัดการเพื่อให้มันสำหรับผู้ใช้เฉพาะเพื่อให้สามารถเขียนโฟลเดอร์ในนั้นโดยใช้คำสั่ง: mount /dev/sdc1 /media/usb -o rw,uid=sysop,gid=sysop สคริปต์สามารถเรียกใช้และสร้างไดเรกทอรีได้ตามต้องการและสมบูรณ์แบบ ในบางจุดปุ่ม USB จะถูกถอดปลั๊กและแทนที่ด้วยปุ่มใหม่ (รุ่นเดียวกัน) คีย์ USB ใหม่จะยังคงมีชื่ออยู่/dev/sdc1หรือจะเป็นชื่ออื่นหรือไม่ หากเป็นชิ้นส่วนที่แตกต่างกันฉันจะรวมส่วนการติดตั้งในสคริปต์ของฉันเพื่อให้การติดตั้งเป็นไปโดยอัตโนมัติได้อย่างไร

1
เป็นไปได้ไหมที่จะเปลี่ยนขนาดเซกเตอร์ของพาร์ติชั่นสำหรับ zfs raidz pool ใน linux?
ฉันได้ทำการโยกย้าย zfs raidz pool บน linux ไปยังดิสก์ใหม่ผ่านอุปกรณ์เสมือนซึ่งเป็นไฟล์ที่กระจัดกระจาย ฉันใช้พาร์ติชั่นบนแผ่นดิสก์เพราะแผ่นแต่ละแผ่นมีขนาดต่างกัน 1.9T ดิสก์สุดท้ายที่จะเพิ่มคือดิสก์ 4Tb และฉันแบ่งพาร์ติชันเป็นดิสก์อื่นที่มีพาร์ติชัน 1.9T เพื่อเพิ่มลงในพูล กำลังใช้ตารางพาร์ติชัน GPT เมื่อฉันพยายามแทนที่ไฟล์ล่าสุดด้วยพาร์ติชัน 1.9T ในดิสก์ 4T ฉันได้รับต่อไปนี้ zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment ฉันจะเปลี่ยนขนาดเซกเตอร์ของพาร์ติชันเป็น 512 เหมือนขนาดอื่นได้หรือไม่สามารถเปลี่ยนอุปกรณ์พูลอื่นเป็น 4024 ได้ เห็นได้ชัดว่าขนาดเซกเตอร์ตรรกะทั้งหมด 512 cat /sys/block/sdd/queue/hw_sector_size Disk /dev/sdd: 4000.8 GB, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.