一、物理设备的命名规则

 在Linux 系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev 设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev 目录下的设备文件。Linux 系统中常见的硬件设备的文件名称如下表所示:

Linux磁盘管理常用命令实操

由于现在的IDE 设备已经很少见了,所以一般的硬盘设备都会是以/dev/sd开头的。而一台主机上可以有多块硬盘,因此系统采用a~p 来代表16 块不同的硬盘(默认从a 开始分配),而且硬盘的分区编号也很有讲究:

  主分区或扩展分区的编号从1 开始,到4 结束;
  逻辑分区从编号5 开始。

设备名称分区名称

  设备名称:
  /dev 目录sda 设备之所以是a,并不是由插槽决定的,而是由系统内核的识别顺序来决定的,而恰巧很多主板的插槽顺序就是系统内核的识别顺序,因此才会被命名为/dev/sda。大家以后在使用iSCSI 网络存储设备时就会发现,明明主板上第二个插槽是空着的,但系统却能识别到/dev/sdb 这个设备就是这个道理。

  分区名称:
  首先,分区的编号并不代表着分区的个数,比如sda3 表示这是设备上的第三个分区,这个是错误的。因为分区的数字编码不一定是强制顺延下来的,也有可能是手工指定的。因此sda3 只能表示是编号为3 的分区,而不能判断sda 设备上已经存在了3 个分区。

  在填了这两个之后,再来分析一下/dev/sda5 这个设备文件名称包含哪些信息,如下图所示:

Linux磁盘管理常用命令实操

 首先,/dev/目录中保存的应当是硬件设备文件;其次,sd 表示是存储设备;然后,a 表示系统中同类接口中第一个被识别到的设备,最后,5 表示这个设备是一个逻辑分区。一言以蔽之,/dev/sda5表示的就是这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件。接下来简单科普一下硬盘相关的知识。

  正是因为计算机有了硬盘设备,我们才可以在玩游戏的过程中或游戏通关之后随时存档,而不用每次重头开始。硬盘设备是由大量的扇区组成的,每个扇区的容量为512 字节。其中第一个扇区最重要,它里面保存着主引导记录分区表信息。就第一个扇区来讲,主引导记录需要占用446 字节,分区表为64 字节,结束符占用2 字节;其中分区表中每记录一个分区信息就需要16 字节,这样一来最多只有4 个分区信息可以写到第一个扇区中,这4 个分区就是4 个主分区。第一个扇区中的数据信息如下图所示:

Linux磁盘管理常用命令实操

 

二、常用磁盘操作命令

1、分区

A:fdisk不支持大于2TB磁盘  查看、添加、删除、转换分区

B:parted支持大于2TB磁盘

 

新增分区格式化时提示设备文件不存在:--- No such file or directory的处理方法

 

来自 <https://blog.csdn.net/huangjin0507/article/details/44619115?utm_source=blogxgwz0>

创建设备文件mknod

来自 <https://www.cnblogs.com/lph970417/p/11547861.html>

方法一:通过命令mknod  /dev/sda4  b 8 4(其中b是block型设备文件,8是主设备号,4是辅助设备号)

[[email protected] ~]# ls -l /dev/sda*

brw-rw----. 1 root disk 8, 0 Oct 12 23:55 /dev/sda

brw-rw----. 1 root disk 8, 1 Oct 12 23:25 /dev/sda1

brw-rw----. 1 root disk 8, 2 Oct 12 23:25 /dev/sda2

brw-rw----. 1 root disk 8, 3 Oct 12 23:25 /dev/sda3

brw-r--r--. 1 root root 8, 4 Oct 13 00:13 /dev/sda4

设备文件出来了。(但是手动好像权限有问题,个人推荐下面的自动方法)

方法二:利用start_udev中创建设备文件

[[email protected] ~]# ls -l /dev/sda*

brw-rw----. 1 root disk 8, 0 Oct 13 00:23 /dev/sda

brw-rw----. 1 root disk 8, 1 Oct 13 00:23 /dev/sda1

brw-rw----. 1 root disk 8, 2 Oct 13 00:23 /dev/sda2

brw-rw----. 1 root disk 8, 3 Oct 13 00:23 /dev/sda3

brw-rw----. 1 root disk 8, 4 Oct 13 00:23 /dev/sda4

brw-rw----. 1 root disk 8, 5 Oct 13 00:23 /dev/sda5

设备文件成功创建了。

重启后生效,可进行格式化不然会提示:没有那个设备地址while trying to determine filesystem size

