安装nixos最佳实践
配置lvm
# 推荐2个VG,可以随时进行扩容
# 先进行常规分区不进行格式化,然后进行lvm创建
/ 根分区
/home 用户家分区
/nix nix的包分区
# boot使用的uefi分区还是独立出来,不进lvm
https://wiki.archlinux.org/title/LVM_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#LVM%E5%9F%BA%E6%9C%AC%E7%BB%84%E6%88%90
# 按照常规进行分区
parted /dev/vda -- mklabel gpt
# 或者
parted /dev/vda -- mklabel msdos
# 是gpt就搭配uefi进行留512MiB进行efi分区,-8GiB我们用来作home分区
# parted /dev/vda -- mkpart primary 512MiB -8GiB
parted /dev/vda -- mkpart primary 1MiB -8GiB
parted /dev/vda -- mkpart primary -8GiB -1MiB
# 删除分区
parted /dev/vda -- rm 1
parted /dev/vda -- rm 2
# 查看可以操作物理卷的分区
lvmdiskscan
# 检查是否存在lvm
pvscan
# 查看分区
lsblk
# 转换分区为卷,转换2,3,4分区 pvs可查看
pvcreate /dev/vda{2,3,4}
# 查看lvm详细信息
pvdisplay
# 删除卷
## 删除lvs的数据
lvs
lvremove [VG]/[LV]
lvremove vgroot/lvroot
## 删除pvs的数据提示:Was device resized?
pvs
pvremove /dev/vda1 --force --force
# [1]转换pvs之后,创建卷组VG [VG Name]就会生效了
vgcreate vghome /dev/vda1
# 也可以vdaN多添加几个[扩容]
vgextend vghome /dev/vda2
# [2]创建逻辑卷LV
# lvcreate -L <卷大小> <"卷组名> -n <卷名>
## 初次设置全部卷内存到LV
lvcreate -l +100%FREE vghome -n lvhome
## 指定大小, 之后lvs可查看
lvcreate -L 20G vghome -n lvhome
## vgextend 之后可以追加指定大小
lvresize -L +1.9G vghome/lvhome
# 查看新大小,看到vghome-lvhome已经变大
lsblk
# LV创建完成之后,你就可以通过/dev/mapper/vghome-lvhome或/dev/vghome/lvhome
# 激活
modprobe dm-mod
vgscan
vgchange -ay
# 之后就可以进行格式化了
mkfs.ext4 /dev/vghome/lvhome
## 如果已经[vgextend]扩容,进行扩展逻辑边界,否则df -h看到的大小还是原来的大小
## 先进行追加 lvresize
## 最后挂载点生效
resize2fs /dev/mapper/vghome-lvhome
# 查看PV/VG情况
pvs
lvs
pvdisplay;vgdisplay;lvdisplay
# 缩小物理卷
pvresize --setphysicalvolumesize 8G /dev/vda1
安装系统
# 分区方案
parted /dev/vda -- mkpart primary 1MiB 512MiB # esp
parted /dev/vda -- mkpart primary 512MiB 12800MiB # root分区12G +5120
parted /dev/vda -- mkpart primary 12800MiB 17920MiB # home分区5G
parted /dev/vda -- mkpart primary 17920MiB -1MiB # nix分区剩下
lsblk
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
# vda 253:0 0 20G 0 disk
# ├─vda1 253:1 0 11.5G 0 part
# ├─vda2 253:2 0 5G 0 part
# └─vda3 253:3 0 3G 0 part
pvcreate /dev/vda{2,3,4}
vgcreate vgroot /dev/vda2
vgcreate vghome /dev/vda3
vgcreate vgnix /dev/vda4
lvcreate -l +100%FREE vgroot -n lvroot
lvcreate -l +100%FREE vghome -n lvhome
lvcreate -l +100%FREE vgnix -n lvnix
mkfs.ext4 /dev/mapper/vgroot-lvroot
mkfs.ext4 /dev/mapper/vghome-lvhome
mkfs.ext4 /dev/mapper/vgnix-lvnix
mount /dev/mapper/vgroot-lvroot /mnt
mount /dev/mapper/vghome-lvhome /mnt/home
mount /dev/mapper/vgnix-lvnix /mnt/nix
df -h
# /dev/mapper/vgroot-lvroot 12G 32K 12G 1% /mnt
# /dev/mapper/vghome-lvhome 4.9G 24K 4.6G 1% /mnt/home
# /dev/mapper/vgnix-lvnix 2.4G 24K 2.3G 1% /mnt/nix
nixos-generate-config --root /mnt/
# 编辑映射到对应mapper
nano /mnt/etc/nixos/hardware-configuration.nix
# 常规修改配置
nano /mnt/etc/nixos/configuration.nix
# 安装
nixos-install --root /mnt
# 进入系统之后
df -h
# /dev/dm-2 12G 47M 12G 1% /
# /dev/dm-0 2.4G 1.6G 762M 67% /nix
# /dev/mapper/vghome-lvhome 4.9G 28K 4.6G 1% /hom
lsblk
# NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
# vda 253:0 0 20G 0 disk
# ├─vda1 253:1 0 511M 0 part
# ├─vda2 253:2 0 12G 0 part
# │ └─vgroot-lvroot 254:2 0 12G 0 lvm /
# ├─vda3 253:3 0 5G 0 part
# │ └─vghome-lvhome 254:1 0 5G 0 lvm /home
# └─vda4 253:4 0 2.5G 0 part
# └─vgnix-lvnix 254:0 0 2.5G 0 lvm /nix/store
# /nix
# 直接扩容sdc到vghome
vgextend vghome /dev/sdc
# sudo pvs 可以查看
lvresize -l +100%FREE vghome/lvhome # lv全部使用
resize2fs /dev/mapper/vghome-lvhome # 挂载点的数据生效
单盘lvm直接部署
# 按照常规进行分区
parted /dev/vda -- mklabel gpt
# 或者
parted /dev/vda -- mklabel msdos
# 如果想要把数据放到不同的盘,需要在0,1,2步对其进行分开,生成不同的mapper挂载点
# esp
parted /dev/vda -- mkpart primary 1MiB 512MiB
# 0.剩下的空间
parted /dev/vda -- mkpart primary 512MiB -1MiB
# EFI分区需要激活
parted /dev/vda1 -- set 1 boot on
# 1.物理卷,可以使用一个分区;pvs
pvcreate /dev/vda2
# 2.卷组VG;vgs
vgcreate vgroot /dev/vda2
# 3.逻辑卷LV,创建之后就在/dev/mapper可以进行挂载了;lvs
lvcreate -l +100%FREE vgroot -n lvroot
# 4.格式化
mkfs.ext4 /dev/mapper/vgroot-lvroot
# 扩容卷组
vgextend vgroot /dev/sdc
lvresize -l +100%FREE vgroot/lvroot
resize2fs /dev/mapper/vgroot-lvroot