Linux文件系统学习
linux中的各硬件设备的文件名
在Linux操作系统中,任何物理存储设备接入系统后都是以文件的形式存在,且不同类别的设备接入系统后被识别的文件类型不同,这里我们用下表来详细说明:
- IDE接口设备在Linux系统中映射的文件以“hd"为前缀;
- SCSI设备映射的文件以“sd"为前缀;
具体的文件命名规则是以英文字母排序的。如系统中第1个IDE设备为hda,第2个为hdb。
- 设备接入系统后,我们可以用以下这些命令对设备进行查看:
- fdisk -l :查看磁盘的分区情况
- lsblk:查看设备使用情况,即哪些磁盘的哪些分区正在被谁使用
- blkid :查看设备管理方式(设备上的文件系统类型)及设备id
- df:查看正在被系统挂载的设备
- cat /proc/partitions :查看被系统识别的设备
linux分区
linux系统一般是作为服务器的,分区采用lvm分区。之前lvm分区采用2TB的分区大小,现在硬盘越来越大超过2TB很常见,对于超过2TB的话,需要采用parted分区模式。
前面表格中,/dev/sda是指整个硬盘,实际使用中一般都会有分区,也就是/dev/sda1, /dev/sda2这样的。
分区通常以数字序号为标识,例如第一个IDE设备的第一个分区命名为/dev/hda1,第一个SCSl设备的第一个分区命名为/dev/sda1。
有一些分区已经挂载了,使用lsblk命令,可以看到各个分区被挂载到哪个目录。
1. 使用fdisk进行分区
使用fdisk -l 可以查看当前分区情况,使用fdisk /dev/sdb增加新分区,如下图:
详细分区步骤参考:Linux 用fdisk进行磁盘分区(图文过程)_Wyn_的博客-CSDN博客_fdisk /dev/sda
2. 使用parted命令进行分区
parted分区步骤
- 1 通过fdisk-l 或lsblk查看磁盘, df -h使用情况可以看到新增/dev/sdb盘没有挂载
- 2 给/dev/sdb分区 (parted /dev/sdb 命令)
- 3 格式化磁盘类型(可以直接将磁盘分区进行格式化)
- 4 创建主分区
- 6 将格式化好的磁盘挂载到指定目录下
- 9 实现系统启动自动挂载,修改etc/fstab文件
详细分区步骤参考:linux使用parted分区步骤 parted分区教程-百度经验 (baidu.com)
linux支持的文件系统
因为每种操作系统所需要的文件属性/权限并不相同,为了存放这些文件所需要的数据,故而磁盘在进行分区完毕后需要进行格式化,之后操作系统才能够使用这个文件系统。
传统的磁盘与文件系统应用中,一个分区就只能被格式化为一个文件系统,所以我们可以说一个文件系统就是一个磁盘分区,但是由于新技术的使用,如lvm等,可以将一个分区格式化为多个文件系统,也能将多个分区合并成为一个文件系统,所以我们在格式化时已经不再针对磁盘分区来格式化,通常我们称一个可挂载的数据为一个文件系统而不是一个分区。
Linux LVM管理
逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。
LVM使用分层结构,如下图所示。
图中顶部,首先是实际的物理磁盘及其划分的分区和其上的物理卷(PV)。一个或多个物理卷可以用来创建卷组(VG)。然后基于卷组可以创建逻辑卷(LV)。只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷。文件系统就是在逻辑卷上创建的,然后可以在操作系统挂载和访问。
相关操作命令如下:
- 准备物理卷(PV):pvcreate /dev/sdb1, 刚创建的磁盘分区是用来储存物理卷的。LVM可以使用不同大小的物理卷。
- 检查物理卷的创建情况:pvdisplay
- 删除物理卷:pvremove /dev/sdb1
- 创建名为'volume-group1'的卷组,使用/dev/sdb1, /dev/sdb2 和 /dev/sdb3创建:vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
- 显示卷组情况:vgdisplay
- 删除卷组:vgremove volume-group1
- 创建逻辑卷(LV):lvcreate -L 100M -n lv1 volume-group1 (创建一个名为'1v1'、大小为100MB的逻辑卷)
- 查看逻辑卷:lvdisplay
- 逻辑卷已经准备好后,可以格式化和挂载逻辑卷,就像其它ext2/3/4分区一样:
- mkfs.ext4 /dev/volume-group1/lv1
- mkdir /lvm-mount
- # mount /dev/volume-group1/lv1 /lvm-mount/
- 删除逻辑卷:lvremove /dev/volume-group1/lv1
- 扩展LVM卷:
- 卸载掉lv1卷:卸载掉lv1卷:umount /lvm-mount/
- 设置卷的大小为200M:lvresize -L 200M /dev/volume-group1/lv1
- 检查磁盘错误:e2fsck -f /dev/volume-group1/lv1
- 扩展文件系统:resize2fs /dev/volume-group1/lv1
- 检查LV的状态:lvdisplay
- 缩减LVM卷:
- 卸载掉lv1卷:卸载掉lv1卷:umount /lvm-mount/
- 检查磁盘错误:e2fsck -f /dev/volume-group1/lv1
- 缩小文件系统,更新ext4信息:resize2fs /dev/volume-group1/lv1 100M
- 减少逻辑卷大小:lvresize -L 100M /dev/volume-group1/lv1
- 检查LV的状态:lvdisplay
- 卷组操作:
- 检测现在卷组状态:vgdisplay volume-group1
- 创建一个2GB分区sdc1,类型为LVM(8e):fdisk /dev/sdc
- 创建一个物理卷 /dev/sdc1:pvcreate /dev/sdc1
- 将新增加的物理卷添加到已存在的卷组'volume-group1'上:vgextend volume-group1 /dev/sdc1
- 检查VG的状态:vgdisplay
Linux文件系统挂载
参考:Linux文件系统挂载 - xiaohaoge - 博客园 (cnblogs.com)
挂载
Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
例如Linux访问U盘数据
挂载通常是将一个存储设备
挂接到一个已经存在的目录
上,访问这个目录
就是访问该存储设备的内容。对于Linux系统来说,一切皆文件,所有文件都放在以根目录
为起点的树形目录结构中,任何硬件设备也都是文件形式。
mount命令
mount命令可以将指定的文件系统
挂载到指定目录(挂载点)
,在Linux系统下必须先挂载后才能访问设备资料。
- 新的硬盘插到机器上,分区、格式化文件系统后,此时可以可以存放数据了
- 此时的硬盘插到linux上,也只是读取出了一个封闭的盒子,无法读写
- 和linux的文件夹进行
关联、挂载
后,即可通过访问被挂载的文件夹
,访问到硬盘的数据
Linux挂载iSCSI磁盘
https://blog.csdn.net/chouzhi7161/article/details/100749726
https://www.cnblogs.com/iouwenbo/p/10229055.html
基本配置,操作流程
https://www.cnblogs.com/happy1983/p/9212349.html
账户认证配置
https://blog.csdn.net/manom/article/details/89331283
缓存可能导致的问题
https://www.bilibili.com/video/BV1wk4y127xT?spm_id_from=333.337.search-card.all.click&vd_source=bc80f16f88602529d0b160438ca63028 服务端配置
https://www.bilibili.com/video/BV1ut4y1Q7D2?spm_id_from=333.999.0.0&vd_source=bc80f16f88602529d0b160438ca63028 客户端配置
服务端:
0.准备后端存储硬盘 lsblk查看硬盘
安装服务端软件targetcli:
yum -y install targetcli
设置启动服务
systemctl restart target
systemctl enable target
输入targetcli进入tareget配置
创建backstore后端存储
cd /backstores/block
create backend(自定义名称) /dev/sdb
创建target共享名:iqn
cd /iscsi
create iqn.2022-10.com.example:server(iqn.yyyy-mm.主机名:服务器描述)
创建lun,关联共享名和后端储存设备
cd /iscsi/iqn....:server/tpg1/luns
create /backstores/block/backend
创建acl访问口令,知道口令的客户端可以访问
cd /iscsi/iqn...:server/tpg1/acls
create iqn.2022-08.com.example:client(客户端名称)
创建门户(portal)的监听ip与端口
cd /iscsi/iqn....:server/tpg1/portals
create 客户端ip 端口号
create 10.11.100.129 3260
删除命令为 delete 10.11.100.129 3260
配置用户密码
cd /iscsi/iqn....:server/tpg1/acls/iqn...:client/
set auth userid=test
set auth password=test
返回保存退出
cd /
saveconfig
exit
systemctl restart target
客户端配置:
安装软件包
yum -y install iscsi-initiator-utils
启动iscsi服务
systemctl start iscsi
设置开机启动
systemctl enable iscsi
配置iscsi initiator名称
vi /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn....:client 服务端中配置的名称
配置用户名密码,取消注释,修改账户密码
vi /etc/iscsi/iscsid.conf
node.session.auth.authmethod=CHAP
node.session.auth.username=test
node.session.auth.password=test
重启服务
systemctl restart iscsid
发现查到iscsi设备 服务端
iscsiadm --mode discovery -type sendtargets -portal 10.11.100.128(服务端ip)
简写:iscsiadm -m discovery -t st -p 10.11.100.128
连接登录设备
iscsiadm --mode node --targetname iqn....:server --portal 10.11.100.128 --login
或者
iscsiadm -m node --login
修改自动加载
vim /var/lib/iscsi/nodes/iqn...:server/*/default
node.conn[0].startup=automatic 将manual改为自动
重启服务