# Storage

## AWS Instance Stores

* Block-level storage volumes behave like physical hard drives.
* An instance store provides **temporary** block-level storage for an Amazon EC2 instance. An instance store is disk storage that is physically attached to the host computer for an EC2 instance, and therefore has the same lifespan as the instance. When the instance is terminated, you lose any data in the instance store.
* Amazon EC2 instances are virtual servers. If you start an instance from a stopped state, the instance might start on another host, where the previously used instance store volume does not exist. Therefore, AWS recommends instance stores for use cases that involve temporary data that you do not need in the long term.

## Amazon Elastic Block Store (Amazon EBS)

* Amazon Elastic Block Store (Amazon EBS) is a availability-zone service that provides block-level storage volumes that you can use with Amazon EC2 instances. If you stop or terminate an Amazon EC2 instance, all the data on the attached EBS volume remains available.
* To create an EBS volume, you define the configuration (such as volume size and type) and provision it. After you create an EBS volume, it can be attached to an Amazon EC2 instance.
* Because EBS volumes are for data that needs to persisted, it’s important to back up the data. You can take **incremental backups of EBS volumes by creating Amazon EBS snapshots**.
* Its a volume, so it does not automatically scale.

### EBS Snapshots

* An EBS snapshot is an incremental backup. This means that the first backup taken of a volume copies all the data. For subsequent backups, only the blocks of data that have changed (delta updates) since the most recent snapshot are saved.
* Incremental backups are different from full backups, in which all the data in a storage volume copies each time a backup occurs. The full backup includes data that has not changed since the most recent backup.

