{"id":704,"date":"2015-10-18T15:35:00","date_gmt":"2015-10-18T07:35:00","guid":{"rendered":"http:\/\/note.systw.net\/note\/?p=704"},"modified":"2023-11-04T15:43:58","modified_gmt":"2023-11-04T07:43:58","slug":"file-systems","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/704","title":{"rendered":"File Systems"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>1.\u6982\u5ff5<\/strong><\/h2>\n\n\n\n<p><strong>file system structrue<\/strong><br>\u4e3b\u8981\u5305\u62ec\u4ee5\u4e0b<br><strong>file<\/strong><br>\u908f\u8f2f\u7684\u5132\u5b58\u55ae\u4f4d<br><strong>file system<\/strong><br>\u5132\u5b58\u55ae\u4f4d\u662fblock<br>\u4f7f\u7528\u4e0d\u540c\u7684\u8cc7\u6599\u7d50\u69cb\u4f86\u8868\u9054\u6a94\u6848<br>ex:FAT32,NTFS,ext2,ext3, ISO9660,googleFS, oracle ASM,ZFS<br><strong>FCB(file control block)<\/strong><br>\u8a18\u9304\u6a94\u6848\u7684\u8cc7\u8a0a<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p><strong>file system layer<\/strong><br>layer2(user space)<br>\u3000<strong>application programs<\/strong><br>layer1(kernel space)<br>\u3000<strong>logical file system:<\/strong><br>\u3000\u7ba1\u7406metadata information,FCB maintain<br>\u3000diretory structure\u548cprotection<br>\u3000<strong>file-organization module<\/strong><br>\u3000\u7ba1\u7406free space,disk allocation<br>\u3000\u8f49\u63dblogical block address\u5230physical block address<br>\u3000<strong>basic file system:<\/strong><br>\u3000\u8ca0\u8cacscheduling,disk caching,buffering,<br>\u3000buffers\u61c9\u7528\u5728\u8cc7\u6599\u50b3\u8f38,caches\u61c9\u7528\u5728\u8cc7\u6599\u7684\u4f7f\u7528<br>\u3000\u63a7\u5236device\u7684\u6a19\u6e96\u547d\u4ee4,ex:retrieve block 123<br>\u3000<strong>I\/O control:<\/strong><br>\u3000\u8ca0\u8cacdevice driver,interrupt handler, \u7ba1\u7406I\/O devices<br>\u3000\u57f7\u884clow-level I\/O\u547d\u4ee4,ex:read drive1, cylinder 72,track 2, sector 10<br>layer0<br><strong>\u3000devices<\/strong><\/p>\n\n\n\n<p>&#8230;&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2.\u5e38\u898bfile system structures<\/strong><\/h2>\n\n\n\n<p><strong>disk file system structures<\/strong><br>\u4e3b\u8981\u7531\u4ee5\u4e0b\u69cb\u6210<br><strong>boot control block :<\/strong><br>\u5305\u542b\u958b\u6a5f\u8cc7\u8a0a<br><strong>partition(volume) control block\/super block<\/strong><br>\u5305\u542bvolume\u7d30\u7bc0,\u50cf\u662fblocks\u6578\u91cf,\u5927\u5c0f\u548cfree-block\u548cfree-fcb\u7684\u8a08\u7b97<br><strong>directory structure<\/strong><br>\u7528\u4f86organzie files,\u5305\u62ecfile names,\u4e26\u95dc\u806f\u5230FCB<br><strong>file control block<br>data block<\/strong><br>block\u4e00\u822c\u662f512byte<\/p>\n\n\n\n<p><strong>file control block<\/strong><br>\u4e00\u822c\u6703\u5305\u542b\u4ee5\u4e0b\u8cc7\u8a0a<br>file permissions<br>file dates&nbsp;ex:create,access,write<br>file owner,group, ACL<br>file size<br>file data blocks<\/p>\n\n\n\n<p>&#8230;&#8230;<\/p>\n\n\n\n<p><strong>memory file system structures<\/strong><br>\u4e3b\u8981\u7528\u65bc\u63d0\u6607performance<br>\u901a\u5e38\u7531\u4ee5\u4e0b\u69cb\u6210<br><strong>in-memory mount table<\/strong><br>\u5305\u62ec\u6bcf\u4e00\u500b\u5df2\u639b\u8f09\u7684volumen\u8cc7\u8a0a<br><strong>in-memory directory-structure cache<\/strong><br>\u7528\u65bc\u8b80\u53d6,\u4fdd\u5b58\u6700\u8fd1\u5728\u5b58\u53d6\u7684directories<br><strong>system-wide open-file table<\/strong><br>\u7528\u65bc\u5beb\u5165,\u5305\u542b\u6240\u6709\u5df2\u958b\u555f\u6a94\u6848\u7684\u4e00\u4efdFCB\u526f\u672c<br><strong>per-process open-file table<\/strong><br>\u7528\u65bc\u5beb\u5165,\u8ca0\u8cac\u5132\u5b58\u6307\u6a19<br><strong>buffers<\/strong><br>\u7528\u65bc\u8b80\u53d6\u6216\u5beb\u5165file system block<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p><strong>virtual file systems<\/strong><br>\u5141\u8a31\u4e0d\u540c\u7684system call\u4ecb\u9762(API)\u7528\u5728\u4e0d\u540c\u985e\u578b\u7684file system<br>\u7d50\u69cb\u4e3b\u8981\u5982\u4e0b<br>layer2 (user space)<br>\u3000file system interface<br>layer1 (kernel space)<br>\u3000VFS interface<br>\u3000file system:\u5305\u542b\u5404\u7a2efile system<br>\u3000storage:\u5305\u62ecdisk, network disk,&#8230;\u7b49<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3.directory implementation<\/strong><\/h2>\n\n\n\n<p><strong>directory-file\u7d50\u69cb<\/strong><br>\u5927\u81f4\u5982\u4e0b<br>0_empty, filename_a, pointer to FCB1<br>1_used, filename_b, pointer to FCB2<br>2_used, filename_c, pointer to FCB3<br>&#8230;omit&#8230;<\/p>\n\n\n\n<p>directory implementation\u5169\u5927\u505a\u6cd5<br><strong>linear list<\/strong><br>\u3000\u76ee\u9304\u7ba1\u7406\u65b9\u4fbf<br>\u3000\u5be6\u4f5c\u5bb9\u6613<br>\u3000search\u901f\u5ea6\u6162<br><strong>hash table<\/strong><br>\u3000\u4ee5key\u505a\u6a94\u540d<br>\u3000search\u901f\u5ea6\u5feb<br>\u3000\u53ef\u80fd\u767c\u751fcollisions(\u78b0\u649e\u554f\u984c)<br>\u3000hash table\u5927\u5c0f\u56fa\u5b9a\uff0c\u8b8a\u5927\u6642\u8981\u53e6\u5916\u505arehashing\u8655\u7406<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4.allocation methods<\/strong><\/h2>\n\n\n\n<p>\u7a7a\u9593\u5206\u914d,\u4e5f\u7a31disk blocks<br>\u4e3b\u8981\u6709\u4e09\u5927\u65b9\u6cd5<br>\u3000contiguous allocation(\u9023\u7e8c\u5f0f\u7a7a\u9593\u5206\u914d)<br>\u3000linked allocation<br>\u3000indexed allocation<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p><strong>contiguous allocation \u3000<\/strong><br>\u6bcf\u500b\u6a94\u6848\u90fd\u6703\u4f54\u7528\u4e00\u7d44disk\u4e0a\u7684\u9023\u7e8c\u7a7a\u9593<br>\u512a\u9ede<br>\u3000\u5b58\u53d6\u901f\u5ea6\u5feb , support random access<br>\u7f3a\u9ede<br>\u3000\u6703\u6709external fragmentation,\u8981\u53e6\u5916\u82b1\u6642\u9593compacts(\u91cd\u65b0\u805a\u96c6)\u4ee5\u7a7a\u51fa\u53ef\u4f7f\u7528\u7684\u9023\u7e8c\u7a7a\u9593<br>\u3000\u5efa\u7acb\u6a94\u6848\u6642\u8981\u5224\u65b7\u9700\u8981\u4fdd\u7559\u591a\u5c11\u7a7a\u9593\uff0c\u592a\u5c0f\u7121\u6cd5\u64f4\u5145\uff0c\u592a\u5927\u6d6a\u8cbb\u7a7a\u9593<br>logical address\u70ba1024<br>ex:IBM\u7684VM\/CMS<\/p>\n\n\n\n<p><strong>contiguous allocation directory\u7d50\u69cb<\/strong><br>\u5927\u81f4\u5982\u4e0b<br>file1, start 0, length 4<br>file2, start 6, length 2<br>&#8230;omit&#8230;<\/p>\n\n\n\n<p>&#8230;.<\/p>\n\n\n\n<p><strong>linked allocation<\/strong><br>\u6bcf\u500b\u6a94\u6848\u90fd\u662fdisk\u4e0a\u7684linked list, \u9760\u6307\u6a19\u4f86\u4e32\u63a5<br>\u512a\u9ede<br>\u3000\u7121external fragmentaion<br>\u3000\u5efa\u7acb\u6a94\u6848\u6642\u4e0d\u7528\u7169\u8166\u8981\u4fdd\u7559\u591a\u5c11\u7a7a\u9593\u7684\u554f\u984c\uff0c\u7a7a\u9593\u6548\u7387\u597d<br>\u7f3a\u9ede<br>\u3000\u6307\u6a19\u79fb\u52d5\u6642\uff0c\u82e5\u8ddd\u96e2\u904e\u9060\uff0c\u8b80\u5beb\u982d\u79fb\u52d5\u8f03\u983b\u7e41\uff0c\u8b80\u53d6\u6703\u8f03\u6d6a\u8cbb\u6642\u9593<br>\u3000not support random access<br>\u3000reliability low: \u82e5\u5176\u4e2d\u4e00\u500b\u6307\u6a19\u6d88\u5931\uff0c\u6574\u500blinked\u6703\u65b7\u6389\uff0c\u9664\u975e\u7528double linked list\u89e3\u6c7a<br>\u3000\u6307\u6a19\u6703\u4f54\u7528\u5230\u7a7a\u9593<br>logical address\u70ba1020,\u56e0\u70ba\u8981\u4fdd\u75594\u500bbyte\u505a\u6307\u6a19<\/p>\n\n\n\n<p><strong>linked allocation directory\u7d50\u69cb<\/strong><br>\u5927\u81f4\u5982\u4e0b<br>file, start, end<br>file1, start 2, end 10 \/\/\u6839\u64dablock2\u5c0b\u627e\u4e0b\u4e00\u500bblcok<br>&#8230;omit&#8230;<br>ps:<br><strong>linked\u8cc7\u8a0a\u5132\u5b58\u5728block<\/strong><br>\u6bcf\u500bblock\u6703\u6839\u64dalinked\u8cc7\u8a0a\u627e\u5230\u4e0b\u4e00\u500bblock\u4f4d\u7f6e<br>\u5927\u81f4\u5982\u4e0b<br>block2:16<br>block16:1<br>block1:10<br>block10:-1<\/p>\n\n\n\n<p><br><strong>FAT(file allocation table)<\/strong><br>based on linkd allocation<br>keep 2 fat on disk,\u4e00\u500b\u662f\u539f\u672c\u7684linked allocation directory,\u53e6\u4e00\u500b\u8a18\u9304block\u7684linked\u8cc7\u8a0a<br>\u512a\u9ede<br>\u3000support random access<br>\u3000improve reliability:<br>\u61c9\u7528\u5728\u5fae\u8edf\u7684file system,\u50cf\u662fFAT12,16,32<br>\u3000\u6578\u5b57\u8868\u793atable\u53ef\u652f\u63f4\u7684\u9805\u76ee\u6578\u91cf<br>\u3000ex:FAT32=8kb*2^32=33tb<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p><strong>indexed allocation<\/strong><br>\u628a\u6240\u6709\u6307\u6a19\u96c6\u4e2d\u8d77\u4f86\u653e\u5728index block<br>index block\u53ef\u4ee5\u5feb\u53d6\u65b9\u5f0f\u5b58\u5728memory,\u4f46\u8cc7\u6599\u5340\u6bb5\u4ecd\u7136\u6563\u4f48\u5728disk\u7684\u5404\u5730\u65b9<br>\u512a\u9ede<br>\u3000\u652f\u63f4random access<br>\u3000\u7121external fragentation<br>\u7f3a\u9ede<br>\u3000\u4f46\u8981\u53e6\u5916\u6e96\u5099\u7a7a\u9593\u5b58index table\uff0c\u6bd4linked allocation\u9084\u8981\u591a<br>\u3000\u6703\u6709index block\u4e0d\u5920\u7684\u554f\u984c<br>logical address\u70ba1024<\/p>\n\n\n\n<p><strong>indexed allocation directory\u7d50\u69cb<\/strong><br>\u5927\u81f4\u5982\u4e0b<br>file , index block<br>paper, 19 \/\/\u5728\u7b2c19\u500bblock\u6703\u8a18\u8f09\u6240\u6709\u8a72\u6a94\u6848\u7684block<br>&#8230;omit&#8230;<\/p>\n\n\n\n<p><strong>file size of unbounded length<\/strong><br>\u89e3\u6c7a\u4e00\u500b\u6a94\u6848\u4e00\u500bindex block\u4e0d\u5920\u7684\u554f\u984c<br>\u4e3b\u8981\u6709\u4e09\u7a2e\u65b9\u5f0f<br>\u3000linked scheme<br>\u3000multi-level index:&nbsp;ex:two-level index<br>\u3000combined scheme&nbsp;ex: UNIX i-node<\/p>\n\n\n\n<p><strong>multi-level index<\/strong><br>\u82e5\u4f7f\u75284kb\u7684block,\u53ef\u4ee5\u5132\u5b581024\u500b4byte\u6307\u6a19<br>\u82e5\u662ftwo-level index\uff0c\u5247\u53ef\u4ee5\u5132\u5b581024^2\u500b4byte\u6307\u6a19<\/p>\n\n\n\n<p><strong>combined scheme<\/strong><br>\u4f7f\u752815\u500bindex\u5982\u4e0b<br>direct blocks(\u76f4\u63a5\u5340\u6bb5)\uff1a\u4f7f\u752812\u500bindex<br>\u3000\u8a18\u8f09\u8a72\u6a94\u6848\u7684block<br>\u3000\u82e5\u4e00\u500bblock\u70ba4kb,\u90a3\u5c31\u670948kb\u7684\u8cc7\u6599\u53ef\u76f4\u63a5\u5b58\u53d6<br>inderect block(\u9593\u63a5\u5340\u6bb5)<br>\u3000\u8a18\u8f09\u6a94\u6848block\u7684\u4f4d\u7f6e,\u4e26\u5206\u70ba\u4ee5\u4e0b<br>\u3000single indirect block(\u55ae\u5c64\u9593\u63a5\u5340\u6bb5)\uff1a\u4f7f\u75281\u500bindex<br>\u3000double indirect block(\u96d9\u5c64\u9593\u63a5\u5340\u6bb5)\uff1a\u4f7f\u75281\u500bindex<br>\u3000triple indirect block(\u4e09\u5c64\u9593\u63a5\u5340\u6bb5)\uff1a\u4f7f\u75281\u500bindex<\/p>\n\n\n\n<p><br>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5.\u5176\u4ed6\u88dc\u5145<\/strong><\/h2>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n\n\n\n<p><br>free-space management<br>\u4e3b\u8981\u4f7f\u7528\u65b9\u6cd5\u6709<br>\u3000bit\/vector<br>\u3000linked free space list<\/p>\n\n\n\n<p><strong>bit vector\/bit map<\/strong><br>\u6548\u7387\u9ad8,\u4f46\u8981\u984d\u5916\u4f54\u4e3b\u8a18\u61b6\u9ad4\u7a7a\u9593<br>\u7528\u4f86\u8868\u793ablock\u70bafree\u6216occupied<br>\u4e3b\u8981\u653e\u5165memory\u4e26\u5728\u95dc\u6a5f\u6642\u5beb\u5165disk\u4fdd\u5b58<br>ex:<br>bit map\u5927\u5c0f?<br>block size=2^12 bytes<br>disk size=2^30 byte<br>bit map\u5927\u5c0f=2^30\/2^12=2^18 bits(32KB)<\/p>\n\n\n\n<p><strong>linked free space list<\/strong><br>\u6548\u7387\u5dee,\u8f03\u96e3\u53d6\u5f97\u9023\u7e8c\u7a7a\u9593<br>\u7c21\u7701\u7a7a\u9593<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n\n\n\n<p><strong>efficiency \u7a7a\u9593\u5229\u7528\u7387<\/strong><br>\u53d6\u6c7a\u65bc<br>allocation methods<br>directory algorithms<\/p>\n\n\n\n<p><strong>performance \u6548\u80fd<\/strong><br>\u53d6\u6c7a\u65bc<br>disk cache<br>free-behind\u548cread -ahead:\u4e00\u7a2e\u52a0\u901f\u9023\u7e8c\u5b58\u53d6\u7684\u6280\u8853<br>virtual disk\/RAM disk<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<\/p>\n\n\n\n<p><strong>log structured file systems<\/strong><br>\u6703\u5c07\u6bcf\u500b\u5c0d\u6a94\u6848\u7cfb\u7d71\u7684\u52d5\u4f5c\u8996\u70ba\u4e00\u500btransactions,\u6240\u6709transactions\u88ab\u5beb\u5230log<br>\u82e5\u6a94\u6848\u7cfb\u7d71crash,\u9019\u7a2e\u6a94\u6848\u7cfb\u7d71\u5fa9\u539f\u6700\u5feb<br>ex:ntfs, ext3<\/p>\n\n\n\n<p>&#8230;<\/p>\n\n\n\n<p><strong>network file systems\/sun nfs<\/strong><br>\u7528\u65bc\u5b58\u53d6\u9060\u7aef\u6a94\u6848\u7684file system<br>\u9060\u7aef\u76ee\u9304\u53ef\u88ab\u639b\u8f09\u672c\u5730file system\u76ee\u9304<\/p>\n\n\n\n<p><strong>NFS architecture<\/strong><br>unix file-system interface:open,read,write,&#8230;\u7b49<br>VFS(virtual file system) layer: \u547c\u53ebnfs protocol procedures<br>NFS service layer:\u5be6\u4f5cnfs protocol<\/p>\n\n\n\n<p><strong>nfs protocol<\/strong><br>\u5c6c\u65bcrpc(remote procedure calls),\u5de5\u4f5c\u5305\u62ecsearching,reading,&#8230;\u7b49<br>NFS servers\u5c6c\u65bcstateless,\u4f46\u5728v4\u7248\u672c\u70bastateful<br>\u4e3b\u8981\u4f7f\u7528udp\/ip<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<\/p>\n\n\n\n<p>6.popular filesysem<\/p>\n\n\n\n<p><strong>Windows<\/strong><br>\u3000FAT(12,16,32)<br>\u3000<a href=\"https:\/\/systw.net\/note\/af\/sblog\/more.php?id=300\">https:\/\/systw.net\/note\/af\/sblog\/more.php?id=300<\/a><br>\u3000NTFS, journal file system, unicode<br>\u3000<a href=\"https:\/\/systw.net\/note\/af\/sblog\/more.php?id=301\">https:\/\/systw.net\/note\/af\/sblog\/more.php?id=301<\/a><br><strong>Linux<\/strong><br>\u3000ext2, not journal file system<br>\u3000ext3, journal file system<br><strong>Mac OS X(based on BSD unix)<\/strong><br>\u3000HFS,&nbsp;filename encoding in macroman<br>\u3000HFS plus, filename encoding in unicode, journal file system<br><strong>Sun Solaris 10<\/strong><br>\u3000ZFS, supporting multiple HD combination&nbsp;<\/p>\n\n\n\n<p>ps<br><strong>tool for file system analysis<\/strong><br>sleuth kit<br>FTK imager<br>disk editor&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.\u6982\u5ff5 file system structrue\u4e3b\u8981\u5305\u62ec &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[22],"tags":[],"class_list":["post-704","post","type-post","status-publish","format-standard","hentry","category-operationsystem"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=704"}],"version-history":[{"count":0,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/704\/revisions"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}