来自 <https://blog.csdn.net/huangjin0507/article/details/44619115>

 

 

2、格式化

Mkfs.ext4 /dev/sda?

Mke2fs -t ext4 -L sdb? -b 4096 /dev/sdb?

-b:分区时设定每个数据块占用空间大小,目前支持1024、2048以及4096 bytes每个块;

-i:设定inode的大小;

-N:设定inode数量,有时使用默认的inode数不够用,所以要自定设定inode数量;

-c:在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢;

-L:预设该分区的标签label;

-j:建立ext3格式的分区,如果使用mkfs.ext3就不用加这个选项了;

-t:用来指定什么类型的文件系统,可以是ext2、ext3也可以是ext4;

-m:格式化时,指定预留给管理员的磁盘比例,是一个百分比,只针对mke2fs命令;

来自 <https://www.jb51.net/article/129414.htm>

 

3、挂载

先有目录才能挂载

如新增分区/dev/sda6 指定挂载到/mydata ,如目录/mydata不存在,那么需要先mkdir /mydata

--挂接命令(mount)

首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的。

命令格式:mount [-t vfstype] [-o options] device dir

1、-t vfstype 指定文件系统的类型,通常不必指定,mount 会自动选择正确的类型。

光盘或光盘镜像:iso9660
DOS fat16文件系统:msdos
Windows 9x fat32文件系统:vfat
Windows NT ntfs文件系统:ntfs
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs

2、-o options 主要用来描述设备或档案的挂接方式。

loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集

3、device 要挂接(mount)的设备。

4、dir设备在系统上的挂接点(mount point)。

 

--挂接光盘镜像文件

1、从光盘制作光盘镜像文件。将光盘放入光驱,执行下面的命令。

#cp /dev/cdrom /home/sunky/mydisk.iso 或
#dd if=/dev/cdrom of=/home/sunky/mydisk.iso

注:执行上面的任何一条命令都可将当前光驱里的光盘制作成光盘镜像文件/home/sunky/mydisk.iso

2、将文件和目录制作成光盘镜像文件,执行下面的命令。

#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir

注:这条命令将/home/sunky/mydir目录下所有的目录和文件制作成光盘镜像文件/home/sunky/mydisk.iso,光盘卷标为:mydisk

3、光盘镜像文件的挂接(mount)

#mkdir /mnt/vcdrom

注:建立一个目录用来作挂接点(mount point)

#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom

注:使用/mnt/vcdrom就可以访问光盘镜像文件mydisk.iso里的所有文件了。

--挂接移动硬盘

linux系统而言,USB接口的移动硬盘是当作SCSI设备对待的。插入移动硬盘之前,应先用fdisk –l或more /proc/partitions查看系统的硬盘和硬盘分区情况。

[root at pldyrouter /]# fdisk -l

接好移动硬盘后,再用fdisk –l或more。

/proc/partitions查看系统的硬盘和硬盘分区情况,应该可以发现多了一个SCSI硬盘/dev/sdc和它的两个磁盘分区/dev

/sdc1、/dev/sdc2,其中/dev/sdc5是/dev/sdc2分区的逻辑分区,我们可以使用下面的命令挂接/dev/sdc1和

/dev/sdc5。

#mkdir -p /mnt/usbhd1
#mkdir -p /mnt/usbhd2

注:建立目录用来作挂接点(mount point)

#mount -t ntfs /dev/sdc1 /mnt/usbhd1
#mount -t vfat /dev/sdc5 /mnt/usbhd2

注:对ntfs格式的磁盘分区应使用-t ntfs参数,对fat32格式的磁盘分区应使用-t vfat参数。若汉字文件名显示为乱码或不显示,可以使用下面的命令格式。

#mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd1
#mount -t vfat -o iocharset=cp936 /dev/sdc5 /mnt/usbhd2

linux系统下使用fdisk分区命令和mkfs文件系统创建命令可以将移动硬盘的分区制作成linux系统所特有的ext2、ext3格式。这样,在linux下使用就更方便了。使用下面的命令直接挂接即可。

#mount /dev/sdc1 /mnt/usbhd1

--挂接U盘

和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。插入U盘之前,应先用fdisk –l 或more /proc/partitions查看系统的硬盘和硬盘分区情况。

[root at pldyrouter root]# fdisk -l

插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。

[root at pldyrouter root]# fdisk -l

系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。

#mkdir -p /mnt/usb

