неділю, 14 серпня 2011 р.

Іграшкова Lustre.

В попередньому пості описувалося, як розгорталася повноцінна Lustre-система. Однак іноді хочеться поекспериментувати не так монументально. Можливість для цього існує :-)
Lustre чудово працює на loopback-пристроях.

Опишемо як можна створити таку іграшкову (кишенькову)  "люстру". Додатково корисно подивитися "10.1 Configuring a Simple Lustre File System" (Lustre 2.0 Operations Manual) та "Configuring Lustre - Examples" (Lustre 1.8 Operations Manual). (Інструкції до 1.8 хоча і трохи застаріли для 2.0, однак часто більш зрозумілі чи детальні).

Будемо створювати Люстру із своїм MDS,  MDS, та двома OSS.


1.) Створюємо loopback-пристрої, активуємо їх.

- MGS

[node]# dd if=/dev/zero of=mgs_loopback bs=1M count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.429137 seconds, 489 MB/s

Створюється файл mgs_loopback, заповнюється нулями, що беруться з пристрою /dev/zero. Розмір файла 200 блоків (count=200) розміром 1Мб (bs=1M)
Зауваження  209715200 bytes (210 MB) це 200МебіБайт (1024*1024), а воно якраз рівне ~210Мб (1000*1000 байт)

[node]# losetup /dev/loop0 ./mgs_loopback

Активуємо його, тепер цей "віртуальний" блочний пристрій доступний як пристрій /dev/loop0.
 
- MDT

[node]# dd if=/dev/zero of=mdt_loopback bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 2.20904 seconds, 486 MB/s
Розмір 1Гб, "житиме" не пристрої /dev/loop1:

[node]# losetup /dev/loop1 ./mdt_loopback

- OST0, OST1

[node]# dd if=/dev/zero of=ost0_loopback bs=1G count=10
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 785.754 seconds, 13.7 MB/s

[node]# losetup /dev/loop2 ./ost0_loopback

[node]# dd if=/dev/zero of=ost1_loopback bs=1G count=10
10+0 records in
10+0 records out
10737418240 bytes (11 GB) copied, 2225.34 seconds, 4.8 MB/s 
[node]# losetup /dev/loop3 ./ost1_loopback

Розмір обох - 10Гб,
пристрої -- loop2 i loop3.

2.) Створюємо файлові системи lustre.

- MGS


[node]# mkdir /mnt/mgs 
 
[node]# mkfs.lustre --mgs /dev/loop0

   Permanent disk data:
Target:     MGS
Index:      unassigned
Lustre FS:  lustre
Mount type: ldiskfs
Flags:      0x74
              (MGS needs_index first_time update )
Persistent mount opts: iopen_nopriv,user_xattr,errors=remount-ro
Parameters:

checking for existing Lustre data: not found
device size = 200MB
formatting backing filesystem ldiskfs on /dev/loop0
        target name  MGS
        4k blocks     51200
        options        -q -O dir_index,uninit_bg -F
mkfs_cmd = mke2fs -j -b 4096 -L MGS  -q -O dir_index,uninit_bg -F /dev/loop0 51200
Writing CONFIGS/mountdata
  
[node]# mount -t lustre /dev/loop0 /mnt/mgs

MGS готовий до роботи.

- MDS

[node]# mkdir /mnt/mdt
[node]# mkfs.lustre --mdt --mgsnode=<node-ip>@tcp0 --fsname=lustre9 /dev/loop1

   Permanent disk data:
Target:     lustre9-MDTffff
Index:      unassigned
Lustre FS:  lustre9
Mount type: ldiskfs
Flags:      0x71
              (MDT needs_index first_time update )
Persistent mount opts: iopen_nopriv,user_xattr,errors=remount-ro
Parameters: mgsnode=<node-ip>@tcp

checking for existing Lustre data: not found
device size = 1024MB
formatting backing filesystem ldiskfs on /dev/loop1
        target name  lustre9-MDTffff
        4k blocks     262144
        options        -i 4096 -I 512 -q -O dir_index,dirdata,uninit_bg -F
