changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > docs / annotate nas-t/notes.org

changeset 28: a0017112db77
parent: bb51c61e4d4b
author: Richard Westhaver <ellis@rwest.io>
date: Thu, 06 Jun 2024 23:15:50 -0400
permissions: -rw-r--r--
description: style update
28
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
1
 #+title: notes
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
2
 #+author: Richard Westhaver
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
3
 #+email: ellis@rwest.io
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
4
 #+description: NAS-T Notes
a0017112db77 style update
Richard Westhaver <ellis@rwest.io>
parents: 5
diff changeset
5
 #+setupfile: ../../clean.theme
3
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
6
 #+BIBLIOGRAPHY: refs.bib
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
7
 * File Systems
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
8
 ** BTRFS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
9
 #+begin_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
10
 BTRFS is a Linux filesystem based on copy-on-write, allowing for
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
11
 efficient snapshots and clones.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
12
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
13
 It uses B-trees as its main on-disk data structure. The design goal is
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
14
 to work well for many use cases and workloads. To this end, much
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
15
 effort has been directed to maintaining even performance as the
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
16
 filesystem ages, rather than trying to support a particular narrow
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
17
 benchmark use-case.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
18
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
19
 Linux filesystems are installed on smartphones as well as enterprise
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
20
 servers. This entails challenges on many different fronts.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
21
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
22
 - Scalability :: The filesystem must scale in many dimensions: disk
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
23
   space, memory, and CPUs.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
24
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
25
 - Data integrity :: Losing data is not an option, and much effort is
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
26
   expended to safeguard the content. This includes checksums, metadata
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
27
   duplication, and RAID support built into the filesystem.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
28
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
29
 - Disk diversity :: The system should work well with SSDs and hard
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
30
   disks. It is also expected to be able to use an array of different
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
31
   sized disks, which poses challenges to the RAID and striping
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
32
   mechanisms.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
33
 #+end_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
34
 -- [cite/t/f:@btrfs]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
