unix-device

当我们把一块存储磁盘 (ssd hdd usb)插入电脑 如何对其进行管理 其所涉及到的概念有那些

fdisk

fdisk -l 显示出来的东西叫做 disk partition(磁盘分区) 简单的感觉就是磁盘(ssd hhd usb) 挂载上去之后还可以继续对齐进行拆分 其子元素就是disk partition

loopxx disk partition 是什么

snap会创建loop 用来管理软件 loop 类似于在现有的filesystem上创造出来的东西一种隔离的感觉

如何过滤掉loop disk partition

在fdisk中可能无法过滤 但是如果只是单纯看挂载磁盘的话可以用lsblk

lsblk -o name,mountpoint,label,size,fstype,uuid | egrep -v "^loop"

如何查看某个文件挂载在哪个分区上

df

如何重命名某个分区的label

如何格式化某个磁盘

fdisk /dev/parttion-name

列出所有mount地址

将某个分区映射到某个文件

如何取消某个分区到到某个文件的映射

umount

修复ntfs

sudo ntfsfix xxx

现在我们登录到unix操作系统上如何知道那块盘是引导盘?

通过lsblk我们可以知道有几块磁盘但是如何能知道那块盘是引导盘? 几个问题

  1. 如何确定一个磁盘是可引导的 读这个磁盘的最开始的512byte(0.5kb)
  2. 假设有多个bootable device 如何知道哪一个是我们在用的
  3. 假设有多个bootable device 如何知道下次重启时用的是哪个盘 bios 中设置

主引导扇区 引导扇区

bootloader过程是怎么样的

首先是bios要确定bios的类型

读取MBR

sudo dd if=/dev/sdd1 bs=1b count=1| od -t x1 -c

am i mbr or gpt?

sudo apt-get install gdisk
sudo gdisk -l /dev/sde

MBR

是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)

开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)

扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到。

DPT

硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下面是一个例子: 如果某一分区在硬盘分区表的信息如下 80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 则我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导[1];"01 01 00"表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63(小端序);"7E 86 BB 00"表示总扇区数为12289662(小端序)。 对于大于8.4G的现代硬盘,CHS已经无法表示, BIOS使用LBA模式,对于超出的部分,CHS值通常设为0xFEFFFF,并加以忽略,直接使用Offset 0x08-0x0c的4字节相对值,再进行内部转换。

偏移	长度(字节)	意义
00H	1	分区状态:00-->非活动分区;80-->活动分区;
其它数值没有意义
01H	1	分区起始磁头号(HEAD),用到全部8位
02H	2	分区起始扇区号(SECTOR),占据02H的位0-5;该分区的起始磁柱号(CYLINDER),占据02H的位6-7和03H的全部8位
04H	1	文件系统标志位
05H	1	分区结束磁头号(HEAD),用到全部8位
06H	2	分区结束扇区号(SECTOR),占据06H的位0-5;该分区的结束磁柱号(CYLINDER),占据
06H的位6-7和07H的全部8位
08H	4	分区起始相对扇区号
0CH	4	分区总的扇区数