ນີ້ແມ່ນຄໍາສັ່ງ vdm_decode ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
vdmfec - ບລັອກ ECC ສໍາລັບໄຟລ໌
ສະຫຼຸບສັງລວມ
vdmfec [-v] [-d] [-ຂ ຂະໜາດ] [-ນ N] [-ກ K] [ໄຟລ໌]
vdm_encode [-v] [-ຂ ຂະໜາດ] [-ນ N] [-ກ K] [ໄຟລ໌]
vdm_decode [-v] [-ຂ ຂະໜາດ] [-ນ N] [-ກ K] [ໄຟລ໌]
ລາຍລະອຽດ
vdmfec ອ່ານກະແສການປ້ອນຂໍ້ມູນ ແລະເພີ່ມບລັອກການແກ້ໄຂຂໍ້ຜິດພາດເພື່ອໃຫ້ຕິດຕໍ່ກັນຂະໜາດໃຫຍ່
ພາກສ່ວນຂອງກະແສຜົນຜະລິດອາດຈະເສຍຫາຍ, ແລະຂໍ້ມູນໄດ້ຟື້ນຕົວ. ຍົກຕົວຢ່າງ,
diskettes ປົກກະຕິແລ້ວສູນເສຍຂະແຫນງການທັງຫມົດໃນເວລາດຽວກັນ, ຫຼືກຸ່ມທີ່ກ່ຽວຂ້ອງຂອງຂະແຫນງການ, ຫຼືແມ້ກະທັ້ງ
ເພງທັງໝົດ. ຂໍ້ມູນທີ່ຂຽນໃສ່ diskette ກັບໂຄງການນີ້ອາດຈະໄດ້ຮັບການຟື້ນຕົວເຖິງແມ່ນວ່າ
ຄວາມຜິດພາດການອ່ານຫຼາຍ.
ສູດການຄິດໄລ່ທີ່ໃຊ້ແມ່ນ Forward Error Correction (FEC) code ໂດຍອີງໃສ່ Vandermonde (VDM)
matrices ໃນ GF(2^8) ເນື່ອງຈາກ Luigi Rizzo. ໃຫ້ FEC ຕົວກໍານົດການ K ແລະ N, ມີ N ຫຼາຍກວ່າ
ກ ່ ວາ K, N blocks ແມ່ນຂຽນສໍາລັບທຸກໆຕັນ input K ໃນລັກສະນະທີ່ຕັນ K ໃດ
ພຽງພໍທີ່ຈະສ້າງຂໍ້ມູນຄືນໃໝ່. ນັ້ນແມ່ນ, ເຖິງ N - K ຕັນອອກຈາກທຸກໆກຸ່ມ N
ຕັນອາດຈະສູນເສຍໂດຍບໍ່ມີການສູນເສຍຂໍ້ມູນ.
ປະລິມານຂອງ overhead ໃນນ້ໍາຜົນຜະລິດແມ່ນສາມາດປັບໄດ້ຢ່າງງ່າຍດາຍໂດຍການປ່ຽນແປງ K. N ແລະ
blocksize ຄວບຄຸມຈໍານວນທັງຫມົດຂອງຂໍ້ມູນທີ່ຂຽນ. ຂຶ້ນກັບປະເພດຂອງຄວາມຜິດພາດທີ່ທ່ານ
ຄາດຫວັງວ່າ, ການຕັ້ງຄ່າທີ່ແຕກຕ່າງກັນອາດຈະເປັນປະໂຫຍດຫຼາຍຫຼືຫນ້ອຍ. ຕົວຢ່າງ, ທ່ານອາດຈະບໍ່ຄາດຫວັງວ່າຈະ
ມີສອງຫຼືສາມຂະແຫນງທີ່ບໍ່ດີຢູ່ໃນທຸກໆເສັ້ນທາງ (ຖ້າທ່ານເຮັດມັນເຖິງເວລາທີ່ຈະປ່ຽນແທນ
diskette!), ແຕ່ທ່ານອາດຈະຄາດຫວັງວ່າສາມຂະແຫນງທີ່ບໍ່ດີຢູ່ໃນສອງຫຼືສາມເພງຕິດຕໍ່ກັນ
(ຄວາມຜິດພາດຂອງແຜ່ນມີແນວໂນ້ມທີ່ຈະເປັນກຸ່ມ).
OPTIONS
-v ພິມຂໍ້ຄວາມໃຫ້ຂໍ້ມູນກ່ຽວກັບຂະບວນການເຂົ້າລະຫັດຫຼືການຖອດລະຫັດເພື່ອ stderr,
ລວມທັງປັດໄຈການຂະຫຍາຍຕົວ. ໃຊ້ -vv ເພື່ອໃຫ້ໄດ້ຮັບຂໍ້ມູນກ່ຽວກັບແຕ່ລະຕັນ
ອ່ານຫຼືຂຽນ.
-d ຖອດລະຫັດການປ້ອນຂໍ້ມູນແທນທີ່ຈະເຂົ້າລະຫັດມັນ. ການນໍາໃຊ້ທາງເລືອກນີ້ແມ່ນທຽບເທົ່າກັບ
ຮຽກຮ້ອງໃຫ້ໂຄງການເປັນ vdm_decode.
-b ຂະໜາດ
ກໍານົດຂະຫນາດບລັອກ FEC ເພື່ອບລັອກຂະຫນາດໄບຕ໌. ຂະຫນາດ blocks ອາດຈະມີ 'k' ຫຼື 'K'
ເພີ່ມເຕີມ, ໃນກໍລະນີດັ່ງກ່າວນີ້, ຂະຫນາດຕັນໄດ້ຖືກກໍານົດເປັນ blocksize * 1024 bytes. ນີ້
ປົກກະຕິແລ້ວຄວນຈະເປັນຫຼາຍຂອງຕັນສື່ຜົນຜະລິດ ຫຼືຂະຫນາດຂອງຂະແຫນງການ (ເຊັ່ນ: 512,
1024, 18K, ແລະອື່ນໆ), ແລະຕ້ອງມີຢ່າງຫນ້ອຍ 26 bytes ໃນຮຸ່ນ 1. Default 1024.
-n N -k K
ຕັ້ງຄ່າພາລາມິເຕີ FEC N ແລະ K. N ຕ້ອງໃຫຍ່ກວ່າ 2 ແລະໜ້ອຍກວ່າ ຫຼືເທົ່າກັບ
256. K ຕ້ອງໃຫຍ່ກວ່າ 0 ແລະໜ້ອຍກວ່າ N. ຄ່າເລີ່ມຕົ້ນ N=18, K=14.
ໃຫ້ສັງເກດວ່າ N, K, ແລະຕົວກໍານົດການ blocksize ບໍ່ໄດ້ຖືກຂຽນໃສ່ຜົນໄດ້ຮັບ! ເຈົ້າຕ້ອງ
ລະບຸ ດຽວກັນ ຕົວກໍານົດການໃນເວລາທີ່ທ່ານດໍາເນີນການຖອດລະຫັດ. (ຕົວຈິງແລ້ວ, ຕົວຖອດລະຫັດແມ່ນມີຄວາມສາມາດ
ກວດຫາຄ່າ K ທີ່ບໍ່ຖືກຕ້ອງຢ່າງຈະແຈ້ງ, ແຕ່ຄ່າ blocksize ຫຼືຄ່າ N ບໍ່ຖືກຕ້ອງ
ສົ່ງຜົນໃຫ້ເກີດການບລັອກທີ່ບໍ່ດີແລະການຖອດລະຫັດຄວາມລົ້ມເຫຼວ.)
ຕົວຖອດລະຫັດສາມາດອ່ານຈາກສື່ທີ່ບໍ່ສາມາດຊອກຫາໄດ້ເຊັ່ນທໍ່, ແນວໃດກໍ່ຕາມ, buffer
underruns ບໍ່ຖືກກວດພົບແລະຈະສົ່ງຜົນໃຫ້ຄວາມລົ້ມເຫຼວ. ນອກຈາກນັ້ນ, ເມື່ອອ່ານຈາກທໍ່ນັ້ນ
ໄຟລ໌ທັງຫມົດຕ້ອງໄດ້ຮັບການອ່ານ. ການອ່ານຈາກສະຕຣີມທີ່ສາມາດຊອກຫາໄດ້ໄວຂຶ້ນເພາະວ່າມີພຽງແຕ່ K
ຕັນທີ່ດີອອກຈາກ N ຈໍາເປັນຕ້ອງໄດ້ອ່ານ.
ຕົວເຂົ້າລະຫັດເກັບຮັກສາ chunk ແລະ block ids ທີ່ຖືກນໍາໃຊ້ເພື່ອກວດພົບອອກຈາກຕັນຄໍາສັ່ງ, ແຕ່
ຂໍ້ຜິດພາດເຫຼົ່ານັ້ນ (ເຊິ່ງບາງຄັ້ງສາມາດເກີດຂື້ນຍ້ອນການສໍ້ລາດບັງຫຼວງຂອງລະບົບໄຟລ໌) ບໍ່ໄດ້ຖືກແກ້ໄຂ.
ປະເພດດຽວຂອງຄວາມຜິດພາດທີ່ສາມາດແກ້ໄຂໄດ້ແມ່ນ in ສະຖານທີ່ ການສໍ້ລາດບັງຫຼວງຂອງຂໍ້ມູນ. ໃນ
ໂດຍສະເພາະ, ຕັນທີ່ຂາດຫາຍໄປ (ຈາກແພັກເກັດທີ່ສູນເສຍ) ເຮັດໃຫ້ເກີດຄວາມລົ້ມເຫລວໃນການຖອດລະຫັດ, ເຖິງແມ່ນວ່າ K
ຕັນທີ່ດີແມ່ນມີຢູ່. ໂຄງການນີ້ແມ່ນຈຸດປະສົງຕົ້ນຕໍເພື່ອຟື້ນຕົວຂໍ້ມູນສູນເສຍເນື່ອງຈາກ
ອ່ານຂໍ້ຜິດພາດໃນສື່ຄົງທີ່ເຊັ່ນ diskettes; ໂຄງການອື່ນໆຈໍານວນຫນຶ່ງແລະຫ້ອງສະຫມຸດແມ່ນ
ສາມາດໃຊ້ໄດ້ທີ່ໃຊ້ FEC ເພື່ອຈັດການກັບຂໍ້ຜິດພາດອື່ນໆ (ໂດຍທົ່ວໄປແລ້ວແພັກເກັດເຄືອຂ່າຍ).
ຕົວຢ່າງ
ພິຈາລະນາແຜ່ນດິດທີ່ມີ 80 ເພງ, 2 ຫົວ, ແລະ 18 512-byte sectors ຕໍ່ເພງ (ມາດຕະຖານ
ແຜ່ນດິດ 1.44MB).
bzip2 < ໄຟລ໌ | vdmfec > /dev/fd0
ໃຊ້ຄ່າເລີ່ມຕົ້ນຂອງ -b1k -n18 -k14, ເກັບຮັກສາເຖິງ ~1.1MB ຂອງການປ້ອນຂໍ້ມູນທີ່ຖືກບີບອັດ.
ຂໍ້ມູນ, ຂຽນຫນຶ່ງ (ສອງດ້ານ) ຕິດຕາມ (18K) ໃນເວລາດຽວ, ແລະອະນຸຍາດໃຫ້ 4 ກຸ່ມທີ່ບໍ່ດີ (8.
ຂະແຫນງການ) ຕໍ່ການຕິດຕາມ.
vdmfec -d /dev/fd0 | bunzip2 > ໄຟລ໌
ກູ້ໄຟລ໌ຕົ້ນສະບັບ.
vdm_encode -b18k -n80 -k70 file.img > /dev/fd0
ຂຽນ diskette ທັງຫມົດ, ເກັບຮັກສາເຖິງ ~ 1.23MB ຂອງຂໍ້ມູນ, ແລະອະນຸຍາດໃຫ້ມີຄວາມຜິດພາດຫຼາຍໃນ 10.
ຕິດຕາມສອງດ້ານທີ່ແຕກຕ່າງກັນ.
vdm_decode -b18k -n80 -k70 /dev/fd0 > file.img
ກູ້ຂໍ້ມູນແລະອ່ານບໍ່ຫນ້ອຍກວ່າ 70 ເພງ. ໃຫ້ສັງເກດວ່າ vdm_decode ອອກມາດ້ວຍ a
ສະຖານະພາບທີ່ບໍ່ແມ່ນສູນກ່ຽວກັບຄວາມລົ້ມເຫຼວ, ດັ່ງນັ້ນການກໍ່ສ້າງເຊັ່ນ:
vdm_decode /dev/fd0 > moo && tar -xvf moo
ເປັນໄປໄດ້.
dd if=/dev/tape ibs=1024 conv=norror,sync | \
vdm_decode > ໄຟລ໌
ອັນນີ້ອາດຈະຈຳເປັນເພື່ອກູ້ຂໍ້ມູນຈາກບາງສື່ທີ່ບໍ່ສາມາດຊອກຫາໄດ້. ເຈົ້າສາມາດແນ່ນອນ
ພຽງແຕ່ຂຽນຜົນຜະລິດເຂົ້າລະຫັດເປັນໄຟລ໌ປົກກະຕິ, ເຊັ່ນດຽວກັນກັບໃນ
tar -cf - dir | gzip | vdm_encode -v > dir.tgz.vdm
ການລາຍງານ ບັກ
ລາຍງານແມງໄມ້ໃຫ້ Tom Holroyd[email protected]>.
ໃຊ້ vdm_decode ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net