mkfs_cmd = mke2fs -j -b 4096 -L lustre9-MDTffff  -i 4096 -I 512 -q -O dir_index,dirdata,uninit_bg -F /dev/loop1 262144
Writing CONFIGS/mountdata
[root@compute-0-14 partition1]# mount -t lustre /dev/loop1 /mnt/mdt

Де, нагадуємо, node-ip -- IP-адреса вузла з MGS, використання hostname можливе, але не бажане.

Після успішного монтування MDS файлову систему lustre9 можна вважати такою, що існує та почати додавати до неї OSS-и.

- OSS0, OSS1

[node]# mkdir /mnt/ost0
[node]# mkfs.lustre --ost --mgsnode=<node-ip>@tcp0 --fsname=lustre9 --param failover.mode=failout /dev/loop2

   Permanent disk data:
Target:     lustre9-OSTffff
Index:      unassigned
Lustre FS:  lustre9
Mount type: ldiskfs
Flags:      0x72
              (OST needs_index first_time update )
Persistent mount opts: errors=remount-ro,extents,mballoc
Parameters: mgsnode=<node-ip>@tcp failover.mode=failout

checking for existing Lustre data: not found
device size = 10240MB
formatting backing filesystem ldiskfs on /dev/loop2
        target name  lustre9-OSTffff
        4k blocks     2621440
        options        -J size=400 -I 256 -q -O dir_index,extents,uninit_bg -F
mkfs_cmd = mke2fs -j -b 4096 -L lustre9-OSTffff  -J size=400 -I 256 -q -O dir_index,extents,uninit_bg -F /dev/loop2 2621440
Writing CONFIGS/mountdata
[node]# mount -t lustre /dev/loop2 /mnt/ost0 
 
 
[node]# mkdir /mnt/ost1
[node]# mkfs.lustre --ost --mgsnode=<node-ip>@tcp0 --fsname=lustre9 --param failover.mode=failout /dev/loop3

   Permanent disk data:
Target:     lustre9-OSTffff
Index:      unassigned
Lustre FS:  lustre9
Mount type: ldiskfs
Flags:      0x72
              (OST needs_index first_time update )
Persistent mount opts: errors=remount-ro,extents,mballoc
Parameters: mgsnode=<node-ip>@tcp failover.mode=failout

checking for existing Lustre data: not found
device size = 10240MB
formatting backing filesystem ldiskfs on /dev/loop3
        target name  lustre9-OSTffff
        4k blocks     2621440
        options        -J size=400 -I 256 -q -O dir_index,extents,uninit_bg -F
mkfs_cmd = mke2fs -j -b 4096 -L lustre9-OSTffff  -J size=400 -I 256 -q -O dir_index,extents,uninit_bg -F /dev/loop3 2621440
Writing CONFIGS/mountdata
[node]# mount -t lustre /dev/loop3 /mnt/ost1
 

- Клієнти
 
Монтуємо побудовану нами "люстру":

[node]# mount -t lustre <node-ip>@tcp0:/lustre9 /mnt/lustre9/
[node]# df -h
Filesystem            Size  Used Avail Use% Mounted on
*skipped*
/dev/loop0            194M   17M  168M   9% /mnt/mgs
/dev/loop1            896M   34M  812M   4% /mnt/mdt
/dev/loop2            9.9G  423M  9.0G   5% /mnt/ost0
/dev/loop3            9.9G  423M  9.0G   5% /mnt/ost1
@tcp0:/lustre9
                       20G  846M   18G   5% /mnt/lustre9

Все, кишенькова Lustre готова до вживання.

Деяку інформацію про неї можна отримати за допомогою команди lfs df

[node]# lfs df
UUID                   1K-blocks        Used   Available Use% Mounted on
lustre9-MDT0000_UUID      917400       34180      830792   3% /mnt/lustre9[MDT:0]
lustre9-OST0000_UUID    10321208      432804     9364052   4% /mnt/lustre9[OST:0]
lustre9-OST0001_UUID    10321208      432804     9364052   4% /mnt/lustre9[OST:1]

filesystem summary:     20642416      865608    18728104   4% /mnt/lustre9

Бажаю успішних та веселих експериментів :-)

Немає коментарів:

Дописати коментар