0


Linux-磁盘管理介绍

Linux-磁盘管理介绍

计算硬盘介绍

硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成;

  • cylinder:柱面
  • sector:扇区 - 磁道与磁道之间是有间距的;- 每一个扇区存储512字节
  • head:磁头

Linux系统中存放硬件设备的目录:/dev/

block是文件存储的最小单位

block以及inode的讲解

文件的存储分为两个部分

  • 文件内容–>block
  • 权限以及文件属性–>inode

其中还有一个就是超级快:SuperBlock

  • SuperBlock记录文件的整体信息: - 包括block和inode总量、使用的大小、剩余大小等等

总结:

  • Superblock:记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小, 以及文件系统的格式与相关信息等;
  • Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;
  • Block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。

操作系统进行格式化分区时,操作系统自动将硬盘分成两个区域。

  • 一个是数据Block区,用于存放文件数据;
  • 另一个是Inode Table区,用于存放inode包含的元信息。
  • 格式化信息的时候是可以指定每个block的大小 - 128B、256B、等等
  1. #查看分区的inode大小[root@Test0 ~]# dumpe2fs /dev/sda1 | grep "Inode size"
  2. dumpe2fs 1.42.9 (28-Dec-2013)
  3. dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/sda1
  4. #这两条命令,都出现有报错,原因是我们的系统使用了xfs-->需要另外一个命令查看[root@Test0 ~]# tune2fs -l /dev/sda2 |grep "Inode size"[root@Test0 ~]# xfs_info /dev/sda1
  5. meta-data=/dev/sda1 isize=512agcount=4, agsize=65536 blks
  6. =sectsz=512attr=2, projid32bit=1=crc=1finobt=0spinodes=0
  7. data =bsize=4096blocks=262144, imaxpct=25=sunit=0swidth=0 blks
  8. naming =version 2bsize=4096 ascii-ci=0ftype=1
  9. log =internal bsize=4096blocks=2560, version=2=sectsz=512sunit=0 blks, lazy-count=1
  10. realtime =none extsz=4096blocks=0, rtextents=0#这样子也能查看文件的大小[root@Test0 ~]# stat /boot/ |grep Inode
  11. 设备:801h/2049d Inode64 硬链接:5

在给硬盘分区的时候,到格式化的步骤的时候,可以指定block的大小

  • mkfs 硬盘名 - -b:可以直接指定block块的大小

软链接和硬链接的介绍

文件名和inode编号是有对应关系的

  • 一个inod对应一个文件
  • 也可以多个文件指向一个inode

硬链接的好处

  • 可以备份文件;防止误删除
  • 有相同的inode号;误删源文件–>链接文件还能使用
  • 硬链接只能对文件生效
  • 硬链接无法跨分区创建;

创建硬链接

  • ln 源文件 目标文件
  1. [root@Test0 sh]# ln aa.txt aa.txt.hard[root@Test0 sh]# ll -i ./aa*17544472 -rw-r--r-- 2 root root 03 13 06:42 ./aa.txt
  2. 17544472 -rw-r--r-- 2 root root 03 13 06:42 ./aa.txt.hard

软链接介绍

  • 软链接有点想windows上面的链接文件

软链接功能

  • 软链接可以跨分区;
  • 支持链接目录也支持文件
  • inode号不同,
  • 源文件存在,链接文件可以使用,
  • 源文件删除了,软链接没法使用

创建软连接

  • ln -s 源文件 目标文件
  1. #创建软连接[root@Test0 sh]# ln -s aa.txt aa.txt.soft[root@Test0 sh]# ll -i aa.txt*17544472 -rw-r--r-- 2 root root 03月 13 06:42 aa.txt
  2. 17544472 -rw-r--r-- 2 root root 03 13 06:42 aa.txt.hard
  3. 17544479 lrwxrwxrwx 1 root root 63 13 06:48 aa.txt.soft -> aa.txt

磁盘实操过程讲解

Linux中一切的硬件设备都是需要挂载才能使用,因此硬盘也是不例外;

如果添加了硬盘之后–>需要在/dev/目录中查看是否有识别到硬盘

  1. #查看硬盘是否识别[root@Test0 ~]# ls /dev/sd*
  2. /dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc
  3. #或者是使用fdisk 命令也能查看[root@Test0 ~]# fdisk -l

添加新硬盘操作:

