目次- 1. ディスクの追加
-
- /dev/sdbの高速パーティション作成
-
- sdb1を使用したPVの作成
-
- PV sdb1を使用したVGの作成
-
- VG zcmを使用したLVの作成
-
- ファイルシステムのフォーマット
-
- ディレクトリの作成とマウント
-
- マウントディレクトリの拡張
-
- ディスククォータの設定
-
- コンテナとホスト間のNFSディレクトリ共有
-
- 実行中のDockerコンテナに権限を付与する方法
- ディスクの追加 =======
仮想マシン停止状態で追加
起動後ディスク確認
fdisk -l
未認識の場合は以下のコマンドを実行:このコマンドはSCSIホストを再スキャンし情報を更新し、シャットダウン不要で新規ディスクを認識させます。
echo "- - -" > /sys/class/scsi_host/host0/scan
再度確認
[root@c7-1 ~]#fdisk -l
ディスク /dev/sda:107.4 GB, 107374182400 バイト, 209715200 セクタ
Units = セクタ of 1 * 512 = 512 バイト
セクタサイズ(論理/物理):512 バイト / 512 バイト
I/Oサイズ(最小/最適):512 バイト / 512 バイト
ディスクラベルタイプ:dos
ディスク識別子:0x000aaa47
デバイス Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 106956799 52428800 83 Linux
/dev/sda3 106956800 115345407 4194304 82 Linux swap / Solaris
/dev/sda4 115345408 209715199 47184896 5 Extended
/dev/sda5 115347456 207622143 46137344 83 Linux
ディスク /dev/sdb:53.7 GB, 53687091200 バイト, 104857600 セクタ
Units = セクタ of 1 * 512 = 512 バイト
セクタサイズ(論理/物理):512 バイト / 512 バイト
I/Oサイズ(最小/最適):512 バイト / 512 バイト
- /dev/sdbの高速パーティション作成 ====================
echo -e "n\np\n1\n\n\nt\n1\n8e\nw\n" |fdisk /dev/sdb
partprobe /dev/sdb
# ------------------------------------------------------
[root@c7-1 ~]#fdisk -l
......
ディスク /dev/sdb:53.7 GB, 53687091200 バイト, 104857600 セクタ
Units = セクタ of 1 * 512 = 512 バイト
セクタサイズ(論理/物理):512 バイト / 512 バイト
I/Oサイズ(最小/最適):512 バイト / 512 バイト
ディスクラベルタイプ:dos
ディスク識別子:0x117f3034
デバイス Boot Start End Blocks Id System
/dev/sdb1 2048 104857599 52427776 1 FAT12
- sdb1を使用したPVの作成 ================
pvcreate /dev/sdb1
#----------------------------------
[root@c7-1 ~]#pvscan
PV /dev/sdb1 lvm2 [<50.00 GiB]
合計: 1 [<50.00 GiB] / 使用中: 0 [0 ] / VGなし: 1 [<50.00 GiB]
- PV sdb1を使用したVGの作成 ===================
vgcreate zcm /dev/sdb1
#------------------------------------
[root@c7-1 ~]#vgs
VG #PV #LV #SN Attr VSize VFree
zcm 1 0 0 wz--n- <50.00g <50.00g
[root@c7-1 ~]#vgdisplay
--- ボリュームグループ ---
VG Name zcm
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / <50.00 GiB
VG UUID 9KSu1l-Syr4-QB0a-zoDN-qMrA-90mo-jBymo5
- VG zcmを使用したLVの作成 ==================
lvcreate -L [論理ボリュームサイズ] -n [論理ボリューム名] [ボリュームグループ名]
lvcreate -L 20G -n zcm9 zcm
# --------------------------------
[root@c7-1 ~]#lvcreate -L 20G -n zcm9 zcm
論理ボリューム "zcm9" が作成されました。
[root@c7-1 ~]#lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
zcm9 zcm -wi-a----- 20.00g
[root@c7-1 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 44G 0 part /data
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 50G 0 part
└─zcm-zcm9 253:0 0 20G 0 lvm
sr0 11:0 1 4.4G 0 rom
- ファイルシステムのフォーマット ==========
[root@c7-1 ~]#ll /dev/mapper/zcm-zcm9
lrwxrwxrwx 1 root root 7 7月 25 20:53 /dev/mapper/zcm-zcm9 -> ../dm-0
[root@c7-1 ~]#mkfs.xfs /dev/mapper/zcm-zcm9
meta-data=/dev/mapper/zcm-zcm9 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5242880, 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@c7-1 ~]#mkdir /nfsdata
[root@c7-1 ~]#mount /dev/mapper/zcm-zcm9 /nfsdata/
[root@c7-1 ~]#df -h
ファイルシステム 容量 使用 残り 使用% マウントポイント
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 50G 6.6G 44G 14% /
/dev/sda5 44G 40M 44G 1% /data
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/zcm-zcm9 20G 33M 20G 1% /nfsdata
/etc/fstabに記述
[root@c7-1 ~]#umount /nfsdata/
[root@c7-1 ~]#echo "/dev/mapper/zcm-zcm9 /nfsdata xfs defaults,usrquota,grpquota 0 0" >> /etc/fstab
[root@c7-1 ~]#mount -a
- マウントディレクトリの拡張 =========
lvextend -L +20G /dev/mapper/zcm-zcm9 # 20G拡張
lvextend -l +100%FREE /dev/mapper/zcm-zcm9 # 残りすべてを拡張
# --------------------------------------------------------
[root@c7-1 ~]#lvextend -L +20G /dev/mapper/zcm-zcm9
論理ボリューム zcm/zcm9 のサイズが 20.00 GiB (5120 エクステント) から 40.00 GiB (10240 エクステント) に変更されました。
論理ボリューム zcm/zcm9 が正常にリサイズされました。
[root@c7-1 ~]#lvextend -l +100%FREE /dev/mapper/zcm-zcm9
論理ボリューム zcm/zcm9 のサイズが 40.00 GiB (10240 エクステント) から <50.00 GiB (12799 エクステント) に変更されました。
論理ボリューム zcm/zcm9 が正常にリサイズされました。
確認:まだ反映されていない
[root@c7-1 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 50G 0 part /
├─sda3 8:3 0 4G 0 part [SWAP]
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 44G 0 part /data
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 50G 0 part
└─zcm-zcm9 253:0 0 50G 0 lvm /nfsdata
sr0 11:0 1 4.4G 0 rom
[root@c7-1 ~]#df -h
ファイルシステム 容量 使用 残り 使用% マウントポイント
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 50G 6.6G 44G 14% /
/dev/sda5 44G 40M 44G 1% /data
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/zcm-zcm9 20G 33M 20G 1% /nfsdata
反映させる
# xfsファイルシステム
[root@c7-1 ~]#xfs_growfs /dev/mapper/zcm-zcm9
meta-data=/dev/mapper/zcm-zcm9 isize=512 agcount=4, agsize=1310720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=5242880, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 5242880 to 13106176
[root@c7-1 ~]#df -h
ファイルシステム 容量 使用 残り 使用% マウントポイント
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 13M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda2 50G 6.6G 44G 14% /
/dev/sda5 44G 40M 44G 1% /data
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 378M 12K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
/dev/mapper/zcm-zcm9 50G 33M 50G 1% /nfsdata
- ディスククォータの設定 =========
ユーザーを作成し、ファイルディレクトリに対してクォータを設定します。
yum -y install xfsprogs quota
useradd gby
echo "123456" |passwd --stdin gby
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=8 ihard=10 gby' /nfsdata/ # エラーの場合は再起動
xfs_quota -x -c 'report -aibh'
#-----------------------------------
[root@c7-1 ~]#xfs_quota -x -c 'report -aibh'
ユーザクォータ on /nfsdata (/dev/mapper/zcm-zcm9)
Blocks Inodes
User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
gby 0 80M 100M 00 [------] 0 8 10 00 [------]
グループクォータ on /nfsdata (/dev/mapper/zcm-zcm9)
Blocks Inodes
Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root 0 0 0 00 [------] 3 0 0 00 [------]
検証
chmod 777 /nfsdata
su - gby
cd /nfsdata
dd if=/dev/zero of=/nfsdata/test.txt bs=10M count=12 #ディスククォータを超過し、100Mのみコピー
touch {1..6}.txt #作成不可、ディスククォータを超過
- コンテナとホスト間のNFSディレクトリ共有 =====================
ホスト側NFSサーバー設定
yum -y install nfs-utils rpcbind
mkdir /nfsdata
chmod 777 /nfsdata
cat >> /etc/exports << EOF
#/nfsdata 192.168.10.0/24(rw,sync,no_root_squash)
/nfsdata *(rw,sync,insecure,no_subtree_check,no_root_squash)
EOF
systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs && systemctl enable nfs
exportfs -rv
showmount -e
コンテナ実行:Dockerバージョンを確認し、古すぎると動作しません。
[root@c7-1 /data]#cat start.sh
#!/bin/bash
/usr/local/openresty/nginx/sbin/nginx
[root@c7-1 /data]#cat Dockerfile
FROM centos:centos7
MAINTAINER zc
ENV TIME_ZOME=Asia/Shanghai
WORKDIR /usr/local/openresty
RUN yum -y install readline-devel pcre-devel openssl-devel zlib-devel gcc gcc-c++ perl make kernel-headers kernel-devel curl wget postgresql-devel nfs-utils rpcbind &> /dev/null && \
wget https://openresty.org/download/openresty-1.21.4.1.tar.gz &> /dev/null && \
tar zxvf openresty-1.21.4.1.tar.gz &> /dev/null && \
cd openresty-1.21.4.1/ &> /dev/null && \
./configure &> /dev/null && \
make -j 4 &> /dev/null && make install &> /dev/null && \
ln -s /usr/local/openresty/nginx/sbin/nginx /usr/local/sbin/ &> /dev/null && \
mkdir /nfs-client &> /dev/null
ENV PATH=/usr/local/openresty/nginx/sbin:$PATH
ENV export PATH
EXPOSE 80
RUN echo "daemon off;">>/usr/local/openresty/nginx/conf/nginx.conf
workdir /
ADD start.sh /start.sh
RUN chmod 755 /start.sh
CMD ["/start.sh"]
特権モードでコンテナ実行、マウントできない
[root@c7-1 ~]#docker run -itd --name openresty_test -p 2000:80 --privileged openresty:v1
93f086ef6408929329705ea1939e32ae3440fb5f5656bfedec620396cbf8eb0f
[root@c7-1 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a81b92d0577 openresty:1.21.4.1 "/start.sh" 5 seconds ago Up 3 seconds 0.0.0.0:2000->80/tcp openresty_test
コンテナ内NFSクライアント設定
docker exec -it openresty_test bash
yum -y install nfs-utils rpcbind
cd
/usr/sbin/rpcbind
showmount -e 192.168.10.20
mkdir /nfs_open
mount -t nfs 192.168.10.20:/nfsdata /nfs_open
df -Th | grep nfs
実行時にマウント指定、NFS不要
docker run --privileged=true -itd -p 3500:80 --name openresty_test-03 --mount type=bind,source=/data/zc,target=/data/zc openresty:20220726 /bin/bash
コンテナ内確認
[root@205cee907a90 zc]# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 50G 6.8G 43G 14% /
tmpfs 64M 0 64M 0% /dev
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda5 44G 33M 44G 1% /data/zc
- 実行中のDockerコンテナに権限を付与する方法 ========================
特権モードのrootはホストに対して真のrootですが、通常モードのrootはホストに対して擬似rootであり、通常ユーザーと同等です。
方法1:
コンテナ作成時にprivileged=trueパラメータを使用
方法2:
既存コンテナに特権モードを有効化
#cd /var/lib/docker/containers/<コンテナID>/
#docker stop <コンテナID>
#vim hostconfig.json
"Privileged":false を "Privileged":true に変更
設定ファイル保存
#systemctl restart docker
#docker start <コンテナID>
#検証
mkdir /home/test
mkdir /home/test2
mount -o bind /home/test /home/test2 #特権モードでは成功、通常モードでは失敗
例
[root@c7-1 ~]#docker run -itd --name openresty_v1 -p 2000:80 openresty:v1
5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980
[root@c7-1 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a12c032a563 openresty:v1 "/start.sh" 5 seconds ago Up 4 seconds 0.0.0.0:2000->80/tcp, :::2000->80/tcp openresty_v1
[root@c7-1 ~]#docker exec -it openresty_v1 bash
[root@5a12c032a563 /]# ls
anaconda-post.log dev home lib64 mnt opt root sbin start.sh tmp var
bin etc lib media nfs-client proc run srv sys usr
[root@5a12c032a563 /]# showmount -e 192.168.10.20
Export list for 192.168.10.20:
/nfsdata *
[root@5a12c032a563 /]# /usr/sbin/rpcbind
[root@5a12c032a563 /]# ps -ef | grep rpcbind
rpc 25 0 0 11:43 ? 00:00:00 /usr/sbin/rpcbind
root 27 9 0 11:43 pts/1 00:00:00 grep --color=auto rpcbind
[root@5a12c032a563 /]# mount -t nfs 192.168.10.20:/nfsdata /nfs-client/
mount.nfs: Operation not permitted
[root@5a12c032a563 /]# exit
exit
[root@c7-1 ~]#cd /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980/
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#docker stop 5a12c032a563
5a12c032a563
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#vim hostconfig.json
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#cat hostconfig.json | grep -o '"Privileged":true'
"Privileged":true
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#systemctl restart docker
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#docker start 5a12c032a563
5a12c032a563
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#cd
[root@c7-1 /var/lib/docker/containers/5a12c032a5630b6b75f4b078a2166716926e58f8c9eddc8843e1e1848f829980]#docker exec -it openresty_v1 bash
[root@5a12c032a563 /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt nfs-client opt proc root run sbin srv start.sh sys tmp usr var
[root@5a12c032a563 /]# ps -ef | grep rpcbind
root 24 8 0 12:06 pts/1 00:00:00 grep --color=auto rpcbind
[root@5a12c032a563 /]# /usr/sbin/rpcbind
[root@5a12c032a563 /]# ps -ef | grep rpcbind
rpc 26 0 1 12:06 ? 00:00:00 /usr/sbin/rpcbind
root 28 8 0 12:06 pts/1 00:00:00 grep --color=auto rpcbind
[root@5a12c032a563 /]# mount -t nfs 192.168.10.20:/nfsdata /nfs-client/
[root@5a12c032a563 /]# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 50G 7.0G 43G 14% /
tmpfs 64M 0 64M 0% /dev
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/sda2 50G 7.0G 43G 14% /etc/hosts
tmpfs 1.9G 0 1.9G 0% /proc/asound
tmpfs 1.9G 0 1.9G 0% /proc/acpi
tmpfs 1.9G 0 1.9G 0% /proc/scsi
tmpfs 1.9G 0 1.9G 0% /sys/firmware
192.168.10.20:/nfsdata 50G 7.0G 43G 14% /nfs-client