CSE290-A: Modern Storage Systems
This course will cover a range of topics related to modern storage systems, including storage hardware, storage arrays, system firmware and software, storage reliability, storage performance, and the interaction between storage and applications.
The course will involve a lot of paper reading and in-class discussion. There will be an implementation-based project. You will work in pairs.
Slides
Slides are available here. You’ll need to be logged in via your @eng google account.
Grading
You must register for four units.
Grading will work like so:
- Paper summaries: 30%
- Class participation: 30%
- Project: 20%
- Final: 20%
Logistics
The course meets Tuesdays and Thursdays from 2:00-3:20 in CSE4258.
Office hours are by appointment in CSE3212. Good times to schedule office hours are Wednesdays and Thursdays 2-4.
The final is December 12th at 3pm in the same room we meet in.
Project
For the project, you will join the most recent storage system revolution and building a fast, scalable, crash-consistent persistent memory data structure — namely a key-value store.
We will provide an interface, test harness, and programming tools. You’ll build the fastest, most robust persistent memory KV store you can.
We’ll evaluate the your KV store based on performance, crash consistency, and the quality of your write up about how you achieved such amazing performance.
Paper Reviews
Use this form to submit paper reviews. You’ll need to log in with your @eng account. Reviews are due at 9am the day of class.
Reading Schedule
To access many of the papers, you’ll need to be on campus or connect via the campus VPN.
You can download the slides here (login with your @eng account).
The schedule below is listed by class #. The course schedule show which classes occur on which days.
Class 1: Introduction and metrics
Class 2: Hard Drives, Singular and Plural (HDD1)
Readings
Class 3: Hard drive reliability
Readings
Class 4: Flash Memory and SSDs I
Readings
Class 5: Flash Memory and SSDs II
Readings
The NVMe Spec: https://drive.google.com/drive/folders/1Adw3ww2lu6INfs_y5Hx-qz2qK1cBbLfh?ths=true
Sections 1-1.4, 1.6, 4-4.2, 4.6, and 7.1-7.2.4, 7.5 (but not subsections),
Class 6: Flash Reliability
Readings
Class 7: Fast Non-Volatile Memories
Readings
Class 8: File Systems
Readings
Operating Systems: Three Easy Pieces. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. March 2015.
Chapter 39 (Files and Directories): available here.
Chapter 40 (File System Implementation): available here.
Class 9: File Systems for Disk I
Readings
Operating Systems: Three Easy Pieces. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. March 2015.
Chapter 41 (The Fast File System): available here.
Chapter 42 (FSCK and Journaling): available here.
Class 10 File Systems for Disks II
Readings
Read the second paper first.
Class 11: Log Structured File Systems
Operating Systems: Three Easy Pieces. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. March 2015.
Chapter 43: Log structured File systems: http://pages.cs.wisc.edu/~remzi/OSTEP/file-lfs.pdf
Class 12: File Systems for New Technologies
Paper about JFFS: http://sources.redhat.com/jffs2/jffs2.pdf
Class 13: Remote and Distributed File Systems/Storage I
Operating Systems: Three Easy Pieces. Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. March 2015.
Chapter 48: Sun’s Network File System: http://pages.cs.wisc.edu/~remzi/OSTEP/dist-nfs.pdf
Class 14: Remote and Distributed File Systems/Storage II
Optional, but interesting: https://www.usenix.org/system/files/login/articles/login_summer16_08_bent.pdf
Class 15: Remote and Distributed File Systems/Storage III
Read these two to slide decks (they are all I can find about Colossus) and the GPFS paper from last week.
https://swanson.ucsd.edu/MSS-data/PDSW-DISCS-Google-Keynote.pdf
https://swanson.ucsd.edu/MSS-data/storage_architecture_and_challenges.pdf