![EBS SnapShot Diagram](https://574639531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJDnjsv52I3fJ56WbLgHu%2Fuploads%2Fgit-blob-e86609528cd760e318f0cae94abc72d7894a1b62%2FEBSSnapshot.png?alt=media)

## Object Storage

* In object storage, each object consists of data, metadata, and a key.
* The data might be an image, video, text document, or any other type of file. Metadata contains information about what the data is, how it is used, the object size, and so on. An object’s key is its unique identifier.

![Object Storage](https://574639531-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJDnjsv52I3fJ56WbLgHu%2Fuploads%2Fgit-blob-cfb3bc203ca472fd9bb1c770a6f197956e37ce37%2FObjectStorage.png?alt=media)

> Recall that when you modify a file in block storage, only the pieces that are changed are updated. When a file in object storage is modified, the entire object is updated.

## Amazon Simple Storage Service (S3)

* Amazon Simple Storage Service (Amazon S3) is a service that provides object-level storage. Amazon S3 stores data as objects in buckets.
* It is regionally distributed.
* **Supports versioning**, which means when an object is changed, then entire object is uploaded rather than only changes.
* You can upload any type of file to Amazon S3, such as images, videos, text files, and so on. For example, you might use Amazon S3 to store backup files, media files for a website, or archived documents. Amazon S3 offers unlimited storage space. The maximum file size for an object in Amazon S3 is **5 TB**.
* When you upload a file to Amazon S3, you can set permissions to control visibility and access to it. You can also use the Amazon S3 versioning feature to track changes to your objects over time.

### Amazon S3 Storage classes

* You can choose from a range of storage classes to select a fit for your business and cost needs.
* When selecting an Amazon S3 storage class, consider these two factors:
  * How often you plan to retrieve your data.
  * How available you need your data to be.

#### S3 Standard

* Designed for frequently accessed data, with 99.999999999% durability *(also known as eleven 9's of durability)*.
* Stores data in a minimum of **three Availability Zones** and hence can sustain two concurrent AWS facilty failures.
* Used for frequently access data and provides high throughput and low latency.
* S3 Standard provides high availability for objects. This makes it a good choice for a wide range of use cases, such as websites, content distribution, and data analytics.
* S3 Standard has a higher cost than other storage classes intended for infrequently accessed data and archival storage.

#### S3 Standard-Infrequent Access (S3 Standard-IA)

* Ideal for infrequently accessed data.
* Similar to S3 Standard but has a lower storage price and higher retrieval price.
* S3 Standard-IA is ideal for data **infrequently accessed** but requires **high availability** when needed. Both S3 Standard and S3 Standard-IA store data in a minimum of three Availability Zones. S3 Standard-IA provides the same level of availability as S3 Standard but with a lower storage price and a higher retrieval price.
* Minimum storage duration is 30 days.

#### S3 One Zone-Infrequent Access (S3 One Zone-IA)

* Stores data in a single Availability Zone.
* Has a lower storage price than S3 Standard-IA.
* Compared to S3 Standard and S3 Standard-IA, which store data in a minimum of three Availability Zones, **S3 One Zone-IA stores data in a single Availability Zone**.
* This makes it a good storage class to consider if the following conditions apply:
  * You want to save costs on storage.
  * You can easily reproduce your data in the event of an Availability Zone failure.
* Minimum storage duration is 30 days.

#### S3 Glacier

* Low-cost storage designed for data archiving/backup.
* Able to retrieve objects within a few minutes to hours.
* S3 Glacier is a low-cost storage class that is **ideal for data archiving**. For example, you might use this storage class to store archived customer records or older photos and video files.

**S3 Glacier Instant Retrieval**

* Provides milliseconds retrieval, for data accessed once a quarter.
* Minimum storage duration is 90 days.

**S3 Glacier Flexible Retrieval**

* Has 3 Flexible options
  * Expedited
    * Will provide data in 1 and 5 minutes.
  * Standard
    * Will provide data in 3-5 hours.
  * Bulk
    * Will provide data in 5-12 hours.
    * Retrieval is free.
* Minimum storage duration is 90 days.

**S3 Glacier Deep Archive**

* Lowest-cost object storage class ideal for archiving.
* Has 2 Flexible options
  * Standard
    * Will provide data in 12 hours
  * Bulk
    * Will provide data in 48 hours
* Minimum storage duration is 180 days.

> Note: When deciding between Amazon S3 Glacier and Amazon S3 Glacier Deep Archive, consider how quickly you need to retrieve archived objects. You can retrieve objects stored in the **S3 Glacier storage** class **within a few minutes to a few hours**. By comparison, you can retrieve objects stored in the **S3 Glacier Deep Archive storage** class within **12-48 hours**.

> More on AWS S3 cloud storage classes can be found [here](https://aws.amazon.com/s3/storage-classes/).

#### S3 Intelligent-Tiering

* Ideal for data with unknown or changing access patterns.
* Requires a small monthly monitoring and auto tiering fee per object
* There are no retrieval charges in S3 intelligent-tiering.
* In the S3 Intelligent-Tiering storage class, Amazon S3 monitors objects’ access patterns.
  * If you haven’t accessed an object for 30 consecutive days, Amazon S3 automatically moves it to the **infrequent access tier**, S3 Standard-IA.
  * If you access an object in the infrequent access tier, Amazon S3 automatically moves it to the **frequent access tier**, S3 Standard.
* Following tiers are present in this option, based on days the object has not been accessed.
  * Frequent Access tier , *(default)*, automatic
  * Infrequent Access tier, > 30 days, automatic
  * Archive Instant Access tier, > 90 days, automatic
  * Archive Access tier, >= 90 < 700+ days. Note, days are configurable. Optional
  * Deep Archive Access tier, >=180 < 700+ days. Note, days are configurable. Optional

## Difference between Amazon S3 and Amazon EBS

| Feature                               | Elastic Block Storage                                               | Amazon Simple Storage Service                                           |
| ------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| Size                                  | Up to 16 TiB each                                                   | Unlimited storage with up to 5 TiB per object                           |
| Capability to survive EC2 Termination | Yes                                                                 | Yes                                                                     |
| Solid State Drives                    | Yes                                                                 | Yes                                                                     |
| Supports HDD option                   | Yes                                                                 | Yes                                                                     |
| Read-Write Support                    | Complex read write operations supported, with many writes and reads | Write Once Read Many (WORM) specialization, supports occasional changes |
| Eleven 9's of durability              | No                                                                  | Yes                                                                     |
| Regionally distributed                | No, Availability Zone resource                                      | Yes                                                                     |
| Web enabled                           | No                                                                  | Yes                                                                     |
| Serverless                            | No                                                                  | Yes                                                                     |
| Offers Cost Savings                   | No                                                                  | Yes, through storage classes                                            |
| Versioning supported                  | No                                                                  | Yes                                                                     |
| Delta updates                         | Yes, through block updates                                          | No                                                                      |

## Amazon Elastic File System (Amazon EFS)

* Managed file system.
* It is a regional resource, based on linux file system which can scale automatically.
* Being a regional service, it stores data in and across multiple Availability Zones.
* It's a shared files systems i.e., multiple instances can read and write at the same time.
* Additionally, on-premises servers can access Amazon EFS using AWS Direct Connect.

## References

* Read More about AWS storage [here](https://aws.amazon.com/products/storage/)
* Hands on tutorials [here](https://aws.amazon.com/getting-started/hands-on/?awsf.getting-started-category=category%23storage\&awsf.getting-started-content-type=content-type%23hands-on\&getting-started-all.sort-by=item.additionalFields.sortOrder\&getting-started-all.sort-order=asc\&awsf.getting-started-level=*all)
