[{"data":1,"prerenderedAt":286},["ShallowReactive",2],{"project-16948939":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":14,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":33,"aspects":34,"strip":39,"post_text":42,"what":43,"said":69,"maker_in_thread":167,"shape":179,"grid":183,"attempts":248,"same_week":249,"maker_shows":30,"maker_hidden":278,"reader_version":279,"card":280},"16948939","fdb-nbd","A proof-of-concept FoundationDB based network block device backend","title","Show HN: A proof-of-concept FoundationDB based network block device backend","https:\u002F\u002Fgithub.com\u002Fdividuum\u002Ffdb-nbd","github.com","dividuum",1524941059,2018,192,33,2155,9,"notable","infrastructure","network block device","other",[23,20,24,25,26],"foundationdb","nbd","block storage","distributed storage","curious",0.115,{"positive":30,"neutral":31,"mixed":32,"critical":32},4,19,1,25,{"idea":35,"execution":37,"performance":38},{"positive":30,"critical":36},0,{"positive":36,"critical":32},{"positive":36,"critical":36},[40,41,36,36,41,36,36,41,41,41,41,41,40,41,41,41,41,40,40,41,36,41,41,36,41,41,41,36,41,41,41,36,32],5,3,null,{"problem":42,"audience":42,"pricing":42,"motivation":42,"time_to_build":42,"stack":44,"openness":66,"stage":67,"team_size":68},[45,57],{"value":46,"source":47,"evidence":48},"Python","inferred",[49,53],{"id":50,"by":51,"text":52},"16949224","amluto","Very cute. For a production system, you do not want an NBD device backed by Python code on the same machine. That way lies nasty memory allocation deadlocks.",{"id":54,"by":55,"text":56},"16949016","0x006A","does the zlib compression in python make it faster or slower?",{"value":58,"source":47,"evidence":59},"FoundationDB",[60,62],{"id":61},"post",{"id":63,"by":64,"text":65},"16949319","oneplane","What makes the use of FoundationDB special in this case?","open_source","prototype","unknown",{"praise":70,"objections":90,"requests":104,"questions":122,"alternatives":141},[71,83],{"value":72,"source":73,"evidence":74},"Fault tolerance for legacy applications via block storage over FDB","commenter",[75,79],{"id":76,"by":77,"text":78},"16949539","voidmain","Awesome. I actually think that there is a lot of potential for using block storage over FDB to bring extreme fault tolerance to legacy applications without rearchitecting them.…",{"id":80,"by":81,"text":82},"16951010","haneefmubarak","I think the biggest feature is that you get (up to) linearizable consistency while still being FAST, meaning you can rest assured that any writes are actually permanent, even if…",{"value":84,"source":73,"evidence":85},"Simple NBD protocol is useful for building new things",[86],{"id":87,"by":88,"text":89},"16950079","kentonv","It's not really \"better\" or \"worse\". NBD is an extremely simple protocol. Read range, write range, delete range, sync -- that's it. If you want to implement an NBD server from…",[91,98],{"value":92,"source":73,"evidence":93},"Python backend on same machine risks memory deadlocks",[94,95],{"id":50,"by":51,"text":52},{"id":96,"by":51,"text":97},"16952619","Suppose you've filled up most of your memory and that some of that memory contains data that you've written to an NBD-backed device but that hasn't been flushed out yet. The…",{"value":99,"source":73,"evidence":100},"Ad hoc locking across etcd and Ceph is hard to get right",[101],{"id":102,"by":77,"text":103},"16951832","Unless you have serious simulation or model checking tools, your ad hoc combination of etcd and ceph will almost certainly be buggy. I'm not 100% positive it is even possible in…",[105,116],{"value":106,"source":73,"evidence":107},"Support for multiple simultaneous clients on the same volume",[108,112],{"id":109,"by":110,"text":111},"16949049","ryanworl","Could you mount this on multiple machines and do simultaneous reads and writes?",{"id":113,"by":114,"text":115},"16952183","scoot","How do you handle resilience? if FDB is multi-node, do you run a copy on each node? If so, how is failure detected \u002F client traffic redirected, and what protects against…",{"value":117,"source":73,"evidence":118},"Failover to an alternate node when the connected node fails",[119],{"id":120,"by":114,"text":121},"16970773","Thanks for the reply. Don't know if you will see this, but I was also interested in how the NBD client fails over to an alternate node if the one it's connected to fails.…",[123,128,137],{"value":124,"source":73,"evidence":125},"How is resilience and failover handled",[126,127],{"id":113,"by":114,"text":115},{"id":120,"by":114,"text":121},{"value":129,"source":73,"evidence":130},"What prevents concurrent clients on one volume",[131,132,136],{"id":113,"by":114,"text":115},{"id":133,"by":134,"text":135},"16958957","spullara","See https:\u002F\u002Fwww.foundationdb.org for information on FDB but in short it is a distributed database that is auto-scaling, auto-healing, auto-sharding and ACID. You do need a…",{"id":120,"by":114,"text":121},{"value":138,"source":73,"evidence":139},"Does zlib compression make it faster or slower",[140],{"id":54,"by":55,"text":56},[142,153,161],{"value":143,"source":73,"evidence":144},"Ceph RBD",[145,149],{"id":146,"by":147,"text":148},"16950646","geofft","Would this provide additional benefits over Ceph, which does no-single-point-of-failure networked block storage and is already a production-ready system? It wouldn't get you the…",{"id":150,"by":151,"text":152},"16952326","emmericp","RBD (Ceph block devices) supports exclusive locking. The RBD kernel client has support for that since kernel 4.9. Older kernels can use rbd-nbd to use the user space…",{"value":154,"source":73,"evidence":155},"iSCSI",[156,160],{"id":157,"by":158,"text":159},"16949296","CaseFlatline","Could someone explain why\u002Fhow NBD is better than just using a linux host as an iscsi target? Googling NBD vs iSCSI shows old articles with no real solid conclusion.",{"id":87,"by":88,"text":89},{"value":162,"source":73,"evidence":163},"Java NBD server by spullara",[164],{"id":165,"by":134,"text":166},"16949228","Cool! Here is my java version that I wrote back in the day. Recently updated to 5.1. https:\u002F\u002Fgithub.com\u002Fspullara\u002Fnbd",{"comments":41,"answered":168,"key":169},2,[170,173,176],{"id":171,"text":172},"16949292","Nice. That looks way more polished. Thanks for linking! Upon further reading: I didn't realize that there is a TRIM command. I search briefly and missed that. Neat.",{"id":174,"text":175},"16949063","By default no: It's a block device, so it has no idea what the file system on top is doing. Mounting the same file system in rw mode twice would result in instant corruption…",{"id":177,"text":178},"16949033","Good question. I actually didn't test that at all. I mostly added that as I saw a few mostly empty blocks written and compression lowered the total space usage a bit.",{"commenters":180,"max_depth":30,"maker_replies":41,"first_comment_mins":181,"lifespan_hours":182},20,26,73,[184,186,188,190,192,194,195,196,198,199,200,202,205,206,210,212,215,216,217,219,220,221,224,226,228,231,233,234,235,238,240,243,246],[76,36,40,185,77,36],"project\u002Fpositive\u002Fidea",[146,36,41,187,147,36],"project\u002Fneutral\u002Fidea",[102,36,36,189,77,36],"commenter\u002Fneutral\u002Fidea",[150,36,36,191,151,36],"commenter\u002Fneutral\u002Fnone",[165,32,41,193,134,36],"project\u002Fneutral\u002Fnone",[171,32,36,191,11,32],[113,32,36,191,114,36],[133,32,41,197,134,36],"project\u002Fneutral\u002Fexecution",[120,32,41,197,114,36],[157,168,41,187,158,36],[201,168,41,187,64,36],"16949310",[203,168,41,187,204,36],"16949498","benjojo12",[87,168,40,185,88,36],[207,168,41,208,209,36],"16951069","project\u002Fneutral\u002Fperformance","deforciant",[211,168,41,208,88,36],"16952934",[213,168,41,193,214,36],"16951549","regularfry",[63,41,41,187,64,36],[80,41,40,185,81,36],[218,41,40,185,214,36],"16951540",[109,30,41,197,110,36],[174,30,36,197,11,32],[222,30,41,197,223,36],"16949120","koolba",[225,30,41,187,110,36],"16949135",[227,30,36,191,134,36],"16949446",[229,30,41,197,230,36],"16950831","roomey",[232,30,41,197,55,36],"16949073",[54,40,41,208,55,36],[177,40,36,208,11,32],[236,40,41,208,237,36],"16949430","stock_toaster",[239,40,41,208,77,36],"16949615",[50,241,41,242,51,36],6,"project\u002Fmixed\u002Fexecution",[244,241,36,191,245,36],"16952512","btown",[96,241,32,247,51,36],"project\u002Fcritical\u002Fexecution",[],[250,255,260,264,269,274],{"id":251,"name":252,"points":253,"category":254},"16959550","ReLaXed",344,"productivity",{"id":256,"name":257,"points":258,"category":259},"16958446","stocks",207,"finance_crypto",{"id":261,"name":262,"points":263,"category":259},"16958797","crapcoin",206,{"id":265,"name":266,"points":267,"category":268},"16962695","un0rick",199,"hardware",{"id":270,"name":271,"points":272,"category":273},"16950040","fuzzy",186,"languages",{"id":275,"name":276,"points":277,"category":273},"16947038","SE Simulator",178,false,"v2",{"id":281,"name":5,"line":6,"ai":278,"cat":19,"year":13,"points":14,"comments":15,"rec":27,"s":282,"top":17,"kw":283,"maker":11,"domain":10,"tier":18,"attempts":36,"strip":284,"url":9,"mix":285,"praise":72,"objection":92,"sub":20},16948939,0.12,[23,20,24,25,26],"530030033333533335530330333033301",[30,31,32,32],1794036565535]