diff --git a/Operating_Systems/Devices.md b/Operating_Systems/Devices.md index 65a1097..ebb8f87 100644 --- a/Operating_Systems/Devices.md +++ b/Operating_Systems/Devices.md @@ -6,10 +6,10 @@ tags: # Devices -Devices are hardware that require access to the CPU in order to function. Devices can either be external and pluged-in or internal to the motherboard. The most common type of device that you will work with are +Devices are hardware that require access to the CPU in order to function. Devices can either be external and plugded-in or internal to the motherboard. The most common type of device that you will work with are [disks](./Disks.md). -Devices are files but they have some different capabilities that ordinary files. There are two types: **block** and **stream**. Device files reside in the `/dev/` directory. +Devices are files but they have some different capabilities than ordinary files. There are two types: **block** and **stream**. Device files reside in the `/dev/` directory. Some of the most important device files are: * `hda` : a harddisk on a port diff --git a/Operating_Systems/Disks.md b/Operating_Systems/Disks.md index 3d1d71d..8a4e9b1 100644 --- a/Operating_Systems/Disks.md +++ b/Operating_Systems/Disks.md @@ -5,3 +5,59 @@ tags: --- # Disks +A disk is a mass storage [device](./Devices.md) which we can write to and read from. + +## SCSI +* Small Computer System Interface +* Pronounced _scuzzy_. +* It is a protocol that allows communicaton between printers, scanners and other peripherals in addition to harddisks. +* The `/sda/` device that is the most common designation for the harddisk in Linux systems stands for *SCSI disk*. + +## Disk schematic +The following diagram represents the basic anatomy of a disk device. + +* A disk is divided up into *partitions* which are subsections of the overall disk. The kernel presents each partition as a [block device](./Devices.md#Devices.md) as it would with an entire disk. +* The disk dedicates a small part of its contents to a *partition table*: this defines the different partitions that comprise the total disk space. +* The *filesystem* is a database of files and directories: this comprises the bulk of the partition and is of course what you interact with in [user space](./User_Space.md) when reading and writing data. + + ## Partitioning disks + +### Viewing current partitions +Whenever you install a Linux distribution on a real or virtual machine, you must partition the drive. There are three main tools that people choose from: `parted`, `g(raphical)parted`, `fdisk`. + +We can use `parted -l` to view the partition table for the current machine: + +```bash +Model: SKHynix_HFS512GDE9X081N (nvme) +Disk /dev/nvme0n1: 512GB +Sector size (logical/physical): 512B/512B +Partition Table: gpt +Disk Flags: + +Number Start End Size File system Name Flags + 1 1049kB 513MB 512MB fat32 boot, esp + 2 513MB 30.5GB 30.0GB ext4 + 3 30.5GB 512GB 482GB ext4 +``` + +We can use `fdisk -l` to get slightly more info: + +```bash +disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors +Disk model: SKHynix_HFS512GDE9X081N +Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 512 bytes +I/O size (minimum/optimal): 512 bytes / 512 bytes +Disklabel type: gpt +Disk identifier: 08175E77-CB9F-C34A-9032-DF29A3F8F0FE + +Device Start End Sectors Size Type +/dev/nvme0n1p1 2048 1001471 999424 488M EFI System +/dev/nvme0n1p2 1001472 59594751 58593280 27.9G Linux filesystem +/dev/nvme0n1p3 59594752 1000214527 940619776 448.5G Linux filesystem +``` + +So my main harddrive is `/dev/nvme0n1` and it has the standard three partitions: +* Boot partition (`/dev/nvme0n1p1`) +* Root dir (`/dev/nvme0n1p2`) +* Home dir (`/dev/nvme0n1p3`) \ No newline at end of file