注:建立一个目录用来作挂接点(mount point)

#mount -t vfat /dev/sdd1 /mnt/usb

注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。

#mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb

--挂接Windows文件共享

Windows网络共享的核心是SMB/CIFS,在linux下要挂接(mount)windows的磁盘共享,就必须安装和使用samba

软件包。现在流行的linux发行版绝大多数已经包含了samba软件包,如果安装linux系统时未安装samba请首先安装samba。当然也可以到www.samba.org网站下载新的版本是3.0.10版。

当windows系统共享设置好以后,就可以在linux客户端挂接(mount)了,具体操作如下:

# mkdir –p /mnt/samba

注:建立一个目录用来作挂接点(mount point)

# mount -t smbfs -o username=administrator,password=pldy123 //10.140.133.23/c$ /mnt/samba

注:administrator 和 pldy123 是ip地址为10.140.133.23 windows计算机的一个用户名和密码,c$是这台计算机的一个磁盘共享。

如此就可以在linux系统上通过/mnt/samba来访问windows系统磁盘上的文件了。以上操作在redhat as server3、redflag server 4.1、suse server 9以及windows NT 4.0、windows 2000、windowsxp、windows 2003环境下测试通过。

--挂接UNIX系统NFS文件共享

类似于windows的网络共享,UNIX(Linux)系统也有自己的网络共享,那就是NFS(网络文件系统),下面我们就以SUN Solaris2.8和REDHAT as server 3 为例简单介绍一下在linux下如何mount nfs网络共享。

在linux客户端挂接(mount)NFS磁盘共享之前,必须先配置好NFS服务端。

1、Solaris系统NFS服务端配置方法如下:

(1)修改 /etc/dfs/dfstab, 增加共享目录

share -F nfs -o rw /export/home/sunky

(2)启动nfs服务

# /etc/init.d/nfs.server start

(3)NFS服务启动以后,也可以使用下面的命令增加新的共享

# share /export/home/sunky1
# share /export/home/sunky2

注:/export/home/sunky和/export/home/sunky1是准备共享的目录

2、linux系统NFS服务端配置方法如下:

(1)修改 /etc/exports,增加共享目录

/export/home/sunky 10.140.133.23(rw)
/export/home/sunky1 *(rw)
/export/home/sunky2 linux-client(rw)

注:/export/home/目录下的sunky、sunky1、sunky2是准备共享的目录,10.140.133.23、*、

linux-client是被允许挂接此共享linux客户机的IP地址或主机名。如果要使用主机名linux-client必须在服务端主机

/etc/hosts文件里增加linux-client主机ip定义。格式如下:

10.140.133.23 linux-client

(2)启动与停止NFS服务

/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默认启动的)
/etc/rc.d/init.d/nfs start 启动NFS服务
/etc/rc.d/init.d/nfs stop 停止NFS服务

注:若修改/etc/export文件增加新的共享,应先停止NFS服务,再启动NFS服务方能使新增加的共享起作用。

使用命令exportfs -rv也可以达到同样的效果。

3、linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享

# mkdir –p /mnt/nfs

注:建立一个目录用来作挂接点(mount point)

#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs

注:这里我们假设10.140.133.9是NFS服务端的主机IP地址,当然这里也可以使用主机名,但必须在本机/etc/hosts文件里增加服务端ip定义。/export/home/sunky为服务端共享的目录。

如此就可以在linux客户端通过/mnt/nfs来访问其它linux系统或UNIX系统以NFS方式共享出来的文件了。

以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc环境下测试通过。

--补充:

linux加载光驱:

(1)使用光驱前,要先mount一下:

#mount /dev/cdrom /mnt/cdrom

然后您就可以进入/mnt/cdrom目录下读取光盘内容了。

(2)当您想退出光盘时,须使用umout命令,否则光驱就会一直处于死锁状态:

#umount /mnt/cdrom

 

 

三、常用信息查看命令

 

mount -l 查看已挂载的设备

 

fdisk -l 查看所有挂载和未挂载的分区,但不显示文件系统类型。

parted -l 查看未挂载的文件系统类型,以及哪些分区尚未格式化。

lsblk -f 查看未挂载的文件系统类型。

file -s /dev/sda1 查看某一个磁盘文件系统相关信息

df -T 查看已经挂载的分区和文件系统类型。

 

1****查看块设备信息命令:lsblk****

1)简单用法:

    lsblk命令可以列出所有可用块设备的信息,比如我们说的逻辑磁盘,默认情况下将以树状列出所有块设备。

[[email protected] /]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0   40G  0 part /
└─sda2   8:2    0    4G  0 part [SWAP]
sr0     11:0    1  3.6G  0 rom  /mnt

 2)lsblk选项:

lsblk --help

[[email protected] /]# lsblk --help

用法:
 lsblk [选项] [<设备> ...]

选项:
 -a, --all            打印所有设备
 -b, --bytes          以字节为单位而非易读的格式来打印 SIZE
 -d, --nodeps         不打印从属设备(slave)或占位设备(holder)
 -D, --discard        打印时丢弃能力
 -e, --exclude <列表> 根据主设备号排除设备(默认:内存盘)
 -I, --include <列表> 只显示有指定主设备号的设备
 -f, --fs             输出文件系统信息
 -h, --help           使用信息(此信息)
 -i, --ascii          只使用 ascii 字符
 -m, --perms          输出权限信息
 -l, --list           使用列表格式的输出
 -n, --noheadings     不打印标题
 -o, --output <列表>  输出列
 -p, --paths          打印完整设备路径
 -P, --pairs          使用 key=“value” 输出格式
 -r, --raw            使用原生输出格式
 -s, --inverse        反向依赖
 -t, --topology       输出拓扑信息
 -S, --scsi           输出有关 SCSI 设备的信息

 -h, --help     显示此帮助并退出
 -V, --version  输出版本信息并退出

 

2****查看文件系统磁盘空间信息命令:df ****

 

1)常用选项:

Linux磁盘管理常用命令实操

2)范例:

①  -a选项:

[[email protected] /]# df -a
文件系统          1K-块    已用     可用 已用% 挂载点
rootfs         41922560 3300768 38621792    8% /
proc                  0       0        0     - /proc
sysfs                 0       0        0     - /sys
devtmpfs        2007776       0  2007776    0% /dev
securityfs            0       0        0     - /sys/kernel/security
tmpfs           2016816     148  2016668    1% /dev/shm
devpts                0       0        0     - /dev/pts
tmpfs           2016816    9016  2007800    1% /run
tmpfs           2016816       0  2016816    0% /sys/fs/cgroup
cgroup                0       0        0     - /sys/fs/cgroup/systemd
pstore                0       0        0     - /sys/fs/pstore
cgroup                0       0        0     - /sys/fs/cgroup/cpuset
cgroup                0       0        0     - /sys/fs/cgroup/cpu,cpuacct
cgroup                0       0        0     - /sys/fs/cgroup/memory
cgroup                0       0        0     - /sys/fs/cgroup/devices
cgroup                0       0        0     - /sys/fs/cgroup/freezer
cgroup                0       0        0     - /sys/fs/cgroup/net_cls
cgroup                0       0        0     - /sys/fs/cgroup/blkio
cgroup                0       0        0     - /sys/fs/cgroup/perf_event
cgroup                0       0        0     - /sys/fs/cgroup/hugetlb
configfs              0       0        0     - /sys/kernel/config
/dev/sda1      41922560 3300768 38621792    8% /
selinuxfs             0       0        0     - /sys/fs/selinux
systemd-1             0       0        0     - /proc/sys/fs/binfmt_misc
mqueue                0       0        0     - /dev/mqueue
hugetlbfs             0       0        0     - /dev/hugepages
debugfs               0       0        0     - /sys/kernel/debug
gvfsd-fuse            0       0        0     - /run/user/1000/gvfs
fusectl               0       0        0     - /sys/fs/fuse/connections
/dev/sr0        3798292 3798292        0  100% /mnt

②  -hT选项:

[[email protected] /]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda1      xfs        40G  3.2G   37G    8% /
devtmpfs       devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs          tmpfs     2.0G  148K  2.0G    1% /dev/shm
tmpfs          tmpfs     2.0G  8.9M  2.0G    1% /run
tmpfs          tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sr0       iso9660   3.7G  3.7G     0  100% /mnt

③  -ihT选项:

[[email protected] /]# df -ihT
文件系统       类型     Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/sda1      xfs        40M    109K     40M       1% /
devtmpfs       devtmpfs  491K     326    490K       1% /dev
tmpfs          tmpfs     493K       8    493K       1% /dev/shm
tmpfs          tmpfs     493K     454    492K       1% /run
tmpfs          tmpfs     493K      13    493K       1% /sys/fs/cgroup
/dev/sr0       iso9660      0       0       0        - /mnt

 

 

 

相关文章: