add: getting started notebook
This commit is contained in:
parent
73f4a7829e
commit
70c56b005e
1 changed files with 100 additions and 0 deletions
100
getting-started.ipynb
Normal file
100
getting-started.ipynb
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"# NAS Drives: CMR/SMR, Failure Rates & Specs\n",
|
||||||
|
"\n",
|
||||||
|
"Exploring the dataset of 140+ NAS and enterprise hard drives - CMR vs SMR classification, real-world failure rates from Backblaze Drive Stats, and full specs."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"\n",
|
||||||
|
"df = pd.read_csv('/kaggle/input/datasets/nettrust/nas-drives-cmrsmr-failure-rates-and-specs-2026/drives-2026-06-17.csv')\n",
|
||||||
|
"print(f\"{len(df)} drives | {df['brand'].nunique()} brands | {df['line'].nunique()} product lines\")\n",
|
||||||
|
"df.head()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## CMR vs SMR breakdown\n",
|
||||||
|
"\n",
|
||||||
|
"SMR drives use shingled recording to pack more capacity - but they stall under sustained writes of a RAID rebuild, which can drop them from the array mid-rebuild."
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"df['recording_tech'].value_counts()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## SMR drives to avoid in a NAS/RAID array"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"df[df['recording_tech'] == 'smr'][['brand', 'line', 'model', 'capacity_tb']].sort_values(['brand', 'capacity_tb'])"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Most reliable drives (Backblaze annualized failure rate, lowest first)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"df[df['afr_pct'].notna()][['brand', 'line', 'model', 'capacity_tb', 'recording_tech', 'afr_pct', 'reliability_drive_count']].sort_values('afr_pct')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"## Data & API\n",
|
||||||
|
"\n",
|
||||||
|
"Full dataset, always up to date: [nasdisks.com/data/](https://www.nasdisks.com/data/)\n",
|
||||||
|
"\n",
|
||||||
|
"License: CC BY 4.0 for specs and CMR/SMR. Failure rates derived from [Backblaze Drive Stats](https://www.backblaze.com/cloud-storage/resources/hard-drive-test-data) - credit Backblaze when using."
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python3"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"name": "python",
|
||||||
|
"version": "3.12.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue