์ฐ๋ฆฌ ์ค์ "์ ๋ฌธ์ ์ธ ๊ทน๋จ"์ ์ข์ํ์ง ์๋ ์ฌ๋๋ค(tsefovodov)์ด ์์ต๋๊น?
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ์ด ๋งค์ฐ ํฅ๋ฏธ๋กญ๊ณ ์ฌ๋ฏธ์๋ ์ ํ์ ๊ฐ์ง๊ณ ์ด๋ฆฌ์ ๋ฆฌ ํค๋งค์ง ์์ ๊ฒ์ ๋๋ค.
Ceph ์ด์์ ์ฐธ์ฌํ ๋ง์ ์ฌ๋๋ค์ ๊ทธ๋ค์ง ์์ฃผ ๋ฐ์ํ์ง๋ ์์ง๋ง(๋๋ ๋งค์ฐ ๋๋ฌผ๊ฒ) ๋๋ก๋ ์์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฆ, iSCSI ๋๋ FC๋ฅผ ํตํด Ceph๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ํ์ต๋๋ค. ๋ฌด์์ ์ํด? ์๋ฅผ ๋ค์ด Ceph์ ์ด๋ฏธ์ง๋ฅผ ์ด๋ค ์ด์ ๋ก ์์ง ๊ฐ์ํ๋์ง ์์ Windows ๋๋ Solaris ์๋ฒ์ ์ ์ถํฉ๋๋ค. ๋๋ ๊ฐ์ํ๋ ๊ฒ์ด์ง๋ง Ceph๋ฅผ ์ํํ ์ ์๋ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ - ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ฏ์ด ๊ทธ๋ฐ ๊ฒ๋ค์ด ๋ง์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด? ์๋ฅผ ๋ค์ด ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉ๋๋ HyperV ๋๋ ESXi๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Ceph์์ ๊ฒ์คํธ ๋จธ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ ์์
์ด ๋ฐ์ํ๋ค๋ฉด ์ด๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์์
์ผ๋ก ๋ณํฉ๋๋ค.
๊ทธ๋์, ์ฃผ์ด์ง :
- ์ด๋ฏธ ์คํ ์ค์ธ Ceph ํด๋ฌ์คํฐ
- iSCSI๋ฅผ ํตํด ์ ๊ณต๋์ด์ผ ํ๋ ์ด๋ฏธ ์กด์ฌํ๋ ์ด๋ฏธ์ง
- ํ ์ด๋ฆ ๋ง์ดํ, ์ด๋ฏธ์ง ์ด๋ฆ ๋ง์ด ์ด๋ฏธ์ง
์์ํ๋ค?
์ฐ์ FC๋ iSCSI์ ๊ดํด ์ด์ผ๊ธฐํ ๋ ์ด๋์์์ดํฐ์ ํ๊ฒ๊ณผ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ต๋๋ค. ๋์์ ์ค์ ๋ก ์๋ฒ์ด๊ณ ๊ฐ์์๋ ํด๋ผ์ด์ธํธ์ ๋๋ค. ์ฐ๋ฆฌ์ ์๋ฌด๋ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก Ceph ์ด๋ฏธ์ง๋ฅผ ๊ฐ์์์๊ฒ ์ ์ถํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ชฉํ๋ฅผ ํ์ฅํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ํ์ง๋ง ์ด๋, ์ด๋ค ์ปดํจํฐ์์?
๋คํ์ค๋ฝ๊ฒ๋ Ceph ํด๋ฌ์คํฐ์๋ IP ์ฃผ์๊ฐ ๊ณ ์ ๋์ด ์๊ณ Ceph์ ๊ฐ์ฅ ์ค์ํ ๊ตฌ์ฑ ์์ ์ค ํ๋๊ฐ ๊ตฌ์ฑ๋์ด ์๋ ๊ตฌ์ฑ ์์๊ฐ ํ๋ ์ด์ ์์ผ๋ฉฐ, ํด๋น ๊ตฌ์ฑ ์์๋ ๋ชจ๋ํฐ์ ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ํฐ์ iSCSI ๋์์ ์ค์นํฉ๋๋ค(์ ์ด๋ ํ ์คํธ๋ฅผ ์ํด ๋์์ ์ด๊ธฐ์๋ ์ค์นํฉ๋๋ค). CentOS์์ ์ด ์์ ์ ์ํํ์ง๋ง ์ด ์๋ฃจ์ ์ ๋ค๋ฅธ ๋ฐฐํฌํ์๋ ์ ํฉํฉ๋๋ค. ๋ฐฐํฌํ์์ ํ์ฉ๋๋ ๋ฐฉ์์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
# yum -y install iscsi-initiator-utils targetcli
์ค์น๋ ํจํค์ง์ ๋ชฉ์ ์ ๋ฌด์์ ๋๊น?
- ํ๊ฒํด๋ฆฌ โ Linux ์ปค๋์ ๋ด์ฅ๋ SCSI ๋์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ํธ๋ฆฌํฐ
- iscsi ๊ฐ์์ ์ ํธ๋ฆฌํฐ โ Linux ์ปค๋์ ๋ด์ฅ๋ iSCSI ์ด๊ธฐ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ํธ๋ฆฌํฐ๊ฐ ํฌํจ๋ ํจํค์ง
iSCSI๋ฅผ ํตํด ๊ฐ์์์๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ ์ถํ๋ ค๋ฉด ์ด๋ฒคํธ ๊ฐ๋ฐ์ ์ํ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ๋์์ ์ฌ์ฉ์ ๊ณต๊ฐ ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ด๋ฏธ์ง๋ฅผ ์ด์ ์ฒด์ ์ ํ์๋๋ ๋ธ๋ก ์ฅ์น๋ก ์ฐ๊ฒฐํ๊ณ iSCSI๋ฅผ ํตํด ๋ด๋ณด๋ด๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ ๋ฐฑ์๋๋ ์ฌ์ ํ "์คํ์ " ์ํ์ ์์ผ๋ฉฐ ์์ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ค๋น๊ฐ ๋์ด ์์ง ์์ต๋๋ค. ๋ํ ๊ทธ๊ฒ์ ๋ํด ๋ง์ด ์ด์ผ๊ธฐํ๊ณ (์ค ๊ณตํฌ!) ๋ ผ์์ ๋ฒ์ผ ์์๋ ํจ์ ์ด ์์ต๋๋ค.
์ง์ ์ฃผ๊ธฐ๊ฐ ๊ธด ๋ค์ ์์ ์ ์ธ ๋ฐฐํฌํ์ ์ฌ์ฉํ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ปค๋์ ๊ณ ๋ ๋ฒ์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด CentOS7์์๋ 3.10.*์ด๊ณ CentOS8์์๋ 4.19์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ต์ํ 5.3(ํน์ 5.4) ์ด์์ ์ปค๋์ ๊ด์ฌ์ด ์์ต๋๋ค. ์? ๊ธฐ๋ณธ์ ์ผ๋ก Ceph ์ด๋ฏธ์ง์๋ ์ด์ ์ปค๋๊ณผ ํธํ๋์ง ์๋ ์ต์ ์ธํธ๊ฐ ํ์ฑํ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ ๋ฐฐํฌ์ฉ ์ ์ปค๋(์: CentOS์ ๊ฒฝ์ฐ elrepo)๊ณผ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ ์ปค๋์ ์ค์นํ ํ ์์คํ ์ ์ฌ๋ถํ ํ์ฌ ์ ์ปค๋๋ก ์์ ํ๋ค๋ ์๋ฏธ์ ๋๋ค.
- ์คํ์ ์ ํํ ๋ชจ๋ํฐ์ ์ฐ๊ฒฐ
- ์ง์นจ์ ๋ฐ๋ผ elrepo ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.
elrepo.org/tiki/tiki-index.php - ์ปค๋ ์ค์น: yum -y โenablerepo=elrepo-kernel install kernel-ml
- ๋ชจ๋ํฐ๋ก ์๋ฒ๋ฅผ ์ฌ๋ถํ ํ์ธ์. (๋ชจ๋ํฐ๊ฐ XNUMX๊ฐ์ฃ ?)
์ด๋ฏธ์ง๋ฅผ ๋ธ๋ก ์ฅ์น๋ก ์ฐ๊ฒฐ
# rbd map mypool/myimage
/dev/rbd0
๋จ์ ๊ฒ์ ๋์์ ๊ตฌ์ฑํ๋ ๊ฒ๋ฟ์ ๋๋ค. ์ด ์์์๋ ์์ ๋์์ ๊ตฌ์ฑํ๊ฒ ์ต๋๋ค. ๋ฐ๋ชจ ๋ชจ๋ - ์ธ์ฆ ์์ด ๋ชจ๋ ์ฌ๋์ด ๋ณผ ์ ์๊ณ ์ ๊ทผํ ์ ์์ต๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ธ์ฆ์ ๊ตฌ์ฑํ๊ณ ์ถ์ ์๋ ์์ง๋ง ์ด๋ ์ค๋์ ์ฌ๋ฏธ๋ฅผ ์ํ ์ฐ์ต์ ๋ฒ์๋ฅผ ์ฝ๊ฐ ๋ฒ์ด๋ฉ๋๋ค.
/dev/rbd/mypool/myimage ํ์ผ๊ณผ ์ฐ๊ฒฐ๋ disk1์ด๋ผ๋ ๋ฐฑ์๋๋ฅผ ์์ฑํฉ๋๋ค. ์ง์ ๋ ํ์ผ์ udev ๋ฐ๋ชฌ์ ์ํด /dev/rbd0์ ์๋์ผ๋ก ์์ฑ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ๋๋ค. Ceph ์ด๋ฏธ์ง๊ฐ ํธ์คํธ์ ์ฐ๊ฒฐ๋๋ ์์์ ๋ฐ๋ผ rbd ์ฅ์น์ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฏ๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐฑ์๋๋ฅผ ๋ง๋ญ๋๋ค.
# targetcli /backstores/block create disk1 /dev/rbd/mypool/myimage
iSCSI ๋์์ ์์ฑํฉ๋๋ค:
# targetcli /iscsi create iqn.2020-01.demo.ceph:mypool
๋ฐฑ์๋๋ฅผ LUN์ผ๋ก ๋์์ ์ฐ๊ฒฐํฉ๋๋ค.
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/luns create /backstores/block/disk1
๋ฐ๋ชจ ๋ชจ๋์ ๋ํ ๋์์ ๊ตฌ์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute demo_mode_write_protect=0
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute generate_node_acls=1
# targetcli /iscsi/iqn.2020-01.demo.ceph:mypool/tpg1/ set
> attribute cache_dynamic_acls=1
๊ตฌ์ฑ์ ์ ์ฅํฉ๋๋ค.
# targetcli saveconfig
๋์์ ๊ฐ์ฉ์ฑ ํ์ธ:
# iscsiadm -m discovery -t st -p 127.0.0.1:3260
127.0.0.1:3260,1 iqn.2020-01.demo.ceph:mypool
๋์์ ์ฐ๊ฒฐํฉ๋๋ค.
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] (multiple)
Login to [iface: default, target: iqn.2020-01.demo.ceph:mypool, portal: 127.0.0.1,3260] successful.
๋ชจ๋ ์์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ค๋ฉด SCSI ์ฅ์น์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ iSCSI ๋์์ ํตํด ์ก์ธ์ค๋๋ Ceph์ ์ด๋ฏธ์ง์ธ ์ ๋์คํฌ๊ฐ ์๋ฒ์ ๋ํ๋ฉ๋๋ค. ๋ถํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ฐ๊ฒฐ๋ ๋์คํฌ์ ๊ฐ์ง๋ ๋์์ ๋ก์ปฌ ์์ ํ๋ก๊ทธ๋จ์์ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
# iscsiadm -m node --logout
# iscsiadm -m discoverydb -o delete -t st -p 127.0.0.1:3260
๋จ์ ๊ฒ์ ์ด๋ฏธ์ง๊ฐ ์๋์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ์ฐ๊ฒฐ ํ ๋์์ด ๊ณ์ธตํ๋๋๋ก ๊ตฌ์ฑ์ ์ ์งํ๋ ๊ฒ์ ๋๋ค. ๋์ ์์์ RBD๋ฅผ ์ฐ๊ฒฐํ๊ณ ์ค์ ๋ก ๋์์ ์์ํ๋ ๋ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋จผ์ ํธ์คํธ์ ๋ํ RBD ์ด๋ฏธ์ง์ ์๋ ์ฐ๊ฒฐ์ ๊ตฌ์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ /etc/ceph/rbdmap ํ์ผ์ ๋ค์ ํ์ ์ถ๊ฐํ์ฌ ์ํ๋ฉ๋๋ค.
# cat /etc/ceph/rbdmap
# RbdDevice Parameters
mypool/myimage id=admin
# systemctl enable rbdmap
๋์ ๊ตฌ์ฑ์ ๋ณต์ํ๋ ๊ฒ์ ์ข ๋ ๋ณต์กํฉ๋๋ค. ๊ตฌ์ฑ์ ๋ณต์ํ systemd์ฉ ์ ๋์ ์์ฑํด์ผ ํฉ๋๋ค.
# cat /usr/lib/systemd/system/scsi-target.service
[Unit]
Description=Start iSCSI target
After=network-online.target rbdmap.service
Before=remote-fs-pre.target
Wants=network-online.target remote-fs-pre.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/targetcli restoreconfig
[Install]
WantedBy=multi-user.target
# systemctl daemon-reload
# systemctl enable scsi-target
๋ง์ง๋ง ํ ์คํธ๋ ๋ชจ๋ํฐ๋ฅผ ๋ค์ ์ฌ๋ถํ ํ๋ ๊ฒ์ ๋๋ค(์ด์ iSCSI ๋์์). ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๊ฐ์์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ง์ฐ์ง ์์ ๊ฒฝ์ฐ ์ฃผ์ํด์ผ ํฉ๋๋ค. iscsiadm -n discoverydb -o ์ญ์ ... ์๋ฒ๊ฐ ๋ก๋๋์ง ์๊ฑฐ๋ ๋ก๋ํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋จ์ ๊ฒ์ ๋ฌด์์ ๋๊น?
๋์์ ๋ณด๋ด๋ ค๋ ์๋ฒ์์ ๊ฐ์์๋ฅผ ๊ตฌ์ฑํ์ญ์์ค.
๋์์ ๋ด๊ฒฐํจ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์ ์ฌํ๊ฒ ๋ค๋ฅธ ๋ชจ๋ํฐ์์ ๋์์ ๊ตฌ์ฑํ๊ณ ๋ค์ค ๊ฒฝ๋ก๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค(vmware๋ ์ด๋ฅผ ์ดํดํ๊ณ ์ฌ์ง์ด ์๋ํ์ง๋ง Hyper-V๋ ์ดํดํ์ง ๋ชปํฉ๋๋ค. SCSI ์ ๊ธ์ด ํ์ํฉ๋๋ค). ์ปค๋์ Ceph ํด๋ผ์ด์ธํธ๋ ์บ์ฑ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ด๋ ์๋นํ ์คํ ๊ฐ๋ฅํฉ๋๋ค. ๋๋ ๋ ๋ค๋ฅธ ์ต์ ์ ์ ์ฉ ๋์ IP ์ฃผ์, rbdmap ๋ฐ scsi-target ์๋น์ค ๋ฑ ์ธ ๊ฐ์ง ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ํด๋ฌ์คํฐ๋ง ๋๊ตฌ๋ฅผ ํตํด ์ด ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋๋ค(ํ์ด์ค๋ฉ์ด์ปค๋ผ๊ณ ๋งํ ์ฌ๋์ ๋๊ตฌ์ ๋๊น?).
ํ์ผ ๋์
๋ถ๋ช ํ ์ ์ ์๋ฏ์ด ์ด ๊ธฐ์ฌ๋ ์ฝ๊ฐ ๋๋ด์ ๋๋ค. ํ์ง๋ง ์ด ๊ธฐ์ฌ์์๋ ๊ฝค ์ธ๊ธฐ ์๋ ๋ช ๊ฐ์ง ์ฃผ์ (๋ฐ๋์ Ceph ์ด๋ฏธ์ง๋ฅผ ๋ด๋ณด๋ผ ํ์๋ ์๋ iSCSI ๋์)๋ฅผ ๋์์ "๋น ๋ฅด๊ณ ์์๋ฅผ ํตํด" ๊ณ ๋ คํ๋ ค๊ณ ํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, LVM ๋ณผ๋ฅจ ๋ด๋ณด๋ด๊ธฐ, iSCSI ์ด๊ธฐ์ ์์ ์ ๊ธฐ๋ณธ ์ฌํญ(๋์ ์ค์บ ๋ฐฉ๋ฒ, ๋์์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ, ์ฐ๊ฒฐ ๋๊ธฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋์ ํญ๋ชฉ ์ญ์ ๋ฐฉ๋ฒ), systemd์ ๋ํ ์์ฒด ์ ๋ ์์ฑ ๋ฐ ๊ธฐํ ์ฌํญ
์ด ์ ์ฒด ์คํ์ ์์ ํ ๋ฐ๋ณตํ์ง ์๋๋ผ๋ ์ ์ด๋ ์ด ๊ธฐ์ฌ์ ๋ด์ฉ์ด ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ์ฒ : habr.com