Linux系统——硬盘操作

一、硬盘、分区简介

1、硬盘的表示方法

/dev/sda	
a: 第1块硬盘,依次类推
sd:硬盘接口, SAS/SATA接口	
  • 硬盘类型:
    机械硬盘 转速 RPM 5400/7200/10000/120000RPM
    SSD固态硬盘

  • 数据块 block,默认每个块4K
    数据存储时会被转换成数据块、随机存储

[root@martin-host ~]# du -h /opt/file01 
4.0K	/opt/file01
  • 查看块设备
[root@martin-host ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  800M  0 part /boot
└─sda2            8:2    0 19.2G  0 part 
  ├─centos-root 253:0    0 18.2G  0 lvm  /
  └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─db-redis      253:2    0    5G  0 lvm  
sr0              11:0    1  9.5G  0 rom 

2、硬盘分区

方便分类存储数据

系统盘:至少得有1个主分区
数据盘:无所谓

  • 主分区
    最多创建4个

  • 扩展分区
    方便创建逻辑分区,最多只能有1个; 主分区 + 扩展分区 <= 4

  • 逻辑分区
    无数量限制

  • 分区的表示方法
    /dev/sdc1–4, 表示主分区、扩展分区
    /dev/sdc5 表示逻辑分区

3、常见的文件系统

  • Windows
    NTFS、fat32(淘汰)

  • Linux
    xfs、ext4

4、磁盘挂载

二、MBR格式硬盘操作命令

1、查看硬盘

[root@martin-host ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  800M  0 part /boot
└─sda2            8:2    0 19.2G  0 part 
  ├─centos-root 253:0    0 18.2G  0 lvm  /
  └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
└─db-redis      253:2    0    5G  0 lvm  
sdc               8:32   0    8G  0 disk 
sr0              11:0    1  9.5G  0 rom  /run/media/root/CentOS 7 x86_64
[root@martin-host ~]# fdisk -l 

磁盘 /dev/sdc:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c3b85

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1640447      819200   83  Linux
/dev/sda2         1640448    41943039    20151296   8e  Linux LVM

[root@martin-host ~]# fdisk -l /dev/sdc

磁盘 /dev/sdc:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

2、管理硬盘分区

# fdisk 硬盘名称

交互式工具:
n:新建分区
d:删除分区
p:显示分区
w:保存
q:退出

3、创建文件系统/格式化

# mkfs -t 文件系统	 设备名称 

# mkfs -t xfs /dev/sdc2 

4、硬盘挂载

// 查看挂载的硬盘 
[root@martin-host ~]# mount 

// 挂载硬盘 
[root@martin-host ~]# mount 设备名称  挂载点
[root@martin-host ~]# mount /dev/sdc2  /test1 

// 卸载硬盘 
[root@martin-host ~]# umount 挂载点

5、创建硬盘分区

需求: /dev/sdc
主分区 1G xfs 挂载点: /db/redis
主分区 1G xfs 挂载点: /db/pgsql
逻辑分区 200M ext4 挂载点: /db/oracle

  • 创建硬盘分区
[root@martin-host ~]# fdisk /dev/sdc 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x1801e6ea 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-16777215,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-16777215,默认为 16777215):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):
命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (2099200-16777215,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-16777215,默认为 16777215):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):
命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e
分区号 (3,4,默认 3):3
起始 扇区 (4196352-16777215,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{K,M,G} (4196352-16777215,默认为 16777215):
将使用默认值 16777215
分区 3 已设置为 Extended 类型,大小设为 6 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (4198400-16777215,默认为 4198400):
将使用默认值 4198400
Last 扇区, +扇区 or +size{K,M,G} (4198400-16777215,默认为 16777215):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdc:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1801e6ea

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     2099199     1048576   83  Linux
/dev/sdc2         2099200     4196351     1048576   83  Linux
/dev/sdc3         4196352    16777215     6290432    5  Extended
/dev/sdc5         4198400     4607999      204800   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 让内核识别硬盘分区的变化
[root@martin-host ~]# partprobe /dev/sdc 
[root@martin-host ~]# 
[root@martin-host ~]# lsblk | grep sdc 
sdc               8:32   0    8G  0 disk 
├─sdc1            8:33   0    1G  0 part 
├─sdc2            8:34   0    1G  0 part 
├─sdc3            8:35   0    1K  0 part 
└─sdc5            8:37   0  200M  0 part 
[root@martin-host ~]# 
  • 创建文件系统/格式化
[root@martin-host ~]# mkfs -t xfs /dev/sdc1 
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@martin-host ~]# mkfs -t xfs /dev/sdc2 
meta-data=/dev/sdc2              isize=512    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

[root@martin-host ~]# mkfs -t ext4 /dev/sdc5 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
51200 inodes, 204800 blocks
10240 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=33816576
25 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
  • 查看文件系统
[root@martin-host ~]# blkid /dev/sdc1
/dev/sdc1: UUID="5aebd620-6289-4570-995e-712a1a487401" TYPE="xfs" 
[root@martin-host ~]# 
[root@martin-host ~]# blkid /dev/sdc2
/dev/sdc2: UUID="87b9a3ea-6b53-4a1f-b5e5-d2b7c2563430" TYPE="xfs" 
[root@martin-host ~]# 
[root@martin-host ~]# blkid /dev/sdc5
/dev/sdc5: UUID="747ca5fe-b2b8-4a34-aac2-3f6884657cb7" TYPE="ext4"
  • 挂载使用
[root@martin-host ~]# mkdir -p /db/{redis,pgsql,oracle}

[root@martin-host ~]# mount /dev/sdc1 /db/redis
[root@martin-host ~]# mount /dev/sdc2 /db/pgsql
[root@martin-host ~]# mount /dev/sdc5 /db/oracle

[root@martin-host ~]# mount | grep "sdc"
/dev/sdc1 on /db/redis type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdc2 on /db/pgsql type xfs (rw,relatime,attr2,inode64,noquota)
/dev/sdc5 on /db/oracle type ext4 (rw,relatime,data=ordered)
  • 查看硬盘的容量使用情况(已挂载)
[root@martin-host ~]# df -hT 
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        19G  8.8G  9.5G   49% /
/dev/sda1               xfs       797M  185M  612M   24% /boot
tmpfs                   tmpfs     182M   32K  182M    1% /run/user/0
/dev/sr0                iso9660   9.5G  9.5G     0  100% /run/media/root/CentOS 7 x86_64
/dev/sdc1               xfs      1014M   33M  982M    4% /db/redis
/dev/sdc2               xfs      1014M   33M  982M    4% /db/pgsql
/dev/sdc5               ext4      190M  1.6M  175M    1% /db/oracle

三、开机自动挂载

  • 配置文件: /etc/fstab
文件格式:

设备名称/UUID		挂载点	文件系统	挂载参数(defaults)		0 0
第1个数字: 是否启用dump备份,0 不启用  1 启用
第2个数据: 系统开机时是否检测硬盘 	0 不检测  1 优先检测  2 后续检测
[root@martin-host ~]# tail -n 3 /etc/fstab
/dev/sdc1	/db/redis	xfs	defaults	0 0
/dev/sdc2	/db/pgsql	xfs	defaults	0 0
UUID="747ca5fe-b2b8-4a34-aac2-3f6884657cb7" /db/oracle	ext4	defaults	0 0

[root@martin-host ~]# mount -a 

四、GPT格式硬盘分区操作

1、分区表类型

  • MBR
    容量不能超过2T
    分区表容量是固定64字节, 所以, 主+扩展<=4
    分区工具: fdisk

  • GPT
    支持容量大于2T的硬盘
    分区工具: parted

2、parted分区工具使用

[root@martin-host ~]# lsblk | grep sdd
sdd               8:48   0    4T  0 disk 
// 指定分区表格式为gpt
[root@martin-host ~]# parted /dev/sdd mklabel gpt
信息: You may need to update /etc/fstab.

// 创建分区,   parted 硬盘 mkpart 分区名称  起始大小 终止大小
[root@martin-host ~]# parted /dev/sdd mkpart p1 1 500G                    
信息: You may need to update /etc/fstab.

[root@martin-host ~]# parted /dev/sdd mkpart p2 500G 1000G                
信息: You may need to update /etc/fstab.

[root@martin-host ~]# parted /dev/sdd mkpart p3 1000G 100%                
信息: You may need to update /etc/fstab.

[root@martin-host ~]# partprobe /dev/sdd                                  
[root@martin-host ~]# 
[root@martin-host ~]# lsblk | grep sdd
sdd               8:48   0     4T  0 disk 
├─sdd1            8:49   0 465.7G  0 part 
├─sdd2            8:50   0 465.7G  0 part 
└─sdd3            8:51   0   3.1T  0 part 
[root@martin-host ~]# mkfs -t xfs /dev/sdd1 
meta-data=/dev/sdd1              isize=512    agcount=4, agsize=30517504 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=122070016, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=59604, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@martin-host ~]# mkfs -t xfs /dev/sdd2
meta-data=/dev/sdd2              isize=512    agcount=4, agsize=30517568 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=122070272, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=59604, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@martin-host ~]# mkfs -t xfs /dev/sdd3
[root@martin-host ~]# mkdir /web/{nginx,tomcat,httpd} -p

[root@martin-host ~]# tail -n 3 /etc/fstab
/dev/sdd1	/web/nginx	xfs	defaults	0 0
/dev/sdd2	/web/tomcat	xfs	defaults	0 0
/dev/sdd3	/web/httpd	xfs	defaults	0 0

[root@martin-host ~]# mount -a

[root@martin-host ~]# df -hT | grep "sdd"
/dev/sdd1               xfs       466G   33M  466G    1% /web/nginx
/dev/sdd2               xfs       466G   33M  466G    1% /web/tomcat
/dev/sdd3               xfs       3.1T   33M  3.1T    1% /web/httpd

五、inode / i节点

限制硬盘容量的因素:
容量、inode(文件个数)

// 查看inode
[root@martin-host ~]# df -i /db/oracle/ 
文件系统       Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdc5      51200      10   51190       1% /db/oracle

[root@martin-host ~]# for i in $(seq 51190)
> do
> touch /db/oracle/file00$i
> done 

[root@martin-host ~]# df -i /db/oracle/
文件系统       Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sdc5      51200   51200       0     100% /db/oracle

[root@martin-host ~]# df -hT /db/oracle/
文件系统       类型  容量  已用  可用 已用% 挂载点
/dev/sdc5      ext4  190M  3.0M  173M    2% /db/oracle

[root@martin-host ~]# touch /db/oracle/hahah 
touch: 无法创建"/db/oracle/hahah": 设备上没有空间
  • 查看元数据
[root@martin-host ~]# stat /etc/fstab  
  文件:"/etc/fstab"
  大小:780       	块:8          IO 块:4096   普通文件
设备:fd00h/64768d	Inode:19521396    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2024-10-12 10:36:12.468011105 +0800
最近更改:2024-10-11 11:44:05.974089307 +0800
最近改动:2024-10-11 11:44:05.974089307 +0800
创建时间:-

六、dd命令

作用:拷贝数据

创建测试文件

[root@martin-host ~]# dd if=/dev/zero of=/web/httpd/file01 bs=800M count=200 
记录了200+0 的读入
记录了200+0 的写出
167772160000字节(168 GB)已复制,130.277 秒,1.3 GB/秒


if= 源文件
of=目的文件
bs=容量
count=次数
  • 毁系统
[root@martin-host ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
记录了1+0 的读入
记录了1+0 的写出
446字节(446 B)已复制,0.00032372 秒,1.4 MB/秒

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值