35
 *** [2023-08-08 Tue] btrfs performance speculation ::
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
36
   - [[https://www.percona.com/blog/taking-a-look-at-btrfs-for-mysql/]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
37
     - zfs outperforms immensely, but potential misconfiguration on btrfs side (virt+cow
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
38
       still enabled?)
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
39
   - https://www.ctrl.blog/entry/btrfs-vs-ext4-performance.html
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
40
     - see the follow up comment on this post
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
41
       - https://www.reddit.com/r/archlinux/comments/o2gc42/is_the_performance_hit_of_btrfs_serious_is_it/
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
42
             #+begin_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
43
       I’m the author of OP’s first link. I use BtrFS today. I often shift lots of
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
44
       de-duplicatable data around, and benefit greatly from file cloning. The data is actually
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
45
       the same data that caused the slow performance in the article. BtrFS and file cloning
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
46
       now performs this task quicker than a traditional file system. (Hm. It’s time for a
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
47
       follow-up article.)
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
48
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
49
       In a laptop with one drive: it doesn’t matter too much unless you do work that benefit
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
50
       from file cloning or snapshots. This will likely require you to adjust your tooling and
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
51
       workflow. I’ve had to rewrite the software I use every day to make it take advantage of
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
52
       the capabilities of a more modern file system. You won’t benefit much from the data
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
53
       recovery and redundancy features unless you’ve got two storage drives in your laptop and
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
54
       can setup redundant data copies.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
55
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
56
           on similar hardware to mine?
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
57
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
58
       It’s not a question about your hardware as much as how you use it. The bad performance I
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
59
       documented was related to lots and lots of simultaneous random reads and writes. This
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
60
       might not be representative of how you use your computer.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
61
             #+end_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
62
   - https://dl.acm.org/doi/fullHtml/10.1145/3386362
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
63
     - this is about distributed file systems (in this case Ceph) - they argue against
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
64
       basing DFS on ondisk-format filesystems (XFS ext4) - developed BlueStore as
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
65
       backend, which runs directly on raw storage hardware.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
66
     - this is a good approach, but expensive (2 years in development) and risky
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
67
     - better approach is to take advantage of a powerful enough existing ondisk-FS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
68
       format and pair it with supporting modules which abstract away the 'distributed'
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
69
       mechanics.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
70
     - the strategy presented here is critical for enterprise-grade hardware where the
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
71
       ondisk filesystem becomes the bottleneck that you're looking to optimize
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
72
   - https://lore.kernel.org/lkml/cover.1676908729.git.dsterba@suse.com/
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
73
     - linux 6.3 patch by David Sterba [2023-02-20 Mon]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
74
     - btrfs continues to show improvements in the linux kernel, ironing out the kinks
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
75
     - makes it hard to compare benchmarks tho :/
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
76
 *** MacOS support
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
77
 - see this WIP k-ext for macos: [[https://github.com/relalis/macos-btrfs][macos-btrfs]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
78
   - maybe we can help out with the VFS/mount support
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
79
 *** on-disk format
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
80
 - [[https://btrfs.readthedocs.io/en/latest/dev/On-disk-format.html][on-disk-format]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
81
 - 'btrfs consists entirely of several trees. the trees use copy-on-write.'
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
82
 - trees are stored in nodes which belong to a level in the b-tree structure.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
83
 - internal nodes (inodes) contain refs to other inodes on the /next/ level OR
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
84
   - to leaf nodes then the level reaches 0.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
85
 - leaf nodes contain various types depending on the tree.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
86
 - basic structures
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
87
   - 0:8 uint = objectid, each tree has its own set of object IDs
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
88
   - 8:1 uint = item type
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
89
   - 9:8 uint = offset, depends on type.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
90
   - little-endian
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
91
   - fields are unsigned
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
92
   - *superblock*
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
93
     - primary superblock is located at 0x10000 (64KiB)
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
94
     - Mirror copies of the superblock are located at physical addresses 0x4000000 (64
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
95
       MiB) and 0x4000000000 (256GiB), if valid. copies are updated simultaneously.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
96
     - during mount only the first super block at 0x10000 is read, error causes mount to
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
97
       fail.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
98
     - BTRFS onls recognizes disks with a valid 0x10000 superblock.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
99
   - *header*
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
100
     - stored at the start of every inode
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
101
     - data following it depends on whether it is an internal or leaf node.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
102
   - *inode*
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
103
     - node header followed by a number of key pointers
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
104
     - 0:11 key
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
105
     - 11:8 uint = block number
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
106
     - 19:8 uint = generation
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
107
   - *lnode*
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
108
     - leaf nodes contain header followed by key pointers
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
109
     - 0:11 key
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
110
     - 11:4 uint = data offset relative to end of header(65)
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
111
     - 15:4 uint = data size
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
112
 - objects
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
113
   - ROOT_TREE
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
114
     - holds ROOT_ITEMs, ROOT_REFs, and ROOT_BACKREFs for every tree other than itself.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
115
     - used to find the other trees and to determine the subvol structure.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
116
     - holds items for the 'root tree directory'. laddr is store in the superblock
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
117
   - objectIDs
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
118
     - free ids: BTRFS_FIRST_FREE_OBJECTID=256ULL:BTRFS_LAST_FREE_OBJECTID=-256ULL
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
119
     - otherwise used for internal use
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
120
 *** send-stream format
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
121
 - [[https://btrfs.readthedocs.io/en/latest/dev/dev-send-stream.html][send stream format]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
122
 - Send stream format represents a linear sequence of commands describing actions to be
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
123
   performed on the target filesystem (receive side), created on the source filesystem
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
124
   (send side).
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
125
 - The stream is currently used in two ways: to generate a stream representing a
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
126
   standalone subvolume (full mode) or a difference between two snapshots of the same
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
127
   subvolume (incremental mode).
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
128
 - The stream can be generated using a set of other subvolumes to look for extent
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
129
   references that could lead to a more efficient stream by transferring only the
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
130
   references and not full data.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
131
 - The stream format is abstracted from on-disk structures (though it may share some
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
132
   BTRFS specifics), the stream instructions could be generated by other means than the
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
133
   send ioctl.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
134
 - it's a checksum+TLV
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
135
 - header: u32len,u16cmd,u32crc32c
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
136
 - data: type,length,raw data
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
137
 - the v2 protocol supports the encoded commands
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
138
 - the commands are kinda clunky - need to MKFIL/MKDIR then RENAM to create
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
139
 *** [2023-08-09 Wed] ioctls
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
140
 - magic#: 0x94 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
141
   - https://docs.kernel.org/userspace-api/ioctl/ioctl-number.html
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
142
   - Btrfs filesystem some lifted to vfs/generic
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
143
   - fs/btrfs/ioctl.h and linux/fs.h
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
144
 ** ZFS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
145
 -- [cite/t/f:@zfs]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
146
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
147
 - core component of TrueNAS software
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
148
 ** TMPFS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
149
 -- [cite/t/f:@tmpfs]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
150
 - in-mem FS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
151
 ** EXT4
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
152
 -- [cite/t/f:@ext4]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
153
 ** XFS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
154
 -- [cite/t/f:@xfs]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
155
 -- [cite/t/f:@xfs-scalability]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
156
 * Storage Mediums
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
157
 ** HDD
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
158
 -- [cite/t/f:@hd-failure-ml]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
159
 ** SSD
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
160
 -- [cite/t/f:@smart-ssd-qp]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
161
 -- [cite/t/f:@ssd-perf-opt]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
162
 
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
163
 ** Flash
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
164
 -- [cite/t/f:@flash-openssd-systems]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
165
 ** NVMe
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
166
 -- [cite/t/f:@nvme-ssd-ux]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
167
 -- [[https://nvmexpress.org/specifications/][specifications]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
168
 *** ZNS
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
169
 -- [cite/t/f:@zns-usenix]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
170
 #+begin_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
171
 Zoned Storage is an open source, standards-based initiative to enable data centers to
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
172
 scale efficiently for the zettabyte storage capacity era. There are two technologies
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
173
 behind Zoned Storage, Shingled Magnetic Recording (SMR) in ATA/SCSI HDDs and Zoned
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
174
 Namespaces (ZNS) in NVMe SSDs.
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
175
 #+end_quote
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
176
 -- [[https://zonedstorage.io/][zonedstorage.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
177
 -- $465 8tb 2.5"? [[https://www.serversupply.com/SSD/PCI-E/7.68TB/WESTERN%20DIGITAL/WUS4BB076D7P3E3_332270.htm][retail]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
178
 ** eMMC
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
179
 -- [cite/t/f:@emmc-mobile-io]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
180
 * Linux
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
181
 ** syscalls
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
182
 *** ioctl
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
183
 - [[https://elixir.bootlin.com/linux/latest/source/Documentation/userspace-api/ioctl/ioctl-number.rst][ioctl-numbers]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
184
 * Rust
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
185
 ** crates
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
186
 *** nix
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
187
 - [[https://crates.io/crates/nix][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
188
 *** memmap2
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
189
 - [[https://crates.io/crates/memmap2][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
190
 *** zstd
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
191
 - [[https://crates.io/crates/zstd][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
192
 *** rocksdb
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
193
 - [[https://crates.io/crates/rocksdb][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
194
 *** tokio                                                           :tokio:
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
195
 - [[https://crates.io/crates/tokio][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
196
 *** tracing                                                         :tokio:
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
197
 - [[https://crates.io/crates/tracing][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
198
 **** tracing-subscriber
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
199
 - [[https://crates.io/crates/tracing-subscriber][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
200
 *** axum                                                            :tokio:
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
201
 - [[https://crates.io/crates/axum][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
202
 *** tower                                                           :tokio:
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
203
 - [[https://crates.io/crates/tower][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
204
 *** uuid
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
205
 - [[https://crates.io/crates/uuid][crates.io]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
206
 ** unstable
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
207
 *** lazy_cell
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
208
 - [[https://github.com/rust-lang/rust/issues/109736][tracking-issue]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
209
 *** {BTreeMap,BTreeSet}::extract_if
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
210
 - [[https://github.com/rust-lang/rust/issues/70530][tracking-issue]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
211
 * Lisp
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
212
 ** ASDF
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
213
 - [[https://gitlab.common-lisp.net/asdf/asdf][gitlab.common-lisp.net]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
214
 - [[https://asdf.common-lisp.dev/][common-lisp.dev]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
215
 - [[https://github.com/fare/asdf/blob/master/doc/best_practices.md][best-practices]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
216
 - includes UIOP
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
217
 ** Reference Projects
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
218
 *** StumpWM
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
219
 - [[https://github.com/stumpwm/stumpwm][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
220
 *** Nyxt
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
221
 - [[https://github.com/atlas-engineer/nyxt][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
222
 *** Kons-9
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
223
 - [[https://github.com/kaveh808/kons-9][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
224
 *** cl-torrents
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
225
 - [[https://github.com/vindarel/cl-torrents][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
226
 *** Mezzano
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
227
 - [[https://github.com/froggey/Mezzano][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
228
 *** yalo
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
229
 - [[https://github.com/whily/yalo][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
230
 *** cl-ledger
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
231
 - [[https://github.com/ledger/cl-ledger][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
232
 *** Lem
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
233
 - [[https://github.com/lem-project/lem][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
234
 *** kindista
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
235
 - [[https://github.com/kindista/kindista][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
236
 *** lisp-chat
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
237
 - [[https://github.com/ryukinix/lisp-chat][github]]
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
238
 * Refs
bd85a72319d8 migrated nas-t docs
ellis <ellis@rwest.io>
parents:
diff changeset
239
 #+print_bibliography: