工作中需要搭建内部网络的yum软件仓库,便于各主机安装更新软件。
- 软件仓库的文件存储放在一台IPSAN(192.168.0.46)上,其中包括一些Linux发行版的ISO镜像和YUM同步的源。
- 软件仓库服务器(HTTP方式)运行在CentOS7的服务器上(192.168.0.41)。
这台IPSAN(RDX)上的分区比较特殊,是NTFS格式的,在windows 2008 server上挂载写入数据,然后挂载到CentOS7上。
1. 挂载IPSAN
参考《Linux挂载iscsi存储》、《Linux——iscsiadm基本用法》、《iscsi磁盘挂载并设置为开机自动挂载》
(1)启动iscsi服务
rpm -aq|grep iscsi
systemctl start iscsi
(2)发现/查看IPSAN:192.168.0.46上的可用设备
iscsiadm -m discovery -t sendtargets -p 192.168.0.46:3260
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx8-8.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx7-7.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx6-6.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx5-5.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx4-4.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx3-3.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx2-2.989401959
192.168.0.46:3260,1 iqn.2010-01.com.tandbergdata:storage.rdx1-1.989401959
#查看iscsi信息
tree /var/lib/iscsi
(3)注册iscsi设备,上面有8个设备,只挂载其中的一个
$iscsiadm -m node -T iqn.2010-01.com.tandbergdata:storage.rdx1-1.989401959 -p 192.168.0.46:3260 -l
#查看就有哪些target记录在了Open-iSCSI数据库中
$iscsiadm -m node
$iscsiadm -m session -R
iSCSI设备设置为开机自动挂载
$iscsiadm -m node -T iqn.2010-01.com.tandbergdata:storage.rdx1-1.989401959 -p 192.168.0.46:3260 --op update -n node.startup -v automatic
#这步执行成功后是没有返回值的,可以先看看scsi目录结构,然后查看详细的scsi信息,找node.startup
# tree /var/lib/iscsi
# cat /var/lib/iscsi/nodes/...../default
(4)挂载ntfs分区(关于Linux支持ntfs格式分区详见下一节)
#安装Linux下ntfs支持软件包 ntfs-3g
rpm -ivh ntfs-3g-2017.3.23AR.5-1.el7.x86_64.rpm
#挂载这个ipsan硬盘到 /mnt/rdx目录(需要提前建立此目录)
$mount -t ntfs /dev/sdb1 /mnt/rdx/
(5)挂载成功后,用df命令可以看到挂载的分区 /mnt/rdx
[root@backupDK yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 9.8G 41G 20% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 11M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 1014M 170M 845M 17% /boot
/dev/mapper/centos-home 491G 8.2G 483G 2% /home
tmpfs 3.2G 12K 3.2G 1% /run/user/42
tmpfs 3.2G 0 3.2G 0% /run/user/0
/dev/sdb1 299G 78G 221G 27% /mnt/rdx
lsblk命令也可以查看到挂载硬盘情况
(6)将IPSAN上的CentOS-7-x86_64-Everything-1708.iso文件挂载到 /home/linuxrepo/centos1708,ISO文件都是只读挂载。
mkdir /home/linuxrepo/centos1708
mount -o loop /mnt/rdx/CentOS-7-x86_64-Everything-1708.iso /home/linuxrepo/centos1708
用df命令可以看到多出来一个设备 /dev/loop0,挂载点是/home/linuxrepo/centos1708
[root@backupDK yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 9.8G 41G 20% /
......
/dev/sdb1 299G 78G 221G 27% /mnt/rdx
/dev/loop0 8.1G 8.1G 0 100% /home/linuxrepo/centos1708
(7)进入到 /home/linuxrepo/目录下,启动caddy fileserver browse,就建立了一个yum本地网络软件源。
(8)如果不需要使用IPSAN了,则反过来进行卸载。
$umount /mnt/rdx
$iscsiadm -m node -T iqn.2010-01.com.tandbergdata:storage.rdx1-1.989401959 -p 192.168.0.46:3260 -u
2. ntfs-3g:让Linux支持NTFS读写
Linux支持NTFS基本有两种模式:
1. NTFS内核支持,内核自带的NTFS模块只支持读操作。支持NTFS文件系统是Linux内核模块的特征,而不是Linux发行版的特征。ubuntu支持,centos/redhat默认不支持。可以通过bai命令查看,如 modinfo ntfs . 如果有输出就是支持;否则,不支持。
2. ntfs-3g软件包方式,支持读写NTFS分区。FUSE是一个用户空间的文件系统,NTFS-3G是基于FUSE开发的NTFS支持项目。本文主要介绍这种方式。
ntfs-3g最新的是3.23版本,下载地址是(下载想应的版本即可):Advanced NTFS-3G Features
龙芯也提供了MIPS版本:http://ftp.loongnix.org/os/loongnix/1.0/os/Packages/n/ntfs-3g-2014.2.15-4.fc21.loongson.mips64el.rpm
安装很简单:
rpm -ivh ntfs-3g-2017.3.23AR.5-1.el7.x86_64.rpm
然后就可以正常挂载ntfs分区,如:$mount -t ntfs /dev/sdb1 /mnt/rdx/
3. 挂载移动硬盘/U盘
Linux设备上插入优盘后,可以用lsusb查看设备,用fdisk查看设备号。
lsusb命令如下安装:yum -y install usbutils
[root@localhost opt]# fdisk -l^C
[root@localhost opt]# lsusb
Bus 002 Device 003: ID 0bc2:ab26 Seagate RSS LLC Backup Plus Slim Portable Drive 1 TB
Bus 002 Device 002: ID 8087:8002 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:800a Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@localhost opt]# fdisk -l
......
设备 Boot Start End Blocks Id System
/dev/sdb1 * 2048 3907029166 1953513559+ 7 HPFS/NTFS/exFAT
如前步骤安装了ntfs-3g支持后,可以直接进行挂载,如下:
[root@localhost opt]#mkdir /mnt/usbhd
[root@localhost opt]#mount -t ntfs /dev/sdc1 /mnt/usbhd
#注:对ntfs格式的分区使用-t ntfs,对fat32格式的分区应使用-t vfat:mount -t vfat /dev/sdc5 /mnt/usbhd2
#若汉字文件名显示为乱码或不显示,如下:mount -t ntfs -o iocharset=cp936 /dev/sdc1 /mnt/usbhd
然后可以在/mnt/usbhd下对移动硬盘进行文件操作。
卸载设备,参考《Linux弹出U盘的正确姿势》。安全的做法是先卸载文件系统挂接:umount <挂载点>,然后关闭:udisksctl power-off -b <device>(或者使用eject命令,如eject /dev/sda1),如下(先用lsusb和lsblk分别查看USB存储设备及其挂接情况,这里有两个移动存储设备):
[root@localhost mirrors.aliyun.com]# lsusb
Bus 002 Device 004: ID 03f0:0825 HP, Inc
Bus 002 Device 003: ID 0bc2:ab26 Seagate RSS LLC Backup Plus Slim Portable Drive 1 TB
Bus 002 Device 002: ID 8087:8002 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:800a Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[root@localhost mirrors.aliyun.com]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 558.4G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 557.4G 0 part
├─centos-root 253:0 0 126G 0 lvm /
├─centos-swap 253:1 0 31.4G 0 lvm [SWAP]
└─centos-home 253:2 0 400G 0 lvm /home
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part
sdc 8:32 1 1.8T 0 disk
└─sdc1 8:33 1 1.8T 0 part /mnt/rdxhd
[root@localhost mirrors.aliyun.com]# udisksctl power-off -b /dev/sdb1
4. 挂载2TB以上的硬盘或者IPSAN
要是遇到分区大于2T的磁盘(比如:添加一个10TB的IPSAN存储),由于MBR分区表只支持2T磁盘,大于2T的磁盘必须使用GPT分区表(做raid时会划分多个VD)。GPT格式的磁盘相当于原来MBR磁盘中原来保留4个partition table的4*16个字节,只留第一个16个字节,类似于扩展分区,真正的partition table在512字节之后,GPT磁盘没有四个主分区的限制。
fdisk是不支持GPT分区的,使用parted来对GPT磁盘操作。parted功能很强大,既可用命令行也可以用于交互式,在提示符下输入parted就会进入交互式模式,如果有多个磁盘的话,需要运行select sdX(X为磁盘)来进行磁盘的选择,也可直接用parted /dev/sdX指定相应的硬盘。
首先,查看新增加的硬盘:
[root@server ~]# fdisk -l
Disk /dev/sdb: 2190.4 GB, 2190433320960 bytes
255 heads, 63 sectors/track, 266305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
用parted分区:
[root@server ~]# parted
GNU Parted 1.8.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb //选择磁盘sdb
Using /dev/sdb
(parted) mklabel gpt //将MBR磁盘格式化为GPT
(parted) mkpart primary 0 -1 //将整块磁盘分成一个分区
(parted) print
Number Start End Size File system Name Flags
1 17.4kB 2190GB 2190GB primary
(parted) quit
Information: Don't forget to update /etc/fstab, if necessary.
格式化为xfs分区(-f 表示强制格式化)
mkfs.xfs -f /dev/sdb1
注:在Linux系统中挂载SCSI盘阵分区大小超过2TB时,使用mkfs.ext3命令格式化需要增加-T largefile参数,否则格式化过程将非常缓慢。
[root@server ~]# mkfs.ext3 -T largefile /dev/sdb1
最后,在fstab中添加一行完成分区的自动挂载
[root@server ~]# vi /etc/fstab
/dev/sdb1 /data
也有资料说,挂载iscsi分区,如果有多路径,配置完多路径后写fstab加上_netdev参数(防止开机一直卡这里),在网络关闭前卸载卷,网络启动时加载卷!
/dev/sdb1 /data default,_netdev 0 0