在虚拟机添加硬盘的操作就不做解释了;也不做笔记了,做了很多很多;

  • 首先对硬盘进行分区 - 实验中第一块sdb硬盘,我们使用MBR分区;- 使用的命令就是fdisk命令
  1. #对硬盘进行分区[root@Test0 ~]# fdisk /dev/sdb .........
  2. 命令(输入 m 获取帮助):m #输入m获取帮助
  3. 命令操作
  4. a toggle a bootable flag
  5. b edit bsd disklabel
  6. c toggle the dos compatibility flag
  7. d delete a partition #扇区分区
  8. g create a new empty GPT partition table #创建gpt标签
  9. G create an IRIX (SGI) partition table
  10. l list known partition types #列出已分区信息
  11. m print this menu #获取帮助信息
  12. n add a new partition #添加新分区
  13. o create a new empty DOS partition table #创建dos分区标签
  14. p print the partition table #显示分区信息-->分区好之后使用
  15. q quit without saving changes #不保存退出
  16. s create a new empty Sun disklabel
  17. t change a partition's system id#指定分区id
  18. u change display/entry unitsv verify the partition table
  19. w write table to disk and exit#保存并且退出
  20. x extra functionality (experts only)
  21. 命令(输入 m 获取帮助):n #添加分区
  22. Partition type:
  23. p primary (0 primary, 0 extended, 4free)
  24. e extended
  25. Select (default p): p #选择是主分区还是拓展分区-->默认不填就是主分区
  26. 分区号 (1-4,默认 1):1 #选择分区号-->不填就是默认1
  27. 起始 扇区 (2048-41943039,默认为 2048): #开始的扇区
  28. 将使用默认值 2048
  29. Last 扇区, +扇区 or +size{K,M,G}(2048-41943039,默认为 41943039):+2G #指定分区的大小
  30. 分区 1 已设置为 Linux 类型,大小设为 2 GiB
  31. 命令(输入 m 获取帮助):p #列出已经分区的信息...............
  32. 设备 Boot Start End Blocks Id System
  33. /dev/sdb1 20484196351209715283 Linux
  34. /dev/sdb2 419635212584959419430483 Linux
  35. #如果想删除分区
  36. 命令(输入 m 获取帮助):d
  37. 分区号 (1,2,默认 2):2
  38. 分区 2 已删除
  39. #保存退出
  40. 命令(输入 m 获取帮助):w
  41. The partition table has been altered!
  42. Calling ioctl() to re-read partition table.
  43. 正在同步磁盘。
  44. #查看一下是否成功[root@Test0 ~]# ls /dev/sdb1
  45. /dev/sdb1
  • 然后格式化硬盘 - 格式化就是创建文件系统- 使用的命令就是mkfs.ext4
  1. #查看一下有多少命令是可以进行分区的[root@Test0 ~]# mkfsmkfs mkfs.btrfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.minix mkfs.xfs
  2. #对sdb1进行分区[root@Test0 ~]# mkfs.xfs /dev/sdb1
  3. meta-data=/dev/sdb1 isize=512agcount=4, agsize=131072 blks
  4. =sectsz=512attr=2, projid32bit=1=crc=1finobt=0, sparse=0
  5. data =bsize=4096blocks=524288, imaxpct=25=sunit=0swidth=0 blks
  6. naming =version 2bsize=4096 ascii-ci=0ftype=1
  7. log =internal log bsize=4096blocks=2560, version=2=sectsz=512sunit=0 blks, lazy-count=1
  8. realtime =none extsz=4096blocks=0, rtextents=0
  • 最后是挂载使用 - 创建一个目录用于挂载sdb1- 最好不要使用已经有数据的目录,因为会覆盖;
  1. #创建目录[root@Test0 ~]# mkdir /sbd1#直接挂载使用[root@Test0 ~]# mount /dev/sdb1 /sdb1#查看一下是否挂载[root@Test0 ~]# df -h | grep sdb1
  2. /dev/sdb1 2.0G 33M 2.0G 2% /sdb1
  3. [root@Test0 ~]#

fdisk命令

作用:对硬盘进行分区–>MBR分区

语法:fdisk+选项+硬盘

选项:

  • -b:编辑bsd disklabel;
  • -c:切换dos兼容性标志;
  • -d:删除一个分区;
  • -g:创建一个新的空GPT分区表;
  • -G:创建一个IRIX(SGI)分区表;
  • -l:列出已知的分区类型;
  • -m:打印帮助菜单;
  • -n:添加一个新分区;
  • -o:创建一个新空DOS分区表;
  • -p:打印分区表信息;
  • -q:退出而不保存更改;
  • -s:创建一个新的空的Sun磁盘标签;
  • -t:更改分区的系统ID;
  • -u:更改显示/输入单位;
  • -v:验证分区表;
  • -w:将分区表写入磁盘并退出;
  • -x:额外功

GPT格式文件系统

如果硬盘的容量大于2TB的话,可以使用GPT格式;

parted命令是用于GPT格式的分区

实验过程:

  • 首先需要把分区类型改为gpt格式;
  • 然后创建文嘉系统
  • 然后挂载使用
  1. #修改硬盘的分区格式[root@Test0 ~]# parted -s /dev/sdc mklabel gpt#基于ext4文件系统类型格式化[root@Test0 ~]# mkfs.ext4 /dev/sdcmke2fs1.42.9 (28-Dec-2013)
  2. /dev/sdc is entire device, not just one partition!
  3. 无论如何也要继续? (y,n) y
  4. 文件系统标签=
  5. OS type: Linux
  6. 块大小=4096(log=2)
  7. 分块大小=4096(log=2)Stride=0 blocks, Stripe width=0 blocks
  8. 1310720 inodes, 5242880 blocks
  9. 262144 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=2153775104160 block groups32768 blocks per group, 32768 fragments per group
  12. 8192 inodes per group
  13. Superblock backups stored on blocks:
  14. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
  15. 4096000
  16. Allocating group tables: 完成
  17. 正在写入inode表: 完成
  18. Creating journal (32768 blocks): 完成
  19. Writing superblocks and filesystem accounting information: 完成
  20. #然后挂载使用[root@Test0 ~]# mount /dev/sdc /sdb1/#检查一下[root@Test0 ~]# df -h ........
  21. /dev/sdc 20G 45M 19G 1% /sdb1

第二种直接使用parted命令进行分区

  1. #直接输入parted[root@Test0 ~]# parted
  2. GNU Parted 3.1
  3. 使用 /dev/sda
  4. Welcome to GNU Parted! Type 'help' to view a list of commands.
  5. #然后选择硬盘(parted)select /dev/sdc
  6. 使用 /dev/sdc
  7. #然后创建格式类型(parted) mklabel gpt
  8. 警告: 正在使用 /dev/sdc 上的分区。
  9. 忽略/Ignore/放弃/Cancel? Ignore #这里会询问你是否确定-->输入忽略就可以了#然后最后一次确认
  10. 警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to
  11. continue?
  12. 是/Yes/否/No? yes#直接选择yes#把整块硬盘进行分区,分配一个分区(parted) mkpart primary 0 -1
  13. 警告: The resulting partition is not properly aligned for best performance.
  14. 忽略/Ignore/放弃/Cancel? ignore
  15. #查看一下就发现成功了(parted) print
  16. Model: VMware, VMware Virtual S (scsi)
  17. Disk /dev/sdc: 21.5GB
  18. Sector size (logical/physical): 512B/512B
  19. Partition Table: gpt
  20. Disk Flags:
  21. Number Start End Size File system Name 标志
  22. 117.4kB 21.5GB 21.5GB primary
  23. #退出(parted) quit
  24. #然后创建文件系统[root@Test0 ~]# mkfs.xfs /dev/sdc1
  25. meta-data=/dev/sdc1 isize=512agcount=4, agsize=1310658 blks
  26. =sectsz=512attr=2, projid32bit=1=crc=1finobt=0, sparse=0
  27. data =bsize=4096blocks=5242631, imaxpct=25=sunit=0swidth=0 blks
  28. naming =version 2bsize=4096 ascii-ci=0ftype=1
  29. log =internal log bsize=4096blocks=2560, version=2=sectsz=512sunit=0 blks, lazy-count=1
  30. realtime =none extsz=4096blocks=0, rtextents=0#最后挂载使用[root@Test0 ~]# mount /dev/sdc1 /sdb1/[root@Test0 ~]# df -h | grep sdb
  31. /dev/sdc1 20G 33M 20G 1% /sdb1

mount命令

作用:对硬盘设备进行挂载;是一个用于挂载的工具

语法:mount + 选项+ 设备

选项:

  • -V:查看版本号
  • -l:查看已加载的列表
  • -h:列出信息
  • -v:输出指令执行的详细信息;
  • -n:加载没有写入文件/etc/mtab中的文件系统;
  • -r:将文件系统加载为只读模式;
  • -a:加载文件/etc/fstab中配置的所有文件系统;
  • -o: 指定mount挂载扩展参数,常见扩展指令:rw、 - -o atime:系统会在每次读取文档时更新文档时间;- -o noatime:系统会在每次读取文档时不更新文档时间;- -o defaults:使用预设的选项 rw,suid,dev,exec,auto,nouser等;- -o exec : 允许执行档被执行;- -o user、-o nouser:使用者可以执行 mount/umount的动作;- -o remount:将已挂载的系统分区重新以其他再次模式挂载;- -o ro:只读模式挂载;- -o rw:可读可写模式挂载;- -o loop :使用loop模式,把文件当成设备挂载至系统目录。
  • -t:指定mount挂载设备类型,常见类型nfs、ntfs-3g、vfat - iso9660:光盘或光盘镜像;- msdos:Fat16文件系统;- vfat:Fat32文件系统;- ntfs:NTFS文件系统;- ntfs-3g:识别移动硬盘格式;- smbfs:挂载Windows文件网络共享;、- nfs :Unix/Linux文件网络共享。

实际操作案例讲解:

  1. #正常挂载使用[root@Test0 ~]# mount /dev/sdb1 /sdb1/#挂载光盘镜像-->使用-t参数-->指定类型是iso9660[root@Test0 ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/
  2. mount: /dev/sr0 写保护,将以只读方式挂载
  3. #重新挂载/目录,并且指定权限[root@Test0 ~]# mount -o remount,rw /#卸载操作[root@Test0 ~]# umount /dev/cdrom [root@Test0 ~]#
标签: linux 服务器 运维

本文转载自: https://blog.csdn.net/Liang_GaRy/article/details/129721500
版权归原作者 Liang_GaRy 所有, 如有侵权,请联系我们删除。

“Linux-磁盘管理介绍”的评论:

还没有评论