Growlight: Difference between revisions

 
(36 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:glight.png|right|thumb|alt="Growlight logo"|Grow, baby, grow]]
[[File:glight.png|right|thumb|alt="Growlight logo"|Grow, baby, grow]]
[http://www.sprezzatech.com/growlight.html Growlight] is Sprezzatech's open source disk management utility and system installation prep tool, designed for use with [http://www.sprezzatech.com/sprezzos.html SprezzOS].
Growlight is a powerful open source tool for visualizing and managing persistent storage under Linux, built atop [[Notcurses]]. It began life as Sprezzatech's system installation prep tool, designed for use with [http://www.sprezzatech.com/sprezzos.html SprezzOS], but is now aimed at more mainstream (and non-defunct) distributions.
* Code lives at [https://github.com/dankamongmen/growlight GitHub].
* Code lives at [https://github.com/dankamongmen/growlight GitHub].
* Downloads are available at http://dank.qemfd.net/pub or from GitHub
* Downloads are available from [https://github.com/dankamongmen/growlight/releases GitHub].
* Growlight is present in [https://src.fedoraproject.org/rpms/growlight Fedora Core], [https://tracker.debian.org/pkg/growlight Debian], Alpine Edge, the AUR, and OpenSUSE.
* There is a [https://groups.google.com/forum/#!forum/growlight-dev mailing list]. You can post by mailing [mailto:growlight-dev@googlegroups.com growlight-dev@googlegroups.com].
* There is a [https://groups.google.com/forum/#!forum/growlight-dev mailing list]. You can post by mailing [mailto:growlight-dev@googlegroups.com growlight-dev@googlegroups.com].
* The [https://www.sprezzatech.com/bugs/buglist.cgi?list_id=8&resolution=---&query_format=advanced&component=Growlight Growlight] component of the SprezzOS project can be found on [https://www.sprezzatech.com/bugs Sprezzabugs].
* Bugs are now being tracked via [https://github.com/dankamongmen/growlight/issues Github issues]
 
==Debian installer==
My talk, "[https://debconf21.debconf.org/talks/3-proposing-a-new-d-i-disk-preparation-tool-growlight/ proposing a new d-i disk preparation tool]" at [https://debconf21.debconf.org/ debconf21] introduces the idea of using growlight within the mainstream Debian Installer.
 
==Some capabilities==
==Some capabilities==
{|class="wikitable" border="1"
{|class="wikitable" border="1"
Line 11: Line 16:
! Helpers
! Helpers
|-
|-
| Make ext2, ext3, ext4 filesystems
| <tt>CDROM_TIMED_MEDIA_CHANGE</tt>
| 1.0.0
|
| e2fsprogs (mkfs.ext*)
| Linux 5.16
|-
| EFIstub setup
|
| efibootmgr
|-
| [https://phoronix.com/scan.php?page=news_item&px=Linux-5.15-Disk-Seq-No BLKGETDISKSEQ]
|
| Linux 5.15
|-
| [https://systemd.io/DISCOVERABLE_PARTITIONS Discoverable partitions]
|
|
|-
| NVMe-ZNS recognition
|
| Linux 5.9
|-
| exFAT support
|
| Linux 5.6, exfat-utils
|-
| Linux 5.6 "drivetemp" support
|
| Linux 5.6
|-
| [[NVMe|Optane]] DCPMM device support
|
| ipmctl
|-
| Collect and display statistics
| 1.1.0
| procfs
|-
| [[NVMe]] device support
| 1.0.5
| nvme-cli
|-
|-
| Pass stride_width and stripe parameters to mkfs.ext*
| Pass stride_width and stripe parameters to mkfs.ext*
Line 30: Line 71:
| 1.0.2
| 1.0.2
| mkfs.xfs
| mkfs.xfs
|-
| Make vfat filesystems
| 1.0.0
| mkfs.vfat
|-
|-
| Make HFS/HFS+ filesystems
| Make HFS/HFS+ filesystems
Line 39: Line 76:
| mkfs.hfs, mkfs.hfsplus
| mkfs.hfs, mkfs.hfsplus
|-
|-
| Make swap devices
| Filesystem signature wiping
| 1.0.0
| 1.0.2
| mkswap
| wipefs
|-
|-
| Labeled filesystem creation
| Create/manipulate MSDOS partition tables
| 1.0.0
| 1.0.2
|
|
|-
|-
| Filesystem signature wiping
| Create/manipulate Apple Partition Maps
| 1.0.2
| Create added in 1.0.4
| wipefs
|
|-
|-
| Create MD aggregates
| Create MD aggregates
Line 57: Line 94:
| Create DM aggregates
| Create DM aggregates
| needs testing
| needs testing
|
|-
| MD / zpool aggregate scan + import
| 1.0.1
| mdadm, zpool
|-
| Temperature sensing (where supported)
| 1.0.1
| libatasmart
|-
| Rotation speed / Transport detection
| 1.0.1
|
|
|-
|-
Line 63: Line 112:
| zpool, zfs
| zpool, zfs
|-
|-
| Create/manipulate GPT partition tables
| Make ext2, ext3, ext4 filesystems
| 1.0.0
| e2fsprogs (mkfs.ext*)
|-
| Make swap devices
| 1.0.0
| mkswap
|-
| Labeled filesystem creation
| 1.0.0
| 1.0.0
|
|
|-
|-
| Create/manipulate MSDOS partition tables
| Make vfat filesystems
| 1.0.2
| 1.0.0
| mkfs.vfat
|-
| Create/manipulate GPT partition tables
| 1.0.0
|
|
|-
|-
Line 74: Line 135:
| 1.0.0
| 1.0.0
|
|
|-
| Temperature sensing (where supported)
| 1.0.1
| libatasmart
|-
|-
| SMART status check
| SMART status check
Line 83: Line 140:
| libatasmart
| libatasmart
|-
|-
| Rotation speed / Transport detection
| 1.0.1
|
|-
| MD / zpool aggregate scan + import
| 1.0.1
| mdadm, zpool
|-
|-
| UEFI boot preparation (UEFI bootloader, ESP, /etc/fstab)
| UEFI boot preparation (UEFI bootloader, ESP, /etc/fstab)
| needs testing
| 1.0.0
| grub2
| grub2
|-
|-
Line 106: Line 156:
* From [[C]]: use the BLKRRPART or BLKPG ioctls
* From [[C]]: use the BLKRRPART or BLKPG ioctls
** BLKRRPART is deprecated. It fails if any partition on the disk is in use, wheras BLKPG fails only if given invalid arguments, or attempting to modify a partition that is being used.
** BLKRRPART is deprecated. It fails if any partition on the disk is in use, wheras BLKPG fails only if given invalid arguments, or attempting to modify a partition that is being used.
Growlight handles all of this for you, of course.


==Identifying Block Devices==
==Identifying Block Devices==
Line 163: Line 214:
| 9.4ZB
| 9.4ZB
| 128 * ''n''
| 128 * ''n''
|-
! APM
| 2TB
| 2TB
| n, requiring n + 1 512-byte sectors
|-
|-
|}
|}
===Unique Identification===
===Unique Identification===
It is useful to uniquely identify block devices in a persistent manner. Device topology and thus <tt>/dev</tt> entry naming can change dynamically -- devices can be moved between boots; hot pluggable drives can be attached and removed; media can be ejected and replaced or reinserted. For physical devices, the unique identification ought be associated with the physical device. For virtual devices, the unique identification ought be associated with the virtual device and its component devices.
It is useful to uniquely identify block devices in a persistent manner. Device topology and thus <tt>/dev</tt> entry naming can change dynamically -- devices can be moved between boots; hot pluggable drives can be attached and removed; media can be ejected and replaced or reinserted. For physical devices, the unique identification ought be associated with the physical device. For virtual devices, the unique identification ought be associated with the virtual device and its component devices.
Line 176: Line 233:


==Resources==
==Resources==
Note that even using DMI 2.0, the standard 4x southbridge uplink can be supersaturated by four SATA3 devices.
Note that even using DMI 2.0, a 4x southbridge uplink can be supersaturated by four SATA3 devices.
{| class="wikitable" border="1"
{| class="wikitable" border="1"
! Interface
! Interface
Line 243: Line 300:
| 32
| 32
|-
|-
| DMI lane (almost always x4, sometimes x2)
| DMI lane
| 2.5 Gbps (312.5 MB/s)
| n/a
| 5
| 5
| 10
| 10
|-
|-
| DMI 2.0
| DMI 2.0 lane
| 5 Gbps (625 MB/s)
| n/a
| 10
| 10
| 20
| 20
|-
| DMI 3.0 lane
| n/a
| 20
| 40
|-
|-
